기술 소비자 정보About skill consumers

적용 대상: SDK v4APPLIES TO: SDK v4

기술 소비자 는 하나 이상의 기술을 호출할 수 있는 봇입니다.A skill consumer is a bot that can call one or more skills. 기술과 관련하여 루트 봇 은 기술 소비자이기도 한 사용자 지향 봇입니다.With respect to skills, a root bot is a user-facing bot that is also a skill consumer.

사용자의 관점에서, 루트 봇은 그들이 상호 작용하는 봇입니다.From the user's perspective, the root bot is the bot they are interacting with. 기술의 관점에서 기술 소비자는 사용자와 통신하는 채널입니다.From the skill's perspective, the skill consumer is the channel over which it communicates with the user. (자세한 내용은 기술 개요기술 봇 정보를 참조하세요.)(For more information, see the skills overview and about skill bots.)

기술 소비자인 루트 봇에는 자체와 기술 간의 트래픽을 관리하기 위한 다음 몇 가지 추가 논리가 포함됩니다.As a skill consumer, a root bot includes some additional logic to manage traffic between it and a skill:

  • 각 기술에 대한 구성 정보 - 루트에서 사용합니다.Configuration information for each skill the root uses.
  • 대화 ID 팩터리 - 루트에서 사용자와의 대화 및 기술과의 대화 사이를 전환할 수 있도록 합니다.A conversation ID factory that allows the root to switch back and forth between the conversation it is having with the user and the one it is having with a skill.
  • 기술 클라이언트 - 활동을 패키지하여 기술 봇으로 전달할 수 있습니다.A skill client that can package and forward activities to a skill bot.
  • 기술 처리기 - 기술 봇으로부터 요청을 받고 패키지된 활동을 풀 수 있습니다.A skill handler that can receive requests and unpack activities from a skill bot.

기술 관리Managing skills

단일 기술 실행을 시작하고 완료하도록 하는 것은 몇 가지 기능을 기술 소비자에게 추가하여 관리합니다.Starting and letting a single skill run to completion is managed with a few additions to the skill consumer. 여러 기술 또는 대화 스레드를 사용하여 더 복잡한 시나리오가 가능합니다.More complex scenarios are possible, with multiple skills or conversation threads.

기술 소비자는 적어도 두 개의 HTTP 끝점을 구현 합니다.A skill consumer implements at least two HTTP endpoints:

  • 메시징 끝점 은 사용자 또는 채널에서 작업을 받습니다.A messaging endpoint receives activities from the user or channel. 모든 bot에서 구현 하는 일반적인 메시징 끝점입니다.This is the usual messaging endpoint that all bots implement.
  • 기술에서 활동을 받기 위한 기술 호스트 끝점 입니다.A skill host endpoint for receiving activities from a skill. 이는 기술에서 응답 하는 서비스 URL 인 콜백 URL로 작동 합니다.This acts as a callback URL, the service URL to which the skill replies. (기술 소비자는 기술 처리기를 사용 하 여 기술에서 HTTP 메서드 요청을 받는 코드를 쌍으로 처리 해야 합니다.)(The skill consumer needs to pair code that receives the HTTP method request from the skill with a skill handler.)

기술 설명Skill descriptions

각 기술에 대한 Bot Framework 기술 개체를 기술 소비자의 구성 파일에 추가합니다.For each skill, add a Bot Framework skill object to the skill consumer's configuration file. 각 개체에는 기술에 대한 ID, 앱 ID 및 엔드포인트가 있습니다.Each one will have an ID, an app ID, and an endpoint for the skill.

속성Property DescriptionDescription
IDID 기술 소비자 특정의 기술 ID 또는 키입니다.The ID or key of the skill, specific to the skill consumer.
앱 IDApp ID 기술이 Azure에 등록될 때 봇 리소스에 할당된 appId입니다.The appId assigned to the bot resource when the skill was registered on Azure.
기술 엔드포인트Skill endpoint 기술에 대한 메시징 엔드포인트입니다.The messaging endpoint for the skill. 소비자에서 기술과 통신하는 데 사용할 URL입니다.This is the URL the consumer will use to communicate with the skill.

