Объединение ботов с вкладками

Важно!

Эта статья основана на пакете SDK Bot Framework версии 3. Если вы ищете текущую документацию по пакету SDK версии 4.6 или более поздней, см. раздел Боты для бесед.

Боты и вкладки работают вместе и часто объединяются в одну серверную службу. В этом разделе описаны рекомендации и общие шаблоны совместного использования вкладок и ботов.

Связывание удостоверений пользователей между ботом и вкладкой

Например, предположим, что приложение вкладки использует собственную систему идентификаторов для защиты содержимого. Предположим, у вас также есть бот, который может взаимодействовать с пользователем. Как правило, требуется отобразить содержимое на вкладке, относящееся к просмотру пользователя. Проблема заключается в том, что идентификатор пользователя в вашей системе, скорее всего, отличается от идентификатора пользователя Microsoft Teams. Итак, как связать эти два удостоверения? Как правило, рекомендуется выполнить вход пользователя с помощью бота с помощью той же системы удостоверений, которая используется для проверки подлинности содержимого вкладки. Реализовать можно с помощью действия входа, которое обычно выполняет вход пользователя с помощью потока OAuth.

Этот поток работает лучше всего, если поставщик удостоверений реализует протокол OAuth 2.0. Затем можно связать идентификатор пользователя Teams с учетными данными пользователя из собственной службы удостоверений.

Снимок экрана: связывание удостоверений.

Вы хотите использовать вкладки, чтобы отобразить больше содержимого, которое может поместиться в карта, или предоставить способ выполнения сложных задач заполнения форм с помощью холста вкладки. Например, рассмотрите возможность перехода пользователя на вкладку, когда пользователь выбирает карта из бота. Для этого необходимо закодировать сообщение бота, включив URL-адрес глубокой ссылки либо с помощью разметки, либо в качестве целевого объекта действия openUrl.

Глубокие ссылки основаны на entityId, который представляет собой непрозрачное значение, которое сопоставляется с уникальной сущностью в вашей системе. При создании вкладки сохраняется простое состояние. Например, флаг на серверной части, указывающий, что вкладка создана в канале. Когда бот создает сообщение, он может ориентироваться на entityId, связанный с этой вкладкой.

Примечание.

В личных чатах, так как вкладки являются статическими и устанавливаются вместе с приложением, вы всегда можете предположить, что они существуют и, таким образом, создавать глубокие ссылки соответствующим образом.

Отправка уведомлений об обновлениях вкладки

Часто требуется уведомлять конечного пользователя при каждом обновлении или выполнении действия пользователя на вкладке. Примером сценария является назначение задачи или билета участнику команды, а затем уведомление этого участника команды.

Существует два способа реализации этого сценария:

  1. Если вы хотите уведомить весь канал, бот может асинхронно отправить сообщение в канал. Бот не может заранее создать беседу на вкладке, если она не была создана с помощью вкладки.

  2. Если вы хотите уведомить только получателя или заинтересованных лиц, участвующих в действии, бот может отправить пользователю личное сообщение чата. Сначала необходимо проверка, чтобы узнать, существует ли личная беседа между ботом и пользователем. Если нет, вы можете позвонить CreateConversation , чтобы инициировать личный чат.

В обоих случаях используйте уведомления о событиях с умом и никогда не рассылайте пользователям ненужные обновления.

См. также

Добавление практических руководств в приложение Microsoft Teams