Поля идентификаторов в Bot Framework
ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4
В этом руководстве описываются характеристики полей идентификаторов в Bot Framework.
ИД канала
У каждого канала Bot Framework есть уникальный идентификатор.
Пример: "channelId": "slack"
Идентификаторы канала используются в качестве пространств имен для других идентификаторов. Вызовы среды выполнения в протоколе Bot Framework должны осуществляться в контексте канала; канал предоставляет значение разговора и идентификаторы учетных записей, используемых во время обмена.
По соглашению для идентификаторов канала используются символы нижнего регистра. Каналы обеспечивают постоянный регистр символов в идентификаторах каналов. Поэтому боты могут использовать операции сравнения на равенство с целью выявления соответствия.
Правила для идентификаторов канала
- В идентификаторах каналов учитывается регистр символов.
Дескриптор бота
У каждого бота, зарегистрированного в azure AI Служба Bot, есть дескриптор бота.
Пример: FooBot
Дескриптор бота представляет регистрацию бота с помощью веб-Служба Bot ИИ Azure. Эта регистрация связана с конечной точкой веб-перехватчика HTTP и с регистрацией в каналах.
Azure AI Служба Bot гарантирует уникальность дескрипторов бота. Портал Azure выполняет проверку уникальности без учета регистра (это означает, что варианты дескриптора, отличающиеся только регистром символов, рассматриваются как один и тот же дескриптор). Это характеристика портала Azure, и она не обязательно применима к самому дескриптору бота.
Правила использования дескрипторов ботов
- Дескрипторы ботов являются уникальными (без учета регистра) на платформе Bot Framework.
ИД приложения
У каждого бота, зарегистрированного в Служба Bot ИИ Azure, есть идентификатор приложения.
Примечание.
Ранее приложения обычно называются "Приложения MSA" или "Приложения MSA/AAD". Приложения в настоящее время чаще называются "приложениями", но некоторые элементы протокола могут называться приложениями как "приложения MSA" в постоянной среде.
Пример: "msaAppId": "353826a6-4557-45f8-8d88-6aa0526b8f77"
Приложение представляет регистрацию в группе удостоверений портала приложения и используется в качестве механизма идентификации между службами в протоколе среды выполнения Bot Framework. У приложений могут быть другие ассоциации, не связанные с ботами, например веб-сайты или мобильные и классические приложения.
У каждого зарегистрированного бота есть ровно одно приложение. Хотя владельцу бота не удается самостоятельно изменить приложение, связанное с ботом, команда Bot Framework может сделать это в нескольких исключительных случаях.
Боты и каналы могут использовать идентификаторы приложений для уникальной идентификации зарегистрированных ботов.
Идентификаторы приложений гарантированно являются глобально уникальными. Все идентификаторы приложений должны сравниваться без учета регистра.
Правила для идентификаторов приложений
- Идентификаторы приложений являются уникальными (и должны сравниваться как глобальные уникальные идентификаторы) в рамках платформы приложений Майкрософт.
- У каждого бота есть ровно одно соответствующее приложение.
- Для изменения приложения, с которым связан бот, требуется обращение в службу поддержки Bot Framework.
Учетная запись канала
У каждого бота и пользователя есть учетная запись в каждом канале. Учетная запись содержит идентификатор (id
) и другие информативные, но неструктурированные данные, например дополнительное имя.
Пример: "from": { "id": "john.doe@contoso.com", "name": "John Doe" }
Эта учетная запись описывает адрес в канале, используемый для отправки и получения сообщений. В некоторых случаях эти регистрации существуют в одной службе, например Facebook. В других системах они регистрируются во многих системах (адреса электронной почты, номера телефонов). В более анонимных каналах, таких как Веб-чат, регистрация может быть эфемерной.
Учетные записи каналов являются вложенными в каналы. Например, учетная запись Facebook представляет собой просто число. Это число может иметь другое значение в других каналах и может не иметь смысла вне каналов.
Связь между канала учетными записями канала и пользователями (людьми) зависит от соглашений, связанных с каждым каналом. Например, sms-номер обычно относится к одному человеку, но номер может быть передан другому пользователю. И наоборот, учетная запись Facebook обычно относится к одному человеку в постоянности, хотя это не редкость для двух людей, чтобы поделиться учетной записью Facebook.
Для большинства каналов рекомендуется считать учетную запись канала своего рода почтовым ящиком, в который доставляются сообщения. Обычно большинство каналов позволяют сопоставить несколько адресов с одним почтовым ящиком. Например, "" и "jdoe@contoso.comjohn.doe@service.contoso.com" могут разрешаться в одну папку "Входящие". Некоторые каналы идут дальше и изменяют адрес учетной записи на основе того, какой бот обращается к нему. Например, Facebook изменяет идентификаторы пользователей, поэтому каждый бот имеет другой адрес для отправки и получения сообщений.
Хотя иногда можно установить соответствие адресов, для установки соответствия адресов электронной почты и пользователей необходимо знание соглашений, действующих внутри канала, и во многих случаях это невозможно.
Бот получает адрес учетной записи канала с помощью поля recipient
в действиях, отправляемых боту.
Правила для учетных записей каналов
- Учетные записи канала имеют значение только в соответствующих каналах.
- Несколько идентификаторов могут представлять одну и ту же учетную запись.
- Для проверки идентификаторов на равенство можно использовать порядковое сравнение.
- Обычно нет сравнения, которое можно использовать для определения того, разрешаются ли два разных идентификатора для одной учетной записи, бота или человека.
- Стабильность связей между идентификаторами, учетными записями, почтовыми ящиками и людьми зависит от канала.
ИД беседы
Отправка и получение сообщений происходит в контексте разговора, который определяется по идентификатору.
Пример: "conversation": { "id": "1234" }
Разговор включает обмен сообщениями и другие действия. Каждый разговор может содержать одно или несколько действий, и каждое действие появляется только в одном разговоре. Разговоры могут быть бессрочными или иметь четкое начало и конец. Процесс создания, изменения или завершения беседы происходит в канале — беседа существует только в то время как канал знает об этом, а характеристики этих процессов устанавливаются каналом.
Действия в беседе отправляются пользователями и ботами. Определение "участников" разговора различается в зависимости от канала. К участникам разговора могут относиться пользователи, присутствующие в канале, пользователи, которые когда-либо получали сообщение, и пользователи, которые отправили сообщение.
Несколько каналов, таких как SMS, и, возможно, другие, имеют причуд, что идентификатор беседы, назначенный беседе 1:1, является идентификатором учетной записи удаленного канала. У этой особенности есть два побочных эффекта:
- Идентификатор беседы является субъективным, на основе того, кто его просматривает. Если участники A и B говорят, участник A видит идентификатор беседы "B", а участник B видит идентификатор беседы", чтобы быть "A".
- Если бот имеет несколько учетных записей каналов в этом канале (например, если бот имеет два SMS-номера), идентификатор беседы не достаточно для уникальной идентификации беседы в поле представления бота.
Таким образом, идентификатор беседы не обязательно однозначно определяет один диалог в канале даже для одного бота.
Правила для идентификаторов разговора
- Разговоры имеют значение только в соответствующих каналах.
- Несколько идентификаторов могут представлять один и тот же разговор.
- Порядковое равенство не обязательно устанавливает, что два идентификатора беседы одинаковы, хотя в большинстве случаев это делает.
Идентификатор действия
Отправка и получение действий осуществляется по протоколу Bot Framework, и часто действия можно определить.
Пример: "id": "5678"
Идентификаторы действий являются необязательными и используются каналами для предоставления боту способа ссылки на идентификатор в последующих вызовах API, если они доступны:
- Ответ на определенное действие
- Запрос списка участников на уровне действия
Поскольку другие варианты использования не предусмотрены, дополнительные правила обращения с идентификаторами действий отсутствуют.