Kombinieren von Bots mit RegisterkartenCombine bots with tabs

Wichtig

Die Artikel in diesem Abschnitt basieren auf dem V3 bot Framework SDK.The articles in this section are based on the v3 Bot Framework SDK. Wenn Sie nach der aktuellen Dokumentation (Version 4,6 oder höher des SDK) suchen, lesen Sie den Abschnitt conversational Bots .If you're looking for current documentation (version 4.6 or later of the SDK) see the Conversational Bots section.

Bots und Registerkarten funktionieren gut zusammen und werden häufig in einem einzigen Back-End-Dienst kombiniert.Bots and tabs work well together, and are often combined into a single back-end service. In diesem Abschnitt werden bewährte Methoden und allgemeine Muster für die Verwendung von Registerkarten und Bots zusammen beschrieben.This section describes best practices and common patterns for using tabs and bots together.

Zuordnen von Benutzeridentitäten über bot und TabAssociating user identities across bot and tab

Beispiel: angenommen, ihre Tab-Anwendung verwendet ein proprietäres ID-System, um den Inhalt zu sichern.For example: Suppose your tab application uses a proprietary ID system to secure its content. Angenommen, Sie haben auch einen bot, der mit dem Benutzer interagieren kann.Suppose you also have a bot that can interact with the user. In der Regel sollten Sie Inhalte auf der Registerkarte anzeigen, die speziell für den Benutzer angezeigt wird.Typically, you’ll want to show content in the tab that is specific to the viewing user. Die Herausforderung besteht darin, dass sich die Benutzer-ID in Ihrem System wahrscheinlich von der Benutzer-ID von Microsoft Teams unterscheidet.The challenge is that the user ID in your system is likely different from the Microsoft Teams user ID. Wie ordnen Sie diese beiden Identitäten zu?So how do you associate these two identities? Im Allgemeinen besteht der empfohlene Ansatz darin, den Benutzer mit dem gleichen Identitätssystem, mit dem die Authentifizierung für die Registerkarteninhalte erfolgt, mit dem bot zu signieren.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. Sie können dies über die Anmeldeaktion implementieren, die sich in der Regel über einen OAuth-Fluss im Benutzer anmeldet.You can implement this via the sign-in action, which typically logs in the user via an OAuth flow.

Dieser Ablauf eignet sich am besten, wenn Ihr Identitätsanbieter das OAuth 2,0-Protokoll implementiert.This flow works best if your identity provider implements the OAuth 2.0 protocol. Anschließend können Sie die Microsoft Teams-Benutzer-ID den Anmeldeinformationen des Benutzers aus Ihrem eigenen Identitätsdienst zuordnen.You can then associate the Teams user ID with the user’s credentials from your own identity service.

Zuordnen von Identitäten

Möglicherweise möchten Sie Registerkarten verwenden, um mehr Inhalte anzuzeigen, als in eine Karte passt, oder um komplexe Aufgaben zum Ausfüllen von Formularen mithilfe des Registerkartenbereichs abzuschließen.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. Beispielsweise sollten Sie den Benutzer zur Registerkarte navigieren, wenn er von Ihrem bot auf die Karte klickt.For example, consider navigating the user to the tab when he or she clicks on the card from your bot. Damit dies geschieht, müssen Sie die Nachricht Ihres bot codieren, um eine Deep Link -URL zu verwenden, entweder über Markup oder als Ziel der openUrl-Aktion.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 basieren auf einer Entitäts-Nr, bei der es sich um einen nicht transparenten Wert handelt, der einer eindeutigen Entität in Ihrem System zugeordnet ist.Deep links rely on an entityId, which is an opaque value that maps to a unique entity in your system. Wenn die Registerkarte erstellt wird, speichern Sie im Idealfall einen einfachen Zustand (beispielsweise "Flag") im Back-End, der angibt, dass die Registerkarte im Kanal erstellt wurde.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. Wenn Ihr bot eine Nachricht erstellt, kann Sie auf die Entitäts-Nr, die dieser Registerkarte zugeordnet ist, abzielen.When your bot constructs a message, it can target the entityId associated with that tab.

Hinweis: in persönlichen Chats, da Registerkarten "statisch" sind und mit der APP installiert werden, können Sie immer ihre Existenz übernehmen und so tiefe Verknüpfungen entsprechend erstellen.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.

Senden von Benachrichtigungen für Registerkarten AktualisierungenSending notifications for tab updates

Häufig möchten Sie den Endbenutzer Benachrichtigen, wenn eine Aktualisierung oder eine Benutzeraktion auf einer Registerkarte erfolgt. Ein Beispielszenario ist das Zuweisen einer Aufgabe oder eines Tickets zu einem Teammitglied und das anschließende Benachrichtigen dieses Teammitglieds.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.

Es gibt zwei Möglichkeiten, dieses Szenario zu erreichen:There are two ways of achieving this scenario:

  1. Wenn Sie einen ganzen Kanal benachrichtigen möchten, kann Ihr bot asynchron eine Nachricht an den Kanal senden.If you wish to notify an entire channel your bot can asynchronously post a message to the channel. Es gibt keine Möglichkeit für einen bot, proaktiv die Registerkarten Unterhaltung zu erstellen, wenn er nicht mit der Registerkarte erstellt wurde.There is no way for a bot to proactively create the tab conversation if it wasn't created with the tab.

  2. Wenn Sie nur den Empfänger oder interessierte Parteien benachrichtigen möchten, die an der Aktion beteiligt sind, kann Ihr bot eine persönliche Chatnachricht an den Benutzer senden.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. Überprüfen Sie zunächst, ob eine persönliche Unterhaltung zwischen Ihrem bot und dem Benutzer vorhanden ist.You should first check to see if a personal conversation between your bot and the user exists. Wenn dies nicht der Fall ist CreateConversation , können Sie zum Initiieren des persönlichen Chats aufrufen.If not, you can call CreateConversation to initiate the personal chat.

Verwenden Sie in beiden Fällen Ereignisbenachrichtigungen mit Bedacht und niemals Spam für den Benutzer mit unnötigen Updates.In both cases, use event notifications wisely and never spam the user with unnecessary updates.