Объединение боты с вкладкамиCombine bots with tabs

Важно!

Статьи, приведенные в этом разделе, основаны на пакете SDK "V3 Bot Framework".The articles in this section are based on the v3 Bot Framework SDK. Если вы ищете текущую документацию (версия 4,6 или более поздняя версия пакета SDK), ознакомьтесь с разделом " беседы Боты ".If you're looking for current documentation (version 4.6 or later of the SDK) see the Conversational Bots section.

Боты и вкладки хорошо работают вместе, и часто объединяются в одну фоновую службу.Bots and tabs work well together, and are often combined into a single back-end service. В этом разделе приводятся рекомендации и общие шаблоны для совместного использования вкладок и боты.This section describes best practices and common patterns for using tabs and bots together.

Сопоставление удостоверений пользователей на Bot и на вкладкеAssociating user identities across bot and tab

Например: Предположим, что приложение, использующее вкладку, использует систему ИДЕНТИФИКАТОРов для защиты своего содержимого.For example: Suppose your tab application uses a proprietary ID system to secure its content. Предположим, у вас также есть Bot, которые могут взаимодействовать с пользователем.Suppose you also have a bot that can interact with the user. Как правило, необходимо отображать контент на вкладке, относящейся к пользователю просмотра.Typically, you’ll want to show content in the tab that is specific to the viewing user. Проблема состоит в том, что идентификатор пользователя в вашей системе, скорее всего, отличается от идентификатора пользователя Microsoft Teams.The challenge is that the user ID in your system is likely different from the Microsoft Teams user ID. Как связать эти два удостоверения?So how do you associate these two identities? Как правило, рекомендуемый способ подписать пользователя с помощью Bot с помощью той же системы идентификации, которая использовалась для проверки подлинности для содержимого вкладки.In general, the recommended approach is to sign the user in with the bot using the same identity system used to provide authentication for the tab content. Это можно реализовать с помощью действия при входе, которое обычно заносится в журнал пользователя с помощью процесса OAuth.You can implement this via the sign-in action, which typically logs in the user via an OAuth flow.

Этот процесс лучше всего подходит, если поставщик удостоверений реализует протокол OAuth 2,0.This flow works best if your identity provider implements the OAuth 2.0 protocol. Затем вы можете связать идентификатор пользователя Teams с учетными данными пользователя из собственной службы удостоверений.You can then associate the Teams user ID with the user’s credentials from your own identity service.

Сопоставление удостоверений

Вы можете использовать вкладки для отображения большего количества контента, чем может уместиться в карточке, или предоставить способ выполнения сложных задач заполнения форм с помощью холста вкладок.You may want to use tabs to show more content than can fit inside of a card, or provide a way to complete complex form-filling tasks using the tab canvas. Например, рассмотрите возможность переходить на вкладку, когда он щелкает карточку из ленты.For example, consider navigating the user to the tab when he or she clicks on the card from your bot. Для этого необходимо закодировать сообщение Bot, чтобы включить URL-адрес с глубокими ссылками , либо с помощью разметки, либо в качестве целевого значения действия openUrl.For this to happen, you’ll need to encode your bot’s message to include a deep link URL, either via markup or as the target of the openUrl action.

Глубокие ссылки основываются на Ентитид, который представляет собой непрозрачное значение, которое сопоставляется с уникальной сущностью в системе.Deep links rely on an entityId, which is an opaque value that maps to a unique entity in your system. При создании вкладки в идеале необходимо хранить некоторое простое состояние (например, флаг) на внутреннем стороне, указывая, что вкладка была создана в канале.When the tab is created, you ideally store some simple state (e.g. flag) on your backend indicating the tab has been created in the channel. Когда ваш робот создает сообщение, он может ориентироваться в Ентитид, связанном с этой вкладкой.When your bot constructs a message, it can target the entityId associated with that tab.

Примечание: в разделе личные беседы, так как вкладки статичны и устанавливаются вместе с приложением, всегда можно придумать их существование и, таким образом, создавать детальные ссылки.Note: in personal chats, because tabs are “static” and installed with the app, you can always assume their existence and thus construct deep links accordingly.

Отправка уведомлений об обновлениях вкладокSending notifications for tab updates

Часто вы хотите уведомить конечного пользователя о том, что на вкладке возникает обновление или действие пользователя. В качестве примера сценария можно назначить задачу или билет участнику группы, а затем уведомить этого участника группы.Often you’ll want to notify the end user whenever an update or a user action occurs in a tab. An example scenario is assigning a task or ticket to a fellow team member and then notifying that team member.

Существует два способа достижения этого сценария:There are two ways of achieving this scenario:

  1. Если вы хотите уведомить весь канал, с которого Bot может асинхронно отправлять сообщение в канал.If you wish to notify an entire channel your bot can asynchronously post a message to the channel. Невозможно создать беседу вкладки с помощью Bot, если она не была создана с помощью вкладки.There is no way for a bot to proactively create the tab conversation if it wasn't created with the tab.

  2. Если вы хотите уведомить получателя или заинтересованных лиц, участвующих в действии, пользователь с помощью программы Bot может отправить пользователю личное сообщение разговора.If you wish to only notify the recipient or interested parties involved with the action, your bot can send a personal chat message to the user. Сначала необходимо проверить, существует ли личный беседа между Bot и пользователем.You should first check to see if a personal conversation between your bot and the user exists. В противном случае вы можете CreateConversation позвонить для запуска личного чата.If not, you can call CreateConversation to initiate the personal chat.

В обоих случаях рекомендуется использовать уведомления о событиях и никогда не спама пользователя с ненужными обновлениями.In both cases, use event notifications wisely and never spam the user with unnecessary updates.