Copilot Studio는 메시지가 아닌 활동에 사용할 수 있는 노드 집합( 이벤트 활동 노드, 호출 활동 노드 및 활동 프로토콜이 지원하는 기타 활동 관련 노드) 을 제공합니다.
활동 프로토콜은 무엇입니까?
활동 프로토콜은 Copilot Studio의 핵심 전송 개념입니다. 활동 프로토콜은 사용자와 에이전트 간의 원활한 통신을 허용합니다. 모든 상호 작용에 대해 표준화된 구조를 정의하여 다양한 활동 유형으로 분류합니다.
이벤트 활동 및 메시지 활동은 각각 통신 워크플로에서 고유한 목적을 제공하는 활동 프로토콜 내의 두 가지 고유 형식입니다.
메시지 활동은 주로 텍스트, 미디어 또는 적응형 카드 콘텐츠를 전달하는 사용자와 에이전트 간의 기본 통신 단위를 나타냅니다. 사용자가 쿼리 또는 문을 만들고 에이전트가 그에 따라 응답하는 직접 상호 작용을 위해 설계되었습니다.
반면 이벤트 활동은 일반적으로 비언어적 작업 또는 시스템 생성 업데이트를 나타내는 데 사용됩니다. 이를 통해 비동기 통신이 가능하여 직접적인 사용자 상호 작용 없이 특정 기능이나 워크플로를 트리거할 수 있습니다. 예를 들어, 이벤트 활동은 대화에 참여하는 사용자나 주변 컨텍스트의 변경 사항에 대해 에이전트에게 알릴 수 있습니다.
이벤트 발송
이벤트 활동 노드는 이벤트 활동을 보내기 위해 설계되었습니다. 이벤트 활동은 에이전트에서 전송되며 활동 사용 여부와 방법을 결정하는 채널에서 가로채서 사용할 수 있습니다. 이벤트를 보낼 때 이름을 지정한 다음 이벤트에 대한 값을 설정할 수 있습니다. 이 값은 어떤 형식이든 가능합니다.
- 기본 리터럴 값
- 변수 참조
- Power Fx 수식.
값은 JSON 리터럴로 직렬화되고 나가는 활동에 추가됩니다.
이 노드의 용도는 다음과 같습니다.
- 에이전트에서 보낸 이벤트를 처리하도록 사용자 지정 웹 채팅 컨트롤을 구성합니다. 예를 들어 에이전트에서 돌아오는 이벤트를 찾아 페이지에서 작업을 수행할 수 있습니다.
GitHub에서 Microsoft Bot Framework 웹 채팅 샘플 리포지토리에 있는
04.api/c.incoming-activity-event샘플은 이벤트 처리가 작동하는 방식을 보여줍니다. - 이벤트 활동을 사용하여 AudioCodes 녹음/녹화 서비스를 제어합니다(예: 통화 녹음/녹화 시작 또는 중지). 자세한 내용은 통화 녹음을 참조하세요.
클라이언트 도구 사용
오케스트레이션 중에는 언어 모델에 도구 집합을 제공합니다. 대부분의 사람들은 도구를 외부 시스템에 호출하는 것으로 생각합니다.
그러나 이벤트 활동을 사용하여 클라이언트에서 도구를 실행할 수도 있습니다.
오케스트레이터가 클라이언트 도구를 실행하기로 결정하면 에이전트는 도구에 정의된 입력을 포함하여 이벤트 활동을 클라이언트에 보냅니다.
에이전트는 활동을 보낸 다음 클라이언트가 작업을 수행하고 결과를 반환할 때까지 기다립니다. 클라이언트가 완료되면 에이전트에 대한 응답을 포함하는 이벤트 활동을 보냅니다. 에이전트는 이 응답을 도구 응답으로 사용하고 오케스트레이션을 계속합니다.
클라이언트 도구에 대한 샘플 페이로드
PowerPoint 슬라이드에서 텍스트를 검색하는 클라이언트 도구가 있다고 가정해 보겠습니다.
입력은 페이지 번호이고 출력은 슬라이드의 텍스트입니다.
에이전트는 다음과 같은 페이로드를 보낼 수 있습니다.
{
"type": "event",
"timestamp": 1738709828,
"from": {
"id": "d9c0dcf9-4045-8062-535b-73fb4dfee954",
"role": 0
},
"name": "getSlideContent",
"replyToId": "f617c120-7b36-496a-a096-ac692efdad04",
"value": {
"page": 5
}
}
작업이 완료되면 클라이언트는 에이전트에 다음과 같은 페이로드를 보냅니다.
{
"type": "event",
"timestamp": 1738709828,
"name": "getSlideContent",
"replyToId": "f617c120-7b36-496a-a096-ac692efdad04",
"value": {
"content": "QA slide. Next steps"
}
}
클라이언트 도구 설정
클라이언트 도구를 등록하는 방법에는 두 가지가 있습니다.
에이전트 토픽 콘텐츠의 일부로 코드 편집기를 사용하여 에이전트에 전용 클라이언트 작업을 등록할 수 있습니다.
예:
description: this tool retrieves the content of a powerpoint slide
schemaName: GetSlideContent
dialog:
kind: TaskDialog
action:
kind: InvokeClientTaskAction
clientActionInputSchema:
kind: Record
properties:
page:
displayName: Page Number
description: The number of the slide
isRequired: true
type: Number
clientActionResponseSchema:
kind: Record
properties:
content:
displayName: Slide Content
description: The content of the slide
type: String
경우에 따라 사용 가능한 도구는 호스팅 클라이언트의 컨텍스트에 따라 동적입니다. 더 많은 유연성을 허용하기 위해 제작자는 시스템 변수를 설정하여 이 세션에 사용할 수 있는 다른 클라이언트 도구를 동적으로 설정할 수 있습니다.
- kind: SetVariable
id: setVariable_76NZWK
variable: System.ClientPluginActions
value: |-
=[
{
Description: "this tool retrieves the content of a powerpoint slide",
Identifier: "GetSlideContent",
Name: "GetSlideContent",
Response: {mode: "Generated"},
Inputs: [
{
Description: "The name of the menu for the form to launch",
IsAutomatic: true,
IsRequired: true,
Name: "Page Number",
PropertyName: "page",
Type: {
'$kind': "Number"
}
}
],
Outputs: [
{
Description: "The content of the slide",
Name: "Slide Content",
PropertyName: "content",
Type: {
'$kind': "String"
}
}
]
}
]
다른 활동 유형 보내기
이벤트 활동 외에도 호출 활동 노드를 사용하여 다른 유형의 활동을 보낼 수 있습니다. 보낼 수 있는 활동 유형은 Bot Framework 스키마 - ActivityTypes 클래스에서 제공되는 유형의 하위 집합입니다. 이 노드를 사용할 때 활동 유형을 선택한 다음 선택적으로 이름이나 값을 설정합니다.
일반적인 유형은 다음과 같습니다.
- 입력은 채널이 선택하여 클라이언트에 입력 표시기를 표시할 수 있는 입력 활동을 보냅니다.
- 호출 및 호출 응답 은 Microsoft Teams에 사용됩니다. Teams에서 들어오는 호출을 가로채기 위해 호출 트리거가 있는 토픽을 만들고, 호출 응답 활동 노드를 사용하여 적절한 응답을 Teams로 다시 보냅니다.
- 핸드오프는 값을 명시적으로 제어할 수 있는 핸드오프 활동을 보냅니다. 핸드오프는 AudioCodes와 같은 외부 채널에 사용됩니다.