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 macht Sie für Kanäle verfügbar.It hosts bots and makes them available to channels.

Der bot Framework-Dienst, bei dem es sich um eine Komponente des Azure bot Service handelt, sendet Informationen zwischen der mit bot verbundenen app (z. b. Facebook oder Slack usw .) 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 Konversations Update Aktivitäten zu unterscheiden, überprüfen Sie, wer in der hinzugefügten Eigenschaft 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 Nachrichten Aktivität reagieren. Es ist nicht ungewöhnlich, dass ein Bot auf eine Aktivität zum Aktualisieren von Konversation antwortet, indem er Begrüßungstext in einer Nachrichten Aktivitä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 bei einem Benutzer.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, um zu erfahren, wie Ihr bot und ihre Kanäle oder Benutzer interagieren können.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 stellt eine Abstraktion des Dienstanbieter bereit, sodass Sie sich auf die Konversations Logik 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 kennen müssen, um das SDK verwenden zu können, kann es hilfreich sein, einige 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 mit einer Konversations Schnittstelle.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 der vom SDK und der Rest-API bereitgestellten Funktionen variiert je nach Kanal.Support for features provided by the SDK and REST API varies by channel. Sie können den bot mit dem bot Framework-Emulator testen, aber Sie sollten auch alle Features Ihres bot auf jedem Kanal testen, in dem Sie den bot zur Verfügung stellen 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 in Turn -Aktivitäten behandelt werden.Interactions involve the exchange of activities , which are handled in turns.

activitiesActivities

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 Schema der bot Framework- Aktivität 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 menschliches Text oder Spracheingaben, APP-zu-app-Benachrichtigungen, Reaktionen auf andere Meldungen 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 eine Reihe 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.

Ein Benutzer könnte z. b. 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 über den Task zu erhalten. an dieser Stelle wird diese Aufgabe beendet.The bot might respond with a question to get more information about the task, at which point this turn ends. Beim nächsten Mal erhält der bot eine neue Meldung vom Benutzer, die möglicherweise die Antwort auf die Frage des Bots enthält, oder er kann eine Änderung des Subjekts oder eine Anforderung darstellen, um die anfä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.

Bot-Anwendungs StrukturBot application structure

Das SDK definiert eine bot -Klasse, die die Konversations Argumentation für die bot-App behandelt.The SDK defines a bot class that handles the conversational reasoning for the bot app. Die bot-Klasse:The bot class:

  • Erkennt und interpretiert die Eingabe des Benutzers.Recognizes and interprets the user's input.
  • Gründe für die Eingabe und ausführen relevanter Tasks.Reasons about the input and performs relevant tasks.
  • Generiert Antworten zu den Vorgängen, die der bot durchführt oder ausgeführt hat.Generates responses about what the bot is doing or has done.

Das SDK definiert außerdem eine Adapter Klasse, die die Konnektivität mit den Kanälen behandelt.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 Erstellen von Anforderungen für 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 das Umwandeln außerhalb des Turn-Handlers Ihres bot einschließt.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 ein, die andernfalls nicht im Turn-Handler behandelt werden.Calls the bot's turn handler and catches errors not otherwise handled in the turn handler.

Außerdem müssen Bots oft jeden Turn-Zustand abrufen und speichern.In addition, bots often need to retrieve and store state each turn. Dies wird durch Speicher -, botzustands -und eigenschaftenaccessorklassen gehandhabt.This is handled through storage , bot state , and property accessor classes. Das SDK stellt keinen integrierten Speicher bereit, bietet jedoch Abstraktionen für den Speicher und einige Implementierungen einer Speicher Ebene.The SDK does not provide built-in storage, but does provide abstractions for storage and a few implementations of a storage layer. Im Thema Managing State werden diese Zustands-und Speicher Features beschrieben.The managing state topic describes these state and storage features.

Ein Bot hat Konnektivitätsprobleme und argumentatenelemente sowie eine Abstraktion für den ZustandA bot has connectivity and reasoning elements, and an abstraction for state

