Funktionsweise von BotsHow bots work

gilt für: SDK v4APPLIES TO: SDK v4

Ein Bot ist eine App, mit der Benutzer in Form einer Konversation mithilfe von Text, Grafiken (z.B. Karten oder Bilder) oder Sprache interagieren.A bot is an app that users interact with in a conversational way, using text, graphics (such as cards or images), or speech. Azure Bot Service ist eine Cloudplattform.Azure Bot Service is a cloud platform. Sie hostet Bots und stellt sie Kanälen zur Verfügung.It hosts bots and makes them available to channels.

Die Bot Framework Service, die eine Komponente des Azure Bot Service ist, sendet Informationen zwischen der mit dem Bot verbundenen App des Benutzers (z. B. Facebook oder Slack usw., die wir kanal nennen) und dem Bot.The Bot Framework Service, which is a component of the Azure Bot Service, sends information between the user's bot-connected app (such as Facebook or Slack and so on, which we call the channel) and the bot. Jeder Kanal kann zusätzliche Informationen in die gesendeten Aktivitäten einfügen.Each channel may include additional information in the activities they send. Vor dem Erstellen von Bots sollten Sie sich unbedingt damit vertraut machen, wie ein Bot Aktivitätsobjekte nutzt, um mit seinen Benutzern zu kommunizieren.Before creating bots, it is important to understand how a bot uses activity objects to communicate with its users. Zuerst sehen wir uns die Aktivitäten an, die ausgetauscht werden, wenn ein einfacher Echobot ausgeführt wird.Let's first take a look at activities that are exchanged when we run a simple echo bot.

Aktivitätsdiagrammactivity diagram

Hier sind die beiden folgenden Aktivitätstypen dargestellt: Konversationsaktualisierung und Nachricht.Two activity types illustrated here are: conversation update and message.

Der Bot Framework-Dienst kann beispielsweise eine Konversationsaktualisierung senden, wenn ein Teilnehmer der Konversation beitritt.The Bot Framework Service may send a conversation update when a party joins the conversation. Zu Beginn einer Konversation mit dem Bot Framework Emulator sind beispielsweise zwei Aktivitäten für die Konversationsaktualisierung vorhanden (eine für den Benutzer, der der Konversation beitritt, und eine für den beitretenden Bot).For example, on starting a conversation with the Bot Framework Emulator, you will see two conversation update activities (one for the user joining the conversation and one for the bot joining). Um diese Aktivitäten zur Konversationsaktualisierung zu unterscheiden, überprüfen Sie, wer in der hinzugefügten Membereigenschaft der Aktivität enthalten ist.To distinguish these conversation update activities, check who is included in the members added property of the activity.

Mit der Aktivität vom Typ „Nachricht“ werden Konversationsinformationen zwischen den Teilnehmern übertragen.The message activity carries conversation information between the parties. In einem Beispiel mit einem Echobot enthalten die Nachrichtenaktivitäten einfachen Text, der vom Kanal gerendert wird.In an echo bot example, the message activities are carrying simple text and the channel will render this text. Alternativ hierzu kann die Nachrichtenaktivität auch gesprochenen Text, vorgeschlagene Aktionen oder Karten enthalten, die angezeigt werden sollen.Alternatively, the message activity might carry text to be spoken, suggested actions or cards to be displayed.

In diesem Beispiel hat der Bot eine Nachrichtenaktivität als Antwort auf die erhaltene eingehende Nachrichtenaktivität erstellt und gesendet.In this example, the bot created and sent a message activity in response to the inbound message activity it had received. Ein Bot kann jedoch auf andere Weise auf eine empfangene Nachrichtenaktivität reagieren. Es ist nicht ungewöhnlich, dass ein Bot auf eine Konversationsaktualisierungsaktivität reagiert, indem er einen Begrüßungstext in einer Nachrichtenaktivität sendet.However, a bot can respond in other ways to a received message activity; it's not uncommon for a bot to respond to a conversation update activity by sending some welcome text in a message activity. Weitere Informationen finden Sie unter Willkommen eines Benutzers.More information can be found in how to welcome a user.

