Bot Framework의 ID 필드

적용 대상: SDK v4

이 가이드에서는 Bot Framework의 ID 필드 특성을 설명합니다.

채널 ID

모든 Bot Framework 채널은 고유 ID로 식별됩니다.

예: "channelId": "slack"

채널 ID는 다른 ID의 네임스페이스 역할을 합니다. Bot Framework 프로토콜에서의 런타임 호출은 채널 컨텍스트 안에서 발생해야 합니다. 채널은 통신 중에 사용되는 계정 ID와 대화에 의미를 부여합니다.

규칙에 따라 모든 채널 ID는 소문자입니다. 채널은 내보내는 채널 ID에 일관된 대/소문자를 포함하도록 보장하므로 봇은 서수 비교를 사용하여 동등성을 설정할 수 있습니다.

채널 ID에 대한 규칙

  • 채널 ID는 대/소문자를 구분합니다.

봇 핸들

Azure AI Bot Service에 등록된 모든 봇에는 봇 핸들이 있습니다.

예: FooBot

봇 핸들은 온라인 Azure AI Bot Service에 대한 봇의 등록을 나타냅니다. 이 등록은 HTTP 웹후크 엔드포인트 및 채널 등록과 연결됩니다.

Azure AI Bot Service는 봇 핸들의 고유성을 보장합니다. Azure Portal은 대/소문자를 구분하지 않는 고유성 검사 수행합니다(즉, 봇 핸들의 대/소문자 변형은 단일 핸들로 처리됨). 이는 Azure Portal의 특징이며 봇이 자체적으로 처리할 필요는 없습니다.

봇 핸들에 대한 규칙

  • 봇 핸들은 Bot Framework 내에서 고유(대/소문자를 구분하지 않습니다)입니다.

앱 ID

Azure AI Bot Service에 등록된 모든 봇에는 앱 ID가 있습니다.

참고 항목

이전에는 일반적으로 앱을 "MSA 앱" 또는 "MSA/AAD 앱"이라고 했습니다. 이제 앱은 더 일반적으로 단순히 "앱"이라고 하지만 일부 프로토콜 요소는 앱을 영구적으로 "MSA 앱"이라고 할 수 있습니다.

예: "msaAppId": "353826a6-4557-45f8-8d88-6aa0526b8f77"

앱은 ID 팀의 앱 포털에 대한 등록을 나타내며 Bot Framework 런타임 프로토콜 내에서 서비스 간 ID 메커니즘 역할을 합니다. 앱에는 웹 사이트 및 모바일/데스크톱 애플리케이션과 같은 다른 비봇 연결이 있을 수 있습니다.

등록된 모든 봇에는 정확히 하나의 앱이 있습니다. 봇 소유자가 봇과 연결된 앱을 독립적으로 변경할 수는 없지만, Bot Framework 팀은 몇 가지 예외적인 경우에 이 작업을 수행할 수 있습니다.

봇 및 채널은 앱 ID를 사용하여 등록된 봇을 고유하게 식별할 수 있습니다.

앱 ID는 GUID로 보장됩니다. 앱 ID는 대/소문자 구분 없이 비교해야 합니다.

앱 ID에 대한 규칙

  • 앱 ID는 Microsoft 앱 플랫폼 내에서 고유합니다(GUID 비교).
  • 모든 봇에는 정확히 하나의 해당 앱이 있습니다.
  • 봇이 연결된 앱을 변경하려면 Bot Framework 팀의 지원이 필요합니다.

채널 계정

모든 봇과 사용자에게는 각 채널 내의 계정이 있습니다. 계정은 식별자(id)와, 선택적 이름 같은 기타 정보성 봇 비 구조적 데이터를 포함합니다.

예: "from": { "id": "john.doe@contoso.com", "name": "John Doe" }

이 계정은 메시지를 보내고 받을 수 있는 채널 내의 주소를 설명합니다. 경우에 따라 이러한 등록은 Facebook과 같은 단일 서비스 내에 존재합니다. 다른 시스템에서는 여러 시스템(전자 메일 주소, 전화 번호)에 등록됩니다. 웹 채팅 같은 익명 채널에서는 등록이 일시적일 수 있습니다.

채널 계정은 채널 내에서 중첩됩니다. 예를 들어 Facebook 계정은 단순히 숫자입니다. 이 숫자는 다른 채널에서 다른 의미를 가질 수 있으며 모든 채널 외부에서는 의미가 없습니다.