Das SDK erfordert nicht, 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. Bot Framework verfügt über 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. Das bot Framework bietet einige Vorlagen und Beispiele, die Sie verwenden können, um eigene Bots zu entwickeln.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 Konversations-und Logik für eine Reihe und stellt einen Turn-Handler zur Verfügung, bei dem es sich um die Methode handelt, die eingehende Aktivitäten vom botadapter annehmen 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 stellt verschiedene Paradigmen zum Verwalten Ihrer botlogik bereit.The SDK provides a couple different paradigms for managing your bot logic.

  • Aktivitäts Handler stellen ein ereignisgesteuerte Modell bereit, bei 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 eignet sich gut für Bots mit eingeschränkten, kurzen Interaktionen mit dem Benutzer.This can be good for bots that have limited, short interactions with the user.
    • Verwenden eines Aktivitäts Handler und Implementieren von Handlern für jeden Aktivitätstyp oder Untertyp, auf den der Bot reagiert und darauf reagiert.Use an activity handler and implement handlers for each activity type or sub-type your bot will recognize and react to.
    • Erstellen Sie mithilfe eines Teams-Aktivitäts Handlers Bots, 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 kanalchannel erfordert, dass der bot ein Kanal spezifisches Verhalten behandelt.)(The Teams channel requires the bot to handle some channel-specific behavior.)
  • Die Dialogfelder Bibliothek bietet ein Zustands basiertes Modell, mit dem Sie eine lang andauernden Konversation mit dem Benutzer verwalten können.The dialogs library provides a state-based model to manage a long-running conversation with the user.
    • Verwenden eines Aktivitäts Handlers und eines Komponenten Dialogfelds für größtenteils sequenzielle Konversationen.Use an activity handler and a component dialog for largely sequential conversations. Weitere Informationen finden Sie unter Informationen zu den Dialogfeldern für Komponenten und WasserfallSee about component and waterfall dialogs for more information.
    • Verwenden Sie einen Dialog-Manager und einen adaptiven Dialog für einen flexiblen Konversations Fluss, der einen breiteren Bereich von Benutzerinteraktionen 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 eine eigene bot-Klasse, und stellen Sie Ihre eigene Logik zum Behandeln der einzelnen Turn-Geräte bereitImplement 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 Aufforderungen 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 Prozess Aktivitäts Methode zum Starten eines Turn-Vorgangs.The adapter has a process activity method for starting a turn.

  • Er übernimmt den Anforderungs Text (die Anforderungs Nutzlast, übersetzt in eine Aktivität) und den Anforderungs Header 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 Authentifizierungs Header gültig ist.It checks whether the authentication header is valid.
  • Er erstellt ein Kontext Objekt für den Turn.It creates a context object for the turn.
  • Dies erfolgt über die middlewarepipeline. middlewareIt runs this through its middleware pipeline.
  • Die Aktivität wird an den Turn-Handler des bot-Objekts gesendet.It sends the activity to the bot object's turn handler.

Der Adapter ist auch:The adapter also:

  • Formatiert und sendet Antwort Aktivitäten.Formats and sends response activities. Diese Antworten sind in der Regel Meldungen 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.
  • Zeigt andere Methoden an, die von der botverbinder-Rest-API bereitgestellt werden, z. b. Update Nachricht und Lösch NachrichtSurfaces 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 führt nicht nur die eingehende Aktivität für alle middlewarekomponenten und die Anwendungslogik aus, sondern bietet auch den Mechanismus, mit dem die Middleware-Komponenten und die bot-Logik 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 vom Adapter aufgerufen wird.Middleware implements an on turn method which the adapter calls.

Der Turn-Handler nimmt einen Turn-Kontext als Argument an. 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 Funktion Send Activity 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 Handler-Funktion des bot ausgeführt.Middleware components execute before and after the bot's turn handler function. Die Ausführung ist von Natur aus eingebettet und wird manchmal auch als Zwiebel bezeichnet.The execution is inherently nested and, as such, sometimes referred to being like an onion.

Im Thema Middleware wird die Middleware ausführlicher beschrieben.The middleware topic describes middleware in greater depth.

Bot-Status und-SpeicherBot 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 Status innerhalb eines Bots folgt denselben Paradigmen wie moderne Webanwendungen, und das bot Framework SDK bietet Abstraktionen für die Speicherschicht und die Zustands Verwaltung, um die Zustands Verwaltung 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 Managing State werden diese Zustands-und Speicher Features beschrieben.The managing state topic describes these state and storage features.