Das Bot Framework SDKThe Bot Framework SDK

Mit dem Bot Framework SDK können Sie Bots erstellen, die auf dem Azure Bot Service gehostet werden können.The Bot Framework SDK allows you to build bots that can be hosted on the Azure Bot Service. Der Dienst definiert eine REST-API und ein Aktivitätsprotokoll für die Interaktion zwischen Ihrem Bot und Kanälen oder Benutzern.The service defines a REST API and an activity protocol for how your bot and channels or users can interact. Das SDK baut auf dieser REST-API auf und bietet eine Abstraktion des Diensts, sodass Sie sich auf die Konversationslogik konzentrieren können.The SDK builds upon this REST API and provides an abstraction of the service so that you can focus on the conversational logic. Obwohl Sie den REST-Dienst nicht verstehen müssen, um das SDK zu verwenden, kann es hilfreich sein, einige seiner Features zu verstehen.While you don't need to understand the REST service to use the SDK, understanding some of its features can be helpful.

Bots sind Apps, die über eine Konversationsschnittstelle verfügen.Bots are apps that have a conversational interface. Sie können verwendet werden, um einfache, sich wiederholende Aufgaben, z.B. das Aufnehmen einer Tischreservierung zum Abendessen oder das Erfassen von Profilinformationen auf automatisierte Systeme zu übertragen, die u.U. keinen direkten Benutzereingriff mehr erfordern.They can be used to shift simple, repetitive tasks, such as taking a dinner reservation or gathering profile information, on to automated systems that may no longer require direct human intervention. Benutzer kommunizieren mit einem Bot mithilfe von Text, interaktiven Karten und Spracheingabe/-ausgabe.Users converse with a bot using text, interactive cards, and speech. Bei einer Botinteraktion kann es sich um eine kurze Frage und Antwort oder auch um eine komplexe Konversation handeln, die auf intelligente Weise den Zugriff auf Dienste bereitstellt.A bot interaction can be a quick question and answer, or it can be a sophisticated conversation that intelligently provides access to services.

Hinweis

Die Unterstützung für funktionen, die vom SDK und der REST-API bereitgestellt werden, variiert je nach Kanal.Support for features provided by the SDK and REST API varies by channel. Sie können Ihren Bot mithilfe der Bot Framework Emulator testen. Sie sollten jedoch auch alle Features Ihres Bots auf jedem Kanal testen, in dem Sie Ihren Bot verfügbar machen möchten.You can test your bot using the Bot Framework Emulator, but you should also test all features of your bot on each channel in which you intend to make your bot available.

Interaktionen umfassen den Austausch von Aktivitäten, die wiederum verarbeitet werden.Interactions involve the exchange of activities, which are handled in turns.

AktivitätenActivities

Jede Interaktion zwischen dem Benutzer (oder einem Kanal) und dem Bot wird als Aktivität dargestellt.Every interaction between the user (or a channel) and the bot is represented as an activity. Das Bot Framework Activity-Schema definiert die Aktivitäten, die zwischen einem Benutzer oder Kanal und einem Bot ausgetauscht werden können.The Bot Framework Activity schema defines the activities that can be exchanged between a user or channel and a bot. Aktivitäten können menschliche Texte oder Sprache, App-zu-App-Benachrichtigungen, Reaktionen auf andere Nachrichten usw. darstellen.Activities can represent human text or speech, app-to-app notifications, reactions to other messages, and so on.

TurnsTurns

In einer Konversation sprechen die Personen häufig einzeln. Sie wechseln sich also ab.In a conversation, people often speak one-at-a-time, taking turns speaking. Ein Bot reagiert im Allgemeinen auf die Eingabe eines Benutzers.With a bot, it generally reacts to user input. Im Bot Framework SDK besteht ein Turn (Durchlauf) aus der eingehenden Aktivität des Benutzers für den Bot und einer beliebigen Aktivität, die vom Bot als direkte Antwort zurück an den Benutzer gesendet wird.Within the Bot Framework SDK, a turn consists of the user's incoming activity to the bot and any activity the bot sends back to the user as an immediate response. Sie können sich einen Turn als die Verarbeitung vorstellen, die dem Bot zugeordnet ist, der eine bestimmte Aktivität empfängt.You can think of a turn as the processing associated with the bot receiving a given activity.