채널 계정과 사용자(실제 사용자) 간의 관계는 각 채널과 연결된 규칙에 따라 달라집니다. 예를 들어 SMS 번호는 일반적으로 한 사람을 참조하지만 번호는 다른 사람에게 전송될 수 있습니다. 반대로, Facebook 계정은 일반적으로 한 사람을 영구적으로 지칭하지만 두 사람이 Facebook 계정을 공유하는 것은 드문 일이 아닙니다.

대부분의 채널에서 채널 계정을 메시지를 배달할 수 있는 사서함의 일종으로 생각하는 것이 적절합니다. 대부분의 채널에서 여러 주소가 단일 사서함에 매핑되도록 허용하는 것이 일반적입니다. 예를 들어 "jdoe@contoso.com" 및 "john.doe@service.contoso.com"는 동일한 받은 편지함으로 확인될 수 있습니다. 일부 채널은 한 단계 더 나아가 액세스하는 봇에 따라 계정의 주소를 변경합니다. 예를 들어 Facebook은 사용자 ID를 변경하여 모든 봇이 메시지를 보내고 받기 위한 다른 주소를 줍니다.

일부 경우 주소 간 동일성을 지정할 수 있으나 메일함 간 동일성 및 사람 간 동일성을 지정하려면 채널 내 규칙을 알아야 하는데 대부분의 경우는 이것이 불가능합니다.

봇에게 전송된 활동의 recipient 필드를 통해 채널 계정 주소를 봇에게 알립니다.

채널 계정에 대한 규칙

  • 채널 계정은 연결된 채널 안에서만 의미가 있습니다.
  • 둘 이상의 ID가 동일한 계정으로 확인될 수 있습니다.
  • 서수 비교를 사용하여 두 ID가 동일하다는 것을 설정할 수 있습니다.
  • 일반적으로 두 개의 서로 다른 ID가 동일한 계정, 봇 또는 사용자로 확인되는지 여부를 식별하는 데 사용할 수 있는 비교는 없습니다.
  • ID, 계정, 사서함 및 사용자 간의 연결 안정성은 채널에 따라 달라집니다.

대화 ID

메시지는 ID로 식별 가능한 대화의 컨텍스트에서 송수신됩니다.

예: "conversation": { "id": "1234" }

대화에는 메시지 및 기타 활동의 교환이 포함됩니다. 모든 대화에는 0개 이상의 활동이 있으며 모든 활동은 정확히 하나의 대화에 나타납니다. 대화는 영구적일 수도 있고, 시작과 끝이 다를 수도 있습니다. 대화를 만들거나 수정하거나 종료하는 프로세스는 채널 내에서 발생하며, 채널이 이를 인식하는 동안에만 대화가 존재하며 이러한 프로세스의 특성은 채널에 의해 설정됩니다.

대화 내의 활동은 사용자 및 봇에 의해 전송됩니다. 사용자가 대화에 "참여"하는 정의는 채널에 따라 다르며 이론적으로 현재 사용자, 메시지를 받은 사용자, 메시지를 보낸 사용자를 포함할 수 있습니다.

SMS 등의 여러 채널에는 1:1 대화에 할당된 대화 ID가 원격 채널 계정 ID인 단점이 있습니다. 이 단점에는 두 가지 부작용이 있습니다.

  1. 대화 ID는 누가 보고 있는지를 기준으로 주관적입니다. 참가자 A와 B가 대화하는 경우 참가자 A는 대화 ID를 "B"로 보고 참가자 B는 대화 ID를 "A"로 표시합니다.
  2. 봇에 이 채널 내에 여러 채널 계정이 있는 경우(예: 봇에 SMS 번호가 두 개 있는 경우) 대화 ID로는 봇의 보기 필드 내에서 대화를 고유하게 식별하기에 충분하지 않습니다.

따라서 대화 ID가 단일 봇의 경우에도 채널 내에서 단일 대화를 고유하게 식별하는 것은 아닙니다.

대화 ID 규칙

  • 대화는 연결된 채널 내에서만 의미가 있습니다.
  • 둘 이상의 ID가 동일한 대화로 확인될 수 있습니다.
  • 서수 같음이 반드시 두 대화 ID가 동일한 대화임을 확립하는 것은 아니지만, 대부분의 경우 그렇게 합니다.

활동 ID

작업은 Bot Framework 프로토콜 내에서 전송 및 수신되며 경우에 따라 식별할 수 있습니다.

예: "id": "5678"

활동 ID는 선택 사항이며 사용 가능한 경우 봇이 후속 API 호출에서 ID를 참조할 수 있는 방법을 제공하기 위해 채널에서 사용합니다.

  • 특정 활동에 회신
  • 활동 수준에서 참가자 목록 쿼리

추가 사용 사례가 설정되지 않아 활동 ID 처리에 대한 추가 규칙이 없습니다.