Bot Framework의 ID 필드ID fields in the Bot Framework

적용 대상: SDK v4APPLIES TO: SDK v4

이 가이드는 Bot Framework에 있는 ID 필드의 특징을 설명합니다.This guide describes the characteristics of ID fields in the Bot Framework.

채널 IDChannel ID

모든 Bot Framework 채널은 고유 ID로 식별됩니다.Every Bot Framework channel is identified by a unique ID.

예: "channelId": "slack"Example: "channelId": "slack"

채널 ID는 다른 ID의 네임스페이스 역할을 합니다.Channel IDs serve as namespaces for other IDs. Bot Framework 프로토콜에서의 런타임 호출은 채널 컨텍스트 안에서 발생해야 합니다. 채널은 통신 중에 사용되는 계정 ID와 대화에 의미를 부여합니다.Runtime calls in the Bot Framework protocol must take place within the context of a channel; the channel gives meaning to the conversation and account IDs used when communicating.

규칙에 따라 모든 채널 ID는 소문자입니다.By convention all channel IDs are lowercase. 채널은 내보내는 채널 ID에서 대소문자 지정이 일관되게 보장하므로 봇이 순서 비교를 통해 동등성을 설정할 수 있습니다.Channels guarantee that the channel IDs they emit have consistent casing, and thus bots may use ordinal comparisons to establish equivalence.

채널 ID 규칙Rules for channel IDs

  • 채널 ID는 대/소문자를 구분합니다.Channel IDs are case-sensitive.

봇 핸들Bot Handle

Azure Bot Service에 등록된 모든 봇에는 봇 핸들이 있습니다.Every bot that has been registered with the Azure Bot Service has a bot handle.

예: FooBotExample: FooBot

봇 핸들은 온라인 Azure Bot Service에 대한 봇 등록을 나타냅니다.A bot handle represents a bot's registration with the online Azure Bot Service. 이 등록은 HTTP 웹후크 엔드포인트 및 채널 등록과 연결됩니다.This registration is associated with an HTTP webhook endpoint and registrations with channels.

Azure Bot Service는 봇 핸들의 고유성을 보장합니다.The Azure Bot Service ensures uniqueness of bot handles. Azure Portal은 대소문자를 구분하지 않는 고유성 검사를 수행합니다(봇 핸들의 대소문자 차이가 단일 핸들로 간주됨). 이는 개발자 Azure Portal의 특성이며 봇 핸들 자체에 대한 것이 아닙니다.The Azure portal performs a case-insensitive uniqueness check (meaning that case variations of bot handle are treated as a single handle) although this is a characteristic of the Azure portal, and not necessarily the bot handle itself.

봇 핸들 규칙Rules for bot handles

  • 봇 핸들은 Bot Framework 안에서 고유합니다(대소문자 구분 안 함).Bot handles are unique (case-insensitive) within the Bot Framework.

앱 IDApp ID

Azure Bot Service에 등록된 모든 봇에는 앱 ID가 있습니다.Every bot that has been registered with the Azure Bot Service has an App ID.

참고

이전에는 앱을 보통 "MSA Apps" 또는 "MSA/AAD Apps"로 지칭했습니다.Previously, apps were commonly referred to as "MSA Apps" or "MSA/AAD Apps." 이제는 일반적으로 앱을 간단히 "앱"이라 지칭하는 경우가 많지만 일부 프로토콜 요소에서는 앱을 "MSA Apps"로 영구 참조할 수 있습니다.Apps are now more commonly referred to simply as "apps", but some protocol elements may refer to apps as "MSA Apps" in perpetuity.

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

앱은 ID 팀의 앱 포털에 대한 등록을 나타내며 Bot Framework 런타임 프로토콜 안에서 서비스 간 ID 메커니즘 역할을 합니다.An app represents a registration with the Identity team's App portal, and serves as the service-to-service identity mechanism within the Bot Framework runtime protocol. 앱에는 웹 사이트, 모바일/데스크톱 애플리케이션 같은 다른 비 봇 연결이 있을 수 있습니다.Apps may have other non-bot associations, such as websites and mobile/desktop applications.

등록된 모든 봇에는 정확히 하나의 앱이 있습니다.Every registered bot has exactly one app. 봇 소유자가 봇에 연결된 앱을 독립적으로 변경할 수는 없지만 Bot Framework 팀은 소수의 예외 상황에서 변경할 수 있습니다.Although it's not possible for a bot owner to independently change which app is associated with their bot, the Bot Framework team can do so in a small number of exceptional cases.

봇 및 채널은 앱 ID를 사용하여 등록된 봇을 고유하게 식별할 수 있습니다.Bots and channels may use app IDs to uniquely identify a registered bot.

앱 ID는 반드시 GUID가 됩니다.App IDs are guaranteed to be GUIDs. 앱 ID는 대소문자 구분 없이 비교되어야 합니다.App IDs should be compared without case sensitivity.