Beispielsweise kann ein Benutzer einen Bot bitten, eine bestimmte Aufgabe auszuführen.For example, a user might ask a bot to perform a certain task. Der Bot antwortet möglicherweise mit einer Frage, um weitere Informationen zur Aufgabe zu erhalten. An diesem Punkt endet dieser Turn.The bot might respond with a question to get more information about the task, at which point this turn ends. Beim nächsten Durchlauf empfängt der Bot eine neue Nachricht vom Benutzer, die die Antwort auf die Frage des Bots enthalten kann, oder es kann eine Änderung des Betreffs oder eine Anforderung darstellen, die ursprüngliche Anforderung zum Ausführen der Aufgabe zu ignorieren.On the next turn, the bot receives a new message from the user that might contain the answer to the bot's question, or it might represent a change of subject or a request to ignore the initial request to perform the task.

BotanwendungsstrukturBot application structure

Das SDK definiert eine Botklasse, die die Konversationsursachen für die Bot-App verarbeitet.The SDK defines a bot class that handles the conversational reasoning for the bot app. Die Botklasse:The bot class:

  • Erkennt und interpretiert die Eingabe des Benutzers.Recognizes and interprets the user's input.
  • Gründe für die Eingabe und die Durchführung relevanter Aufgaben.Reasons about the input and performs relevant tasks.
  • Generiert Antworten dazu, was der Bot tut oder ausgeführt hat.Generates responses about what the bot is doing or has done.

Das SDK definiert auch eine Adapterklasse, die die Konnektivität mit den Kanälen verarbeitet.The SDK also defines an adapter class that handles connectivity with the channels. Der Adapter:The adapter:

  • Stellt eine Methode zum Verarbeiten von Anforderungen von - und -Methoden zum Generieren von Anforderungen an den Kanal des Benutzers bereit.Provides a method for handling requests from and methods for generating requests to the user's channel.
  • Enthält eine Middlewarepipeline, die die Turn-Verarbeitung außerhalb des Turn-Handlers Ihres Bots umfasst.Includes a middleware pipeline, which includes turn processing outside of your bot's turn handler.
  • Ruft den Turn-Handler des Bots auf und fängt Fehler ab, die im Turn-Handler nicht anderweitig behandelt werden.Calls the bot's turn handler and catches errors not otherwise handled in the turn handler.

Darüber hinaus müssen Bots häufig den Zustand jedes Durchzugs abrufen und speichern.In addition, bots often need to retrieve and store state each turn. Dies wird über Die Speicher-, Botzustands- und Eigenschaftenaccessorklassen verarbeitet.This is handled through storage, bot state, and property accessor classes. Das SDK stellt keinen integrierten Speicher bereit, stellt jedoch Abstraktionen für den Speicher und einige Implementierungen einer Speicherebene bereit.The SDK does not provide built-in storage, but does provide abstractions for storage and a few implementations of a storage layer. Im Thema Verwalten des Zustands werden diese Zustands- und Speicherfeatures beschrieben.The managing state topic describes these state and storage features.

Ein Bot verfügt über Konnektivitäts- und Überlegungselemente sowie eine Abstraktion für den Zustand.A bot has connectivity and reasoning elements, and an abstraction for state

