스킬 개요
적용 대상: SDK v4
스킬 봇을 사용하여 봇을 확장할 수 있습니다. 다양한 다른 봇에서 기술을 사용하여 재사용을 용이하게 할 수 있으며, 이러한 방식으로 사용자 연결 봇을 만들고 사용자 고유 또는 타사 기술을 사용하여 확장할 수 있습니다.
- 기술은 다른 봇에 대한 작업 집합을 수행할 수 있는 봇입니다. 봇은 기술과 사용자 연결 봇이 될 수 있습니다.
- 기술 소비자는 하나 이상의 기술을 호출할 수 있는 봇입니다. 사용자 지향 기술 소비자를 루트 봇이라고도 합니다.
- 기술 매니페스트는 기술이 수행할 수 있는 작업, 입력 및 출력 매개 변수 및 기술의 엔드포인트를 설명하는 JSON 파일입니다.
- 기술의 소스 코드에 액세스할 수 없는 개발자는 매니페스트의 정보를 사용하여 기술 소비자를 디자인할 수 있습니다.
- 기술 매니페스트 스키마는 기술 매니페스트의 스키마를 설명하는 JSON 파일입니다.
- 기술을 구현하는 방법과 샘플 기술 매니페스트에 대한 기술 매니페스트 를 작성하는 방법을 참조하세요.
다시 말해, 사용자는 루트 봇과 직접 상호 작용하고, 루트 봇은 대화형 논리 중 일부를 기술에 위임합니다.
기술 기능은 다음을 수행하도록 설계되었습니다.
- 기술과 소비자는 Bot Framework 프로토콜을 사용하여 HTTP를 통해 통신합니다.
- 기술 소비자는 여러 기술을 사용할 수 있습니다.
- 기술 소비자는 기술을 구현하는 데 사용되는 언어에 관계없이 기술을 사용할 수 있습니다. 예를 들어 C# 봇은 JavaScript를 사용하여 구현된 기술을 사용할 수 있습니다.
- 기술은 기술 소비자일 수도 있고 다른 기술을 호출할 수도 있습니다.
- 기술 지원 사용자 인증; 그러나 사용자 인증은 기술에 로컬이며 다른 봇으로 전송할 수 없습니다.
- 기술은 Bot Framework 어댑터와 사용자 지정 어댑터 모두에서 작동할 수 있습니다.
이 다이어그램은 몇 가지 가능한 순열을 보여 줍니다.
개념 아키텍처
기술과 기술 소비자는 별도의 봇이며, 독립적으로 게시됩니다.
- 기술 소비자는 기술을 호출하거나 취소하는 경우 등과 같은 기술을 관리하기 위한 추가 논리가 필요합니다. 소비자는 일반적인 봇 및 어댑터 개체 외에도 기술과 활동을 교환하는 데 사용되는 몇 가지 기술 관련 개체를 포함합니다. 기술 소비자는 다음 두 개 이상의 HTTP 엔드포인트를 구현합니다.
- 메시징 엔드포인트는 사용자 또는 채널에서 활동을 수신합니다. 이는 모든 봇이 구현하는 일반적인 메시징 엔드포인트입니다.
- 기술로부터 활동을 수신하기 위한 기술 호스트 엔드포인트입니다. 이는 기술이 회신하는 서비스 URL인 콜백 URL로 작동합니다. (기술 소비자는 기술에서 HTTP 메서드 요청을 수신하는 코드를 기술 처리기와 페어링해야 합니다.)
- 기술을 사용하려면 작업이 완료될 때 활동을 보내는
endOfConversation
추가 논리가 필요하므로 기술 소비자는 작업 전달을 중지해야 하는 시기를 알 수 있습니다.
이 다이어그램에서는 사용자에서 루트 봇으로의 활동 흐름을 기술로 간략하게 설명합니다.
- 루트 봇의 어댑터는 사용자로부터 활동을 수신하고 루트 봇의 활동 처리기로 전달합니다. (사용자의 활동은 루트 봇의 메시징 엔드포인트에서 수신됩니다.)
- 루트 봇은 기술 HTTP 클라이언트를 사용하여 기술에 활동을 보냅니다. 클라이언트는 기술 정의 및 기술 대화 ID 팩터리에서 소비자 기술 대화 정보를 가져옵니다. 여기에는 기술이 활동에 회신하는 데 사용할 서비스 URL이 포함됩니다.
- 기술의 어댑터는 기술 소비자로부터 활동을 수신하고 기술의 활동 처리기에 전달합니다. (소비자의 활동은 기술 봇의 메시징 엔드포인트에서 수신됩니다.)
- 기술이 응답하면 루트 봇의 기술 처리기에서 활동을 받습니다. 기술 대화 ID 팩터리에서 루트 사용자 대화 정보를 가져옵니다. 그런 다음, 작업을 루트 봇의 어댑터로 전달합니다. (기술의 활동은 루트 봇의 기술 호스트 엔드포인트에서 수신됩니다.)
- 루트 봇의 어댑터는 내부적으로 사용자와의 대화를 다시 시작하는 사전 메시지를 생성합니다.
- 루트 봇의 어댑터는 모든 메시지를 기술에서 사용자에게 보냅니다.
이러한 개체는 기술을 관리하고 기술 트래픽을 라우팅하는 데 도움이 됩니다.
- Bot Framework 기술은 기술에 대한 라우팅 정보를 설명하고 기술 소비자의 구성 파일에서 읽을 수 있습니다.
- 기술 HTTP 클라이언트는 활동을 기술로 보냅니다.
- 기술 처리기는 활동을 기술로부터 받습니다.
- 기술 대화 ID 팩터리는 사용자-루트 대화 참조와 루트-기술 대화 참조 사이를 변환합니다.
- Bot Connector 서비스는 채널 및 봇-봇 인증을 모두 제공합니다. 인증 구성 개체를 사용하여 기술 또는 기술 소비자에 클레임 유효성 검사를 추가하여 액세스 권한이 있는 애플리케이션 또는 사용자를 제한할 수 있습니다.
기술 클라이언트와 기술 처리기 개체는 모두 대화 ID 팩터리를 사용하여 루트 봇이 사용자와 상호 작용하는 데 사용하는 대화와 루트 봇이 기술과 상호 작용하는 데 사용하는 대화 간에 변환합니다.
기술 매니페스트
기술 매니페스트는 기술이 수행할 수 있는 작업, 입력 및 출력 매개 변수, 기술의 엔드포인트 및 기술에 대한 디스패치 모델을 설명하는 JSON 파일입니다.
기술 매니페스트 스키마에 대한 자세한 내용은 기술 매니페스트를 작성하는 방법을 참조하세요.
봇-봇 통신
디자인하는 봇과 관계없이 이 디자인의 특정 측면을 이해하는 것이 중요합니다.
기술 작업
일부 기술은 여러 작업 또는 작업을 수행할 수 있습니다. 예를 들어 할 일 기술을 사용하면 개별 대화로 액세스할 수 있는 활동을 만들고, 업데이트하고, 보고, 삭제할 수 있습니다.
- 하나의 작업을 구현하는 간단한 기술에 대한 기술을 구현하는 방법을 참조하세요.
- 대화 상자를 사용하여 여러 작업을 구현하는 기술에 대해 기술 내에서 대화 상자를 사용하는 방법을 알아보세요.
대화 참조
사용자-루트 대화는 루트-기술 대화와 다릅니다.
대화 ID 팩터리는 기술 소비자와 기술 간의 트래픽을 관리하는 데 도움이 됩니다. 팩터리는 루트가 사용자와 가진 대화의 ID와 기술과 함께 있는 대화 ID 간에 변환됩니다. 즉, 루트와 기술 간에 사용할 대화 ID를 생성하고, 루트-기술 대화 ID에서 원본 사용자-루트 대화 ID를 복구합니다.
서버 간 조정
루트 및 기술 봇은 HTTP를 통해 통신합니다. 따라서 기술로부터 활동을 받는 루트 봇의 인스턴스는 시작 활동을 보낸 인스턴스와 다를 수 있습니다. 즉, 다른 서버에서 이러한 두 요청을 처리할 수 있습니다.
- 작업을 기술에 전달하기 전에 항상 기술 소비자의 상태를 저장합니다. 이렇게 하면 기술에서 트래픽을 수신하는 인스턴스가 이전 인스턴스가 기술을 호출하기 전에 중단된 위치를 선택할 수 있습니다.
- 기술 처리기가 기술로부터 활동을 받으면 기술 소비자에게 적합한 형식으로 변환하고 소비자의 어댑터에 전달합니다.
기술 소비자 및 기술 상태
기술 소비자와 기술은 자신의 상태를 별도로 관리합니다. 그러나 소비자는 기술과 통신하는 데 사용하는 대화 ID를 만듭니다. 이는 기술의 대화 상태에 영향을 줄 수 있습니다.
Important
앞서 설명한 것처럼 기술 소비자가 사용자 활동을 기술에 위임하면 다른 소비자 인스턴스가 기술 응답을 받을 수 있습니다. 소비자는 활동을 기술에 전달하기 직전에 항상 대화 상태를 저장해야 합니다.
봇-봇 인증
Bot Framework Emulator에서 로컬로 기술 및 기술 소비자를 테스트하기 위해 앱 ID와 암호가 필요하지 않습니다. Azure에 기술을 배포하려면 여전히 Azure 구독이 필요합니다.
서비스 수준 인증은 Bot Connector 서비스에서 관리됩니다. 프레임워크는 전달자 토큰 및 봇 애플리케이션 ID를 사용하여 각 봇의 ID를 확인합니다. (Bot Framework는 인증 구성 개체를 사용하여 들어오는 요청에서 인증 헤더의 유효성을 검사합니다.)
Important
이렇게 하려면 배포된 모든 봇(기술 소비자 및 사용하는 모든 기술)에 유효한 애플리케이션 자격 증명이 있어야 합니다.
클레임 유효성 검사
인증 구성에 클레임 유효성 검사기를 추가해야 합니다. 클레임은 인증 헤더 후에 평가됩니다. 유효성 검사 코드에서 오류 또는 예외를 throw하여 요청을 거부합니다.
참고 항목
봇은 앱 ID 및 암호가 있는 경우 클레임 유효성 검사를 수행합니다. 그렇지 않으면 클레임 유효성 검사가 수행되지 않습니다.
그렇지 않으면 인증된 요청을 거부할 수 있는 여러 가지 이유가 있습니다.
- 기술 소비자가 대화를 시작한 기술에서만 트래픽을 수락해야 하는 경우
- 기술이 유료 서비스의 일부이고 데이터베이스에 없는 사용자는 액세스 권한이 없어야 합니다.
- 특정 기술 소비자에게 기술에 대한 액세스를 제한하려는 경우.
Important
클레임 유효성 검사기를 제공하지 않으면 봇이 기술인지 기술 소비자인지 여부에 관계없이 다른 봇으로부터 활동을 받으면 오류 또는 예외가 생성됩니다.
기술 대화 디버깅
기술과 기술 소비자 간의 트래픽이 인증되므로 이러한 봇을 디버깅할 때 추가 단계가 있습니다.
- 기술 소비자와 직접 또는 간접적으로 사용하는 모든 기술을 실행해야 합니다.
- 봇이 로컬로 실행되고 앱 ID와 암호가 있는 봇이 있는 경우 모든 봇에는 유효한 ID와 암호가 있어야 합니다.
- 봇이 모두 배포된 경우 devtunnel을 사용하여 채널에서 봇을 디버그하는 방법을 참조하세요.
- 일부 봇이 로컬로 실행되고 일부 봇이 배포된 경우 기술 또는 기술 소비자를 디버그하는 방법을 알아보세요.
그렇지 않으면 다른 봇을 디버그하는 것처럼 기술 소비자 또는 기술을 디버그할 수 있습니다. 자세한 내용은 Bot Framework Emulator를 사용하여 봇 디버깅 및 디버그를 참조하세요.
추가 정보
사용자의 관점에서 루트 봇과 상호 작용합니다. 기술의 관점에서 기술 소비자는 사용자와 통신하는 채널입니다.
- 기술 소비자에 대한 자세한 내용은 기술 소비자에 대해 참조 하세요.