기술 클라이언트 및 기술 처리기Skill client and skill handler

기술 소비자는 기술 클라이언트를 사용하여 활동을 기술에 보냅니다.The skill consumer uses a skill client to send activities to a skill. 클라이언트는 다음을 수행합니다.The client:

  • 사용자로부터 또는 소비자가 생성한 기술에 보내는 활동을 수행합니다.Takes an activity to send to the skill, either from a user or generated by the consumer.
  • 기술에 전송 된 활동에 대 한 서비스 URL을 소비자의 기술 호스트 끝점으로 설정 합니다.Sets the service URL on the activity sent to the skill to the consumer's skill host endpoint.
  • 원본 대화 참조를 소비자-기술 대화 참조로 바꿉니다.Replaces the original conversation reference with one for the consumer-skill conversation.
  • 봇-봇 인증 토큰을 추가합니다.Adds a bot-to-bot authentication token.
  • 업데이트된 활동을 기술에 보냅니다.Sends the updated activity to the skill.

기술 소비자는 기술 처리기를 사용하여 기술로부터 활동을 받습니다.The skill consumer uses a skill handler to receive activities from a skill. 처리기는 다음을 수행합니다.The handler:

  • 채널 서비스 REST API 메서드를 처리합니다.Handles the channel service REST API methods.
  • 인증 및 클레임 유효성 검사를 적용합니다.Enforces authentication and claims validation.
  • 원본 대화 참조를 검색합니다.Retrieves the original conversation reference.
  • 소비자의 어댑터에 대한 활동을 생성합니다.Generates an activity for the consumer's adapter. 이 활동은 기술이 완료되었거나 사용자에게 전달할 활동이라는 신호를 보냅니다.This activity will either signal that the skill has completed or be an activity to forward to the user.

직접 기술 관리Manage a skill directly

활성 기술을 추적하기 위한 논리를 기술 소비자에 추가해야 합니다.You need to add logic to your skill consumer to track any active skills. 여러 활성 기술을 병행하여 유지 관리할 수 있는지의 여부 등과 관계없이 기술을 일반적으로 관리하는 방법은 소비자에게 달려 있습니다.It is up to the consumer as to how it manages skills in general, whether it can maintain multiple active skills in parallel or not, and so on. 고려해야 할 특정 시나리오는 다음과 같습니다.Specific scenarios to consider include:

  • 새 소비자-기술 대화를 시작합니다.Initiating a new consumer-skill conversation. (이는 특정 소비자-사용자 대화와 관련이 있습니다.)(This will be associated with a specific consumer-user conversation.)
    • 매개 변수를 기술에 전달하기 위해 초기 활동의 value 속성을 기술로 설정합니다.To pass parameters to a skill, set the value property in the initial activity to the skill.
  • 기존 소비자-기술 대화를 계속합니다.Continuing an existing consumer-skill conversation.
  • 기술의 endOfConversation 활동을 소비자-기술 대화의 종료 신호로 인식합니다.Recognizing an endOfConversation activity from the skill as signalling an end of a consumer-skill conversation.
    • 기술의 반환 값을 검색하기 위해 활동의 value 속성을 확인합니다.To retrieve any return value from a skill, check the activity's value property.
    • 기술이 종료되는 이유를 확인하기 위해 활동의 code 매개 변수를 확인합니다. 이 매개 변수는 기술에 오류가 발생했음을 나타낼 수 있습니다.To check why the skill is ending, check the activity's code parameter, which could indicate that the skill encountered an error.
  • endOfConversation 활동을 기술에 보내서 소비자의 기술을 취소합니다.Cancelling a skill from the consumer by sending an endOfConversation activity to the skill.

기술을 직접 관리하는 소비자에 대해 기술 소비자를 구현하는 방법을 참조하세요.See how to implement a skill consumer for a consumer that manages a skill directly.

기술 대화 상자를 사용하여 기술 관리Manage a skill using a skill dialog