Messaging Endpunkt 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 Sie Ressourcen für Ihren bot entsprechend der Plattform bereitstellen, 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 einen der Schnellstarts (c#, JavaScript, python), um einen einfachen Echo bot zu erstellen und zu testen.Follow one of the quickstarts (C#, JavaScript, Python) 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 deren Bestätigungen erstellt 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 vorherigen 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, um den-Rückruf mit dem Status 200 in den meisten Kanälen 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 an, das den Schwerpunkt auf den Eingang einer Nachrichten Aktivität hat.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, das in einem JavaScript-Node.js Projekt wahrscheinlich eines der beliebtesten Frameworks wie z. b. Express oder restify ist.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. Diese JSON-Datei wird deserialisiert, um das Aktivitäts Objekt zu erstellen, das dann über die Prozess Aktivitäts Methode 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 Send -, Update -und Delete Activity Response-Methoden bereit.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.

Bot-VorlagenBot templates

Sie müssen die Anwendungsschicht verwenden, die für Ihre APP verwendet werden soll. Das bot Framework enthält jedoch 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). In der Dokumentation wird davon ausgegangen, dass Sie eine dieser Plattformen verwenden, aber das SDK erfordert dies nicht.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 in den Schnellstarts (c#, JavaScript, python).See the quickstarts (C#, JavaScript, Python) for instructions on how to access and install the templates.

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

  • RessourcenbereitstellungResource provisioning
  • Eine sprachspezifische HTTP-Endpunkt Implementierung, die eingehende Aktivitäten an einen Adapter weiterleitet.A language-specific HTTP endpoint implementation that routes incoming activities to an adapter.
  • Ein Adapter ObjektAn adapter object
  • Ein bot-ObjektA bot object

Der Hauptunterschied zwischen den verschiedenen Vorlagen Typen liegt im bot-Objekt.The main difference between the different template types is in the bot object. Die Vorlagen lauten:The templates are:

  • Leerer botEmpty bot
    • Schließt einen Aktivitäts Handler ein, der einen Benutzer für die Konversation empfängt, indem er eine "Hello World"-Meldung an den ersten Ende der Konversation 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äts Handler, um Benutzer zu begrüßen und Benutzereingaben wiederzugeben.Uses an activity handler to welcome users and echo back user input.
  • KernbotCore bot
    • Vereint viele Features des SDK und zeigt bewährte Methoden für einen bot.Brings together many features of the SDK and demonstrates best practices for a bot.
    • Verwendet einen Aktivitäts Handler, um Benutzer zu begrüßen.Uses an activity handler to welcome users.
    • Verwendet ein Komponenten Dialogfeld und untergeordnete Dialoge zum Verwalten der Konversation.Uses a component dialog and child dialogs to manage the conversation.
    • In den Dialogfeldern werden die Features Language Understanding (Luis) und QnA Maker verwendet.The dialogs use Language Understanding (LUIS) and QnA Maker features.

Zusätzliche InformationenAdditional information

Verwalten von bot-RessourcenManaging 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 hierzu finden Sie unter Sicherheitsrichtlinien für bot Framework und Informationen zur Verwaltung von bot-Ressourcen.For more on how to do so, see the Bot Framework security guidelines and about managing bot resources.

Kanal AdapterChannel adapters

Das SDK ermöglicht Ihnen außerdem die Verwendung von Kanal Adaptern, bei denen der Adapter selbst zusätzlich die Aufgaben ausführt, die der botconnector-Dienst normal 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 bietet einige Kanal Adapter in einigen Sprachen.The SDK provides a few channel adapters in some languages. Weitere Channel-Adapter sind über das botkit und die communitytrepositorys verfügbar.More channel adapters are available through the Botkit and Community repositories. Weitere Informationen finden Sie in der Tabelle mit den Kanälen und Adapterndes bot Framework SDK-Repository.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 botconnector-Rest-API auf.The Bot Framework SDK wraps and builds upon the Bot Connector REST API. Informationen zu den zugrunde liegenden HTTP-Anforderungen, die das SDK unterstützen, finden Sie in der Connector- Authentifizierung und den zugehörigen Artikeln.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äts Schema.The activities a bot sends and receives conform to the Bot Framework Activity schema.

Nächste SchritteNext steps