Für das SDK ist es nicht erforderlich, dass Sie eine bestimmte Anwendungsschicht verwenden, um Webanforderungen zu senden und zu empfangen.The SDK does not require you use a specific application layer to send and receive web requests. Der Bot Framework enthält Vorlagen und Beispiele für ASP.NET (C#), restify (JavaScript) und aiohttp (Python).The Bot Framework has templates and samples for ASP.NET (C#), restify (JavaScript), and aiohttp (Python). Sie können jedoch eine unterschiedliche Anwendungsschicht für Ihre App verwenden.However, you can choose to use a differ application layer for your app.

Wenn Sie einen Bot mit dem SDK erstellen, geben Sie den Code an, um den HTTP-Datenverkehr zu empfangen und an den Adapter weiterzuleiten.When you create a bot using the SDK, you provide the code to receive the HTTP traffic and forward it to the adapter. Die Bot Framework enthält einige Vorlagen und Beispiele, mit denen Sie Ihre eigenen Bots entwickeln können.The Bot Framework provides a few templates and samples that you can use to develop your own bots.

Bot-LogikBot logic

Das Bot-Objekt enthält die Konversationslogik oder Logik für einen Turn und macht einen Turn-Handler verfügbar. Dies ist die Methode, die eingehende Aktivitäten vom Botadapter akzeptieren kann.The bot object contains the conversational reasoning or logic for a turn and exposes a turn handler, which is the method that can accept incoming activities from the bot adapter.

Das SDK bietet verschiedene Paradigmen für die Verwaltung Ihrer Botlogik.The SDK provides a couple different paradigms for managing your bot logic.

  • Aktivitätshandler stellen ein ereignisgesteuertes Modell bereit, in dem die eingehenden Aktivitätstypen und Untertypen die Ereignisse sind.Activity handlers provide an event-driven model in which the incoming activity types and sub-types are the events. Dies kann für Bots mit begrenzten, kurzen Interaktionen mit dem Benutzer geeignet sein.This can be good for bots that have limited, short interactions with the user.
    • Verwenden Sie einen Aktivitätshandler, und implementieren Sie Handler für jeden Aktivitätstyp oder Untertyp, auf den Ihr Bot reagiert.Use an activity handler and implement handlers for each activity type or sub-type your bot will recognize and react to.
    • Verwenden Sie einen Teams-Aktivitätshandler, um Bots zu erstellen, die eine Verbindung mit dem Teams-Kanal herstellen können.Use a Teams activity handler to create bots that can connect to the Teams channel. (Der Teams Kanal erfordert, dass der Bot ein kanalspezifisches Verhalten verarbeitet.)(The Teams channel requires the bot to handle some channel-specific behavior.)
  • Die Dialogbibliothek bietet ein zustandsbasiertes Modell zum Verwalten einer Konversation mit langer Laufzeit mit dem Benutzer.The dialogs library provides a state-based model to manage a long-running conversation with the user.
    • Verwenden Sie einen Aktivitätshandler und einen Komponentendialog für größtenteils sequenzielle Konversationen.Use an activity handler and a component dialog for largely sequential conversations. Weitere Informationen finden Sie unter Komponenten- und Wasserfalldialoge.See about component and waterfall dialogs for more information.
    • Verwenden Sie einen Dialog-Manager und einen adaptiven Dialog für einen flexiblen Konversationsfluss, der einen größeren Bereich der Benutzerinteraktion verarbeiten kann.Use a dialog manager and an adaptive dialog for flexible conversation flow that can handle a wider range of user interaction. Weitere Informationen finden Sie in der Einführung in adaptive Dialoge.See the introduction to adaptive dialogs for more information.
  • Implementieren Sie Ihre eigene Botklasse, und stellen Sie Ihre eigene Logik für die Verarbeitung jedes Durchgangs bereit.Implement your own bot class and provide your own logic for handling each turn. Ein Beispiel dafür, wie dies aussehen könnte, finden Sie unter Erstellen eigener Eingabeaufforderungen zum Erfassen von Benutzereingaben.See how to create your own prompts to gather user input for an example of what this might look like.

Der BotadapterThe bot adapter

Der Adapter verfügt über eine Prozessaktivitätsmethode zum Starten eines Durchlaufs.The adapter has a process activity method for starting a turn.

  • Er verwendet den Anforderungstext (die Anforderungsnutzlast, übersetzt in eine Aktivität) und den Anforderungsheader als Argumente.It takes the request body (the request payload, translated to an activity) and the request header as arguments.
  • Er überprüft, ob der Authentifizierungsheader gültig ist.It checks whether the authentication header is valid.
  • Es erstellt ein Kontextobjekt für den Turn.It creates a context object for the turn.
  • Dies wird über die Middlewarepipeline ausgeführt.It runs this through its middleware pipeline.
  • Die Aktivität wird an den Turn-Handler des Botobjekts gesendet.It sends the activity to the bot object's turn handler.

Der Adapter hat außerdem Folgendes:The adapter also:

  • Formatiert und sendet Antwortaktivitäten.Formats and sends response activities. Diese Antworten sind in der Regel Nachrichten für den Benutzer, können aber auch Informationen enthalten, die vom Kanal des Benutzers direkt genutzt werden.These responses are typically messages for the user, but can also include information to be consumed by the user's channel directly.
  • Stellt andere Methoden zur Verfügung, die von der Bot Connector-REST-API bereitgestellt werden, z. B. Aktualisieren von Nachrichten und Löschen von Nachrichten.Surfaces other methods provided by the Bot Connector REST API, such as update message and delete message.
  • Fängt Fehler oder Ausnahmen ab, die für den Turn nicht anderweitig abgefangen wurden.Catches errors or exceptions not otherwise caught for the turn.

Der Turn-KontextThe turn context

Das Durchlaufkontext-Objekt (turn context) enthält Informationen zur Aktivität, z.B. den Absender und Empfänger, den Kanal und andere Daten, die zum Verarbeiten der Aktivität benötigt werden.The turn context object provides information about the activity such as the sender and receiver, the channel, and other data needed to process the activity. Außerdem ermöglicht das Objekt das Hinzufügen von Informationen während des Turns für mehrere Ebenen des Bots.It also allows for the addition of information during the turn across various layers of the bot.

Der Turn-Kontext ist eine der wichtigsten Abstraktionen im SDK.The turn context is one of the most important abstractions in the SDK. Sie übergibt nicht nur die eingehende Aktivität an alle Middlewarekomponenten und die Anwendungslogik, sondern stellt auch den Mechanismus bereit, mit dem die Middlewarekomponenten und die Botlogik ausgehende Aktivitäten senden können.Not only does it carry the inbound activity to all the middleware components and the application logic but it also provides the mechanism whereby the middleware components and the bot logic can send outbound activities.

MiddlewareMiddleware

Die Middleware ist ähnlich aufgebaut wie jede andere Messagingmiddleware. Sie besteht aus einem linearen Satz von Komponenten, die nacheinander ausgeführt werden, sodass jede Komponente einen Vorgang für die Aktivität ausführen kann.Middleware is much like any other messaging middleware, comprising a linear set of components that are each executed in order, giving each a chance to operate on the activity. In der letzten Phase der Middlewarepipeline erfolgt ein Rückruf an den Turn-Handler für die Botklasse, die die Anwendung mit der Methode Prozessaktivität des Adapters registriert hat.The final stage of the middleware pipeline is a callback to the turn handler on the bot class the application has registered with the adapter's process activity method. Middleware implementiert eine On-Turn-Methode, die der Adapter aufruft.Middleware implements an on turn method which the adapter calls.

Der Turn-Handler verwendet einen Turn-Kontext als Argument. In der Regel verarbeitet die anwendungslogik, die in der Turn-Handlerfunktion ausgeführt wird, den Inhalt der eingehenden Aktivität und generiert eine oder mehrere Aktivitäten als Antwort und sendet diese mithilfe der Send-Aktivitätsfunktion im Turn-Kontext.The turn handler takes a turn context as its argument, typically the application logic running inside the turn handler function will process the inbound activity's content and generate one or more activities in response, sending these out using the send activity function on the turn context. Durch den Aufruf von send activity für den Turn-Kontext werden die Middlewarekomponenten für die ausgehenden Aktivitäten aufgerufen.Calling send activity on the turn context will cause the middleware components to be invoked on the outbound activities. Middlewarekomponenten werden vor und nach der Turn-Handlerfunktion des Bots ausgeführt.Middleware components execute before and after the bot's turn handler function. Die Ausführung ist grundsätzlich geschachtelt und wird daher manchmal als "Onion" bezeichnet.The execution is inherently nested and, as such, sometimes referred to being like an onion.

Im Thema Middleware wird Middleware eingehender beschrieben.The middleware topic describes middleware in greater depth.

Botzustand und -speicherungBot state and storage

Wie bei anderen Web-Apps ist ein Bot grundsätzlich zustandslos.As with other web apps, a bot is inherently stateless. Der Zustand innerhalb eines Bots folgt den gleichen Paradigmen wie moderne Webanwendungen, und das Bot Framework SDK stellt Abstraktionen der Speicherebene und Zustandsverwaltung bereit, um die Zustandsverwaltung zu vereinfachen.State within a bot follows the same paradigms as modern web applications, and the Bot Framework SDK provides storage layer and state management abstractions to make state management easier.

Im Thema Verwalten des Zustands werden diese Zustands- und Speicherfunktionen beschrieben.The managing state topic describes these state and storage features.

Messagingendpunkt und -bereitstellungMessaging endpoint and provisioning

In der Regel benötigt Ihre Anwendung einen REST-Endpunkt, an dem Nachrichten empfangen werden.Typically, your application will need a REST endpoint at which to receive messages. Außerdem müssen Ressourcen für Ihren Bot in Übereinstimmung mit der Plattform bereitgestellt werden, die Sie verwenden möchten.It will also need to provision resources for your bot in accordance with the platform you decide to use.

Befolgen Sie die Schnellstartanleitung Erstellen eines Bots, um einen einfachen Echobot zu erstellen und zu testen.Follow the Create a bot quickstart to create and test a simple echo bot.

HTTP-DetailsHTTP Details

Aktivitäten kommen im Bot vom Bot Framework-Dienst über eine HTTP POST-Anforderung an.Activities arrive at the bot from the Bot Framework Service via an HTTP POST request. Der Bot antwortet auf die eingehende POST-Anforderung mit dem HTTP-Statuscode 200.The bot responds to the inbound POST request with a 200 HTTP status code. Aktivitäten, die vom Bot an den Kanal gesendet werden, werden in einer separaten HTTP POST-Anforderung an den Bot Framework-Dienst gesendet.Activities sent from the bot to the channel are sent on a separate HTTP POST to the Bot Framework Service. Dies wird wiederum mit dem HTTP-Statuscode 200 bestätigt.This, in turn, is acknowledged with a 200 HTTP status code.

Das Protokoll gibt nicht die Reihenfolge an, in der diese POST-Anforderungen und ihre Bestätigungen vorgenommen werden.The protocol doesn't specify the order in which these POST requests and their acknowledgments are made. Damit sie zu allgemeinen HTTP-Dienstframeworks passen, sind diese Anforderungen normalerweise geschachtelt. Dies bedeutet, dass die ausgehende HTTP-Anforderung vom Bot innerhalb des Bereichs der eingehenden HTTP-Anforderung gesendet wird.However, to fit with common HTTP service frameworks, typically these requests are nested, meaning that the outbound HTTP request is made from the bot within the scope of the inbound HTTP request. Dieses Muster wird im obigen Diagramm veranschaulicht.This pattern is illustrated in the earlier diagram. Da hier zwei einzelne HTTP-Verbindungen aufeinander folgen, muss das Sicherheitsmodell beide abdecken.Since there are two distinct HTTP connections back to back, the security model must provide for both.

Hinweis

Der Bot hat 15 Sekunden Zeit, um den Anruf auf den meisten Kanälen mit dem Status 200 zu bestätigen.The bot has 15 seconds to acknowledge the call with a status 200 on most channels. Wenn der Bot nicht innerhalb von 15 Sekunden antwortet, tritt ein HTTP GatewayTimeout-Fehler (504) auf.If the bot does not respond within 15 seconds, an HTTP GatewayTimeout error (504) occurs.

Stapel für die AktivitätsverarbeitungThe activity processing stack

Sehen wir uns das vorherige Sequenzdiagramm mit dem Schwerpunkt auf dem Eintreffen einer Nachrichtenaktivität an.Let's drill into the previous sequence diagram with a focus on the arrival of a message activity.

Stapel für die Aktivitätsverarbeitung

Im obigen Beispiel hat der Bot auf die Nachrichtenaktivität mit einer anderen Nachrichtenaktivität geantwortet, die die gleiche Textnachricht enthält.In the example above, the bot replied to the message activity with another message activity containing the same text message. Die Verarbeitung beginnt damit, dass die HTTP POST-Anforderung auf dem Webserver ankommt. Dabei werden die Aktivitätsinformationen als JSON-Nutzlast übertragen.Processing starts with the HTTP POST request, with the activity information carried as a JSON payload, arriving at the web server. In C# ist dies in der Regel ein ASP.NET-Projekt. In einem JavaScript Node.js-Projekt ist dies wahrscheinlich eines der beliebten Frameworks wie Express oder restify.In C# this will typically be an ASP.NET project, in a JavaScript Node.js project this is likely to be one of the popular frameworks such as Express or restify.

Der Adapter, eine integrierte Komponente des SDK, ist das Kernstück der SDK-Runtime.The adapter, an integrated component of the SDK, is the core of the SDK runtime. Die Aktivität wird als JSON (JavaScript Object Notation) im HTTP-POST-Text übertragen.The activity is carried as JSON in the HTTP POST body. Dieser JSON-Code wird deserialisiert, um das Aktivitätsobjekt zu erstellen, das dann über seine Prozessaktivitätsmethode an den Adapter übergeben wird. This JSON is deserialized to create the activity object that is then handed to the adapter through its process activity method. Der Adapter erstellt nach dem Empfang der Aktivität einen Turn-Kontext und ruft die Middleware auf.On receiving the activity, the adapter creates a turn context and calls the middleware.

Der Turn-Kontext stellt wie bereits erwähnt den Mechanismus bereit, mit dem der Bot ausgehende Aktivitäten sendet (in der Regel als Reaktion auf eine eingehende Aktivität).As mentioned above, the turn context provides the mechanism for the bot to send outbound activities, most often in response to an inbound activity. Um dies zu erreichen, stellt der Turn-Kontext Antwortmethoden zum Senden, Aktualisieren und Löschen von Aktivitätsantworten zur Wahl.To achieve this, the turn context provides send, update, and delete activity response methods. Jede Antwortmethode wird in einem asynchronen Prozess ausgeführt.Each response method runs in an asynchronous process.

Wichtig

Der Thread, der den primären Botdurchlauf verarbeitet, löscht am Ende das Kontextobjekt.The thread handling the primary bot turn deals with disposing of the context object when it is done. Stellen Sie sicher, dass Sie für alle Aktivitätsaufrufe await verwenden, damit der primäre Thread auf die generierte Aktivität wartet, bevor er die Verarbeitung beendet und den Turn-Kontext löscht.Be sure to await any activity calls so the primary thread will wait on the generated activity before finishing its processing and disposing of the turn context. Wenn eine Antwort (einschließlich der Handler) sehr lange dauert und versucht wird, Vorgänge für das Kontextobjekt durchzuführen, tritt ggf. ein Fehler der Art Context was disposed (Kontext wurde verworfen) auf.Otherwise, if a response (including its handlers) takes any significant amount of time and tries to act on the context object, it may get a context was disposed error.

BotvorlagenBot templates

Sie müssen die Anwendungsschicht auswählen, die für Ihre App verwendet wird. Der Bot Framework verfügt jedoch über Vorlagen und Beispiele für ASP.NET (C#), restify (JavaScript) und aiohttp (Python).You need to choose the application layer use for your app; however, the Bot Framework has templates and samples for ASP.NET (C#), restify (JavaScript), and aiohttp (Python). Die Dokumentation wird geschrieben, vorausgesetzt, Sie verwenden eine dieser Plattformen, aber das SDK erfordert sie nicht von Ihnen.The documentation is written assuming you use one of these platforms, but the SDK does not require it of you. Anweisungen zum Zugreifen auf und Installieren der Vorlagen finden Sie im Schnellstart Erstellen eines Bots.See the Create a bot quickstart for instructions on how to access and install the templates.

Ein Bot ist eine Webanwendung, und Vorlagen werden für jede Sprachversion des SDK bereitgestellt.A bot is a web application, and templates are provided for each language version of the SDK. Alle Vorlagen stellen eine Standardendpunktimplementierung und einen Adapter bereit.All templates provide a default endpoint implementation and adapter. Jede Vorlage enthält Folgendes:Each template includes:

  • RessourcenbereitstellungResource provisioning
  • Eine sprachspezifische HTTP-Endpunktimplementierung, die eingehende Aktivitäten an einen Adapter weiter leitet.A language-specific HTTP endpoint implementation that routes incoming activities to an adapter.
  • Ein AdapterobjektAn adapter object
  • Ein BotobjektA bot object

Der Hauptunterschied zwischen den verschiedenen Vorlagentypen liegt im Botobjekt.The main difference between the different template types is in the bot object. Die Vorlagen sind:The templates are:

  • Leerer BotEmpty bot
    • Enthält einen Aktivitätshandler, der einen Benutzer bei der Konversation empfängt, indem er beim ersten Durchknicken der Konversation eine "Hello World"-Nachricht sendet.Includes an activity handler that welcomes a user to the conversation by sending a "hello world" message on the first turn of the conversation.
  • EchobotEcho bot
    • Verwendet einen Aktivitätshandler, um Benutzer zu empfangen und Benutzereingaben zurück zu geben.Uses an activity handler to welcome users and echo back user input.
  • Core-BotCore bot
    • Vereint viele Features des SDK und veranschaulicht bewährte Methoden für einen Bot.Brings together many features of the SDK and demonstrates best practices for a bot.
    • Verwendet einen Aktivitätshandler, um Benutzer willkommen zu heißen.Uses an activity handler to welcome users.
    • Verwendet einen Komponentendialog und untergeordnete Dialoge, um die Konversation zu verwalten.Uses a component dialog and child dialogs to manage the conversation.
    • Die Dialoge verwenden Language Understanding (LUIS) und QnA Maker Features.The dialogs use Language Understanding (LUIS) and QnA Maker features.

Zusätzliche InformationenAdditional information

Verwalten von BotressourcenManaging bot resources

Die Botressourcen wie App-ID, Kennwörter, Schlüssel oder Geheimnisse für verbundene Dienste müssen ordnungsgemäß verwaltet werden.The bot resources, such as app ID, passwords, keys or secrets for connected services, will need to be managed appropriately. Weitere Informationen dazu finden Sie in den Bot Framework sicherheitsrichtlinien und unter Verwalten von Botressourcen.For more on how to do so, see the Bot Framework security guidelines and about managing bot resources.

KanaladapterChannel adapters

Mit dem SDK können Sie auch Kanaladapter verwenden, bei denen der Adapter selbst zusätzlich die Aufgaben ausführt, die der Bot Connector-Dienst normalerweise für einen Kanal ausführen würde.The SDK also lets you use channel adapters, in which the adapter itself additionally performs the tasks that the Bot Connector Service would normal do for a channel.

Das SDK stellt einige Kanaladapter in einigen Sprachen bereit.The SDK provides a few channel adapters in some languages. Weitere Kanaladapter sind über botkit und Community verfügbar.More channel adapters are available through the Botkit and Community repositories. Weitere Informationen finden Sie in der Bot Framework DES SDK-Repositorys mit Kanälen und Adaptern.For more details, see the Bot Framework SDK repository's table of channels and adapters.

Die Bot Connector-REST-APIThe Bot Connector REST API

Das Bot Framework SDK umschließt und baut auf der Bot Connector-REST-API auf.The Bot Framework SDK wraps and builds upon the Bot Connector REST API. Wenn Sie die zugrunde liegenden HTTP-Anforderungen verstehen möchten, die das SDK unterstützen, lesen Sie die Artikel Connectorauthentifizierung und zugehörige Artikel.If you want to understand the underlying HTTP requests that support the SDK, see the Connector authentication and associated articles. Die Aktivitäten, die ein Bot sendet und empfängt, entsprechen dem Bot Framework Aktivitätsschema.The activities a bot sends and receives conform to the Bot Framework Activity schema.

Nächste SchritteNext steps