대화 라이브러리를 사용하는 경우 기술 대화 를 사용하여 기술을 관리할 수 있습니다.If you are using the dialogs library, you can use a skill dialog to manage a skill. 기술 대화는 활성 대화이지만 활동을 연결된 기술에 전달합니다.While the skill dialog is the active dialog, it will forward activities to the associated skill.

  • 기술 대화를 만들 때 대화 옵션 매개 변수를 사용하여 대화에서 기술을 관리하는 데 필요한 모든 정보(예: 소비자의 앱 ID 및 콜백 URL, 사용할 대화 ID 팩터리, 기술 속성 등)를 제공합니다.When you create the skill dialog, use the dialog options parameter to provide all the information the dialog needs to manage the skill, such as the consumer's app ID and callback URL, the conversation ID factory to use, the skill's properties, and so on.
    • 둘 이상의 기술을 대화로 관리하려면 각 기술에 대해 별도의 기술 대화를 만들어야 합니다.If you want to manage more than one skill as a dialog, you will need to create a separate skill dialog for each skill.
    • 기술 대화를 구성 요소 대화에 추가하는 경우가 많습니다.Often, you will add the skill dialog to a component dialog.
  • 기술 대화를 시작하려면 대화 컨텍스트의 begin 메서드를 사용하고 기술 대화의 ID를 제공합니다.To start the skill dialog, use the dialog context's begin method and provide the skill dialog's ID. 소비자가 기술의 첫 번째 활동으로 보낼 활동을 제공하려면 options 매개 변수를 사용합니다.Use the options parameter to provide the activity the consumer will send as the first activity to the skill.
  • 다른 대화와 마찬가지로 기술 대화를 취소하거나 중단할 수 있습니다.You can cancel or interrupt the skill dialog as you would any other dialog. 예제는 사용자 중단을 처리하는 방법을 참조하세요.See how to handle user interruptions for an example.

대화 상자를 사용하여 기술을 관리하는 소비자에 대해 대화 상자를 사용하여 기술을 사용하는 방법을 참조하세요.See how to use a dialog to consume a skill for a consumer that uses a dialog to manage a skill.

배달 모드를 사용 하 여 회신Using a delivery mode of expect replies

봇과 기술은 통신에 HTTPS를 통해 업계 표준 REST 및 JSON을 사용 합니다.Bots and skills use industry-standard REST and JSON over HTTPS for communication. 일반 활동 처리 흐름은 루트 봇이 해당 메시징 끝점 의 채널에서 게시물을 받을 때 시작 됩니다.Normal activity processing flow starts when the root bot receives a post from a channel at the its messaging endpoint. 그런 다음 루트 봇에서 작업을 처리를 위한 기술로 보냅니다.The root bot then sends the activity on to the skill for processing. 기술 으로부터의 답은 메시지 끝점이 아니라 루트 봇의 기술 호스트 끝점 에 다시 게시 됩니다.Replies from the skill are posted back to the root bot's skill host endpoint, not the its messaging endpoint. 마지막으로, 회신이 추가로 처리 되거나 루트 봇에 의해 채널에 다시 게시 됩니다.Finally, the replies are processed further or posted back to the channel by the root bot. 이 일반 흐름은 기술에 전송 된 활동의 배달 모드 를 변경 하 여 변경할 수 있습니다.This normal flow can be altered by changing the delivery mode of the activity sent to the skill. 배달 모드가 "ExpectReplies"로 설정 된 경우 기술은 기술 호스트 끝점에 다시 게시 되지 않습니다.If delivery mode is set to "ExpectReplies", the skill will not post back to the skill host endpoint. 대신 모든 회신 활동이 응답의 본문으로 serialize 됩니다.Instead, all reply activities are serialized into the body of the response. 그런 다음 루트 봇은 이러한 활동을 반복 하 여 기술 호스트 끝점에서 처리 하는 방식과 유사 하 게 처리 합니다.The root bot then iterates over these activities, processing them similar to how they would have been processed by the skill host endpoint.

자세한 내용은 활동 사양의 배달 모드 를 참조 하세요.For information, see the Delivery mode in the Activity specification.