앱 ID 규칙Rules for app IDs

  • 앱 ID는 Microsoft App 플랫폼 안에서 고유합니다(GUID 비교).App IDs are unique (GUID comparison) within the Microsoft App platform.
  • 모든 봇에는 정확히 하나의 해당하는 앱이 있습니다.Every bot has exactly one corresponding app.
  • 봇이 연결된 앱을 변경하려면 Bot Framework 팀의 지원이 필요합니다.Changing which app a bot is associated with requires the assistance of the Bot Framework team.

채널 계정Channel Account

모든 봇과 사용자는 각 채널 내 계정이 있습니다.Every bot and user has an account within each channel. 계정은 식별자(id)와, 선택적 이름 같은 기타 정보성 봇 비 구조적 데이터를 포함합니다.The account contains an identifier (id) and other informative bot non-structural data, like an optional name.

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

이 계정은 메시지를 송수신할 수 있는 채널 내 주소를 설명합니다.This account describes the address within the channel where messages may be sent and received. 경우에 따라 이러한 등록은 단일 서비스(예: Facebook 등) 안에 존재합니다.In some cases, these registrations exist within a single service (e.g., Facebook). 다른 경우 여러 시스템(이메일 주소, 전화 번호)에 등록됩니다.In others, they are registered across many systems (email addresses, phone numbers). 다른 익명 채널(예: Web Chat)에서는 등록이 사용 후 삭제될 수 있습니다.In more anonymous channels (e.g., Web Chat), the registration may be ephemeral.

채널 계정은 채널 내에서 중첩됩니다.Channel accounts are nested within channels. 예를 들어 Facebook 계정이 간단한 숫자입니다.A Facebook account, for example, is simply a number. 이 숫자는 다른 채널에서 다른 의미를 가질 수 있고 모든 채널 외부에서는 의미가 없습니다.This number may have a different meaning in other channels, and it doesn't have meaning outside all channels.

채널 계정과 사용자(실제 사람)의 관계는 각 채널과 연결된 규칙에 따라 달라집니다.The relationship between channel accounts and users (actual people) depends on conventions associated with each channel. 예를 들어, 일반적으로 SMS 번호는 일정 기간 동안은 한 사람을 지칭하지만 나중에 이 번호가 다른 사람에게 이전될 수 있습니다.For example, an SMS number typically refers to one person for a period of time, after which the number may be transferred to someone else. 반대로 Facebook 계정은 두 사람이 Facebook 계정을 공유하는 경우에는 일반적이지 않지만 보통은 영구적으로 한 사람을 의미합니다.Conversely, a Facebook account typically refers to one person in perpetuity, although it is not uncommon for two people to share a Facebook account.

대부분의 채널에서 채널 계정을 메시지를 배달할 수 있는 메일함의 한 종류로 생각하는 것이 적합합니다.In most channels, it's appropriate to think of a channel account as a kind of mailbox where messages can be delivered. 일반적으로 대부분의 채널에서는 여러 주소를 단일 메일함에 매핑할 수 있습니다. 즉 "jdoe@contoso.com" 및 "john.doe@service.contoso.com"이 같은 받은 편지함에서 확인될 수 있습니다.It's typical for most channels to allow multiple address to map to a single mailbox; for example, "jdoe@contoso.com" and "john.doe@service.contoso.com" may resolve to the same inbox. 일부 채널에서는 한 단계 더 나아가 액세스하는 봇에 따라 계정의 주소를 변경합니다. 예를 들어 Facebook은 사용자 ID를 변경하므로 모든 봇이 메시지 송수신에 다른 주소를 갖게 됩니다.Some channels go a step further and alter the account's address based on which bot is accessing it; for example, Facebook alters user IDs so every bot has a different address for sending and receiving messages.

일부 경우 주소 간 동일성을 지정할 수 있으나 메일함 간 동일성 및 사람 간 동일성을 지정하려면 채널 내 규칙을 알아야 하는데 대부분의 경우는 이것이 불가능합니다.While it's possible in some cases to establish equivalency between addresses, establishing equivalency between mailboxes and equivalency between people requires knowledge of the conventions within the channel, and is in many cases not possible.

봇에게 전송된 활동의 recipient 필드를 통해 채널 계정 주소를 봇에게 알립니다.A bot is informed of its channel account address via the recipient field on activities sent to the bot.

채널 계정 규칙Rules for channel accounts

  • 채널 계정은 연결된 채널 안에서만 의미가 있습니다.Channel accounts have meaning only within their associated channel.
  • 여러 ID를 동일한 계정에 확인할 수 있습니다.More than one ID may resolve to the same account.
  • 순서 비교를 두 ID가 동일한지 확인하는 데 사용할 수 있습니다.Ordinal comparison may be used to establish that two IDs are the same.
  • 일반적으로 두 개의 다른 ID가 동일한 계정, 봇 또는 사람에 확인되는지 여부를 파악하는 데 사용할 수 있는 비교는 없습니다.There is generally no comparison that can be used to identify whether two different IDs resolve to the same account, bot or person.
  • ID, 계정, 메일함, 사람 간의 연결 안정성은 채널에 따라 달라집니다.The stability of associations between IDs, accounts, mailboxes, and people depends on the channel.

대화 IDConversation ID

메시지는 ID로 식별 가능한 대화의 컨텍스트에서 송수신됩니다.Messages are sent and received in the context of a conversation, which is identifiable by ID.

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

대화에는 메시지 교환과 다른 활동이 포함됩니다.A conversation contains an exchange of messages and other activities. 모든 대화에는 0개 이상의 활동이 있으며 모든 활동은 정확히 하나의 대화에 표시됩니다.Every conversation has zero or more activities, and every activity appears in exactly one conversation. 대화는 영구적이거나, 시작과 끝이 다를 수 있습니다.Conversations may be perpetual, or may have distinct starts and ends. 대화 만들기, 수정 또는 종료 프로세스는 채널 안에서 발생하며(즉 채널이 대화를 인식할 때 대화가 존재함) 이러한 프로세스의 특징은 채널에서 설정됩니다.The process of creating, modifying, or ending a conversation occurs within the channel (i.e., a conversation exists when the channel is aware of it) and the characteristics of these processes are established by the channel.

대화 안에서 활동은 사용자와 봇이 보냅니다.The activities within a conversation are sent by users and bots. 대화에 "참여"하는 사용자에 대한 정의는 채널마다 다르며 이론적으로는 현재 사용자, 메시지를 받은 적 있는 사용자, 메시지를 보낸 사용자가 포함될 수 있습니다.The definition for which users "participate" in a conversation varies by channel, and can theoretically include present users, users who have ever received a message, users who sent a message.

일부 채널(예: SMS 및 기타)에는 1:1 대화에 할당된 대화 ID가 원격 채널 계정 ID가 되는 특이점이 있습니다.Several channels (e.g., SMS, and possibly others) have the quirk that the conversation ID assigned to a 1:1 conversation is the remote channel account ID. 이 특이점에는 두 가지 부작용이 있습니다.This quirk has two side-effects:

  1. 대화 ID가 이를 보는 사용자에 따라 주관적이 됩니다.The conversation ID is subjective based on who is viewing it. 참가자 A와 B가 대화 중이라면 참가자 A는 대화 ID가 “B”, 참가자 B는 대화 ID가 “A”인 것을 보게 됩니다.If Participants A and B are talking, participant A sees the conversation ID to be "B" and participant B sees the conversation ID to be "A."
  2. 봇이 이 채널 안에 여러 채널 계정을 갖는 경우(예: 봇에 SMS 번호가 두 개임) 대화 ID만으로는 봇의 관점에서 대화를 고유하게 식별하는 데 부족합니다.If the bot has multiple channel accounts within this channel (for example, if the bot has two SMS numbers), the conversation ID is not sufficient to uniquely identify the conversation within the bot's field of view.

따라서 대화 ID가 단일 봇에 대해서도 채널 내 단일 대화를 반드시 고유하게 식별한다고 할 수 없습니다.Thus, a conversation ID does not necessarily uniquely identify a single conversation within a channel even for a single bot.

대화 ID 규칙Rules for conversation IDs

  • 대화는 연결된 채널 안에서만 의미가 있습니다.Conversations have meaning only within their associated channel.
  • 여러 ID를 동일한 대화에 확인할 수 있습니다.More than one ID may resolve to the same conversation.
  • 순서 동등성이 두 대화 ID를 반드시 같은 대화로 설정하는 것은 아니지만 대부분의 경우는 그렇습니다.Ordinal equality does not necessarily establish that two conversation IDs are the same conversation, although in most cases, it does.

활동 IDActivity ID

활동은 Bot Framework 프로토콜 안에서 송수신되며 식별 가능한 경우도 있습니다.Activities are sent and received within the Bot Framework protocol, and these are sometimes identifiable.

예: "id": "5678"Example: "id": "5678"

활동 ID는 선택 사항이며 가능한 경우 채널에서 봇에게 이후의 API 호출에서 ID를 참조하는 방법을 제공하기 위해 사용합니다.Activity IDs are optional and employed by channels to give the bot a way to reference the ID in subsequent API calls, if they are available:

  • 특정 활동에 응답Replying to a particular activity
  • 활동 수준에서 참가자 목록 쿼리Querying for the list of participants at the activity level

더 이상 사용 사례가 마련되지 않았으므로 활동 ID 처리에 관한 다른 규칙은 없습니다.Because no further use cases have been established, there are no additional rules for the treatment of activity IDs.