Informationen zu Skillconsumern

GILT FÜR: SDK v4

Ein Skillconsumer ist ein Bot, der einen oder mehrere Skills aufrufen kann. In Bezug auf Qualifikationen ist ein Stamm-Bot ein Bot für Benutzer und gleichzeitig ein Skill-Consumer.

Aus Sicht des Benutzers ist der Stamm-Bot der Bot, mit dem er interagiert. Aus Sicht der Qualifikation ist der Skill-Consumer der Kanal, über den die Kommunikation mit dem Benutzer erfolgt. (Weitere Informationen finden Sie in der Skills-Übersicht.)

Als Skillconsumer enthält ein Stamm-Bot zusätzliche Logik zum Verwalten von Datenverkehr, der zwischen Bot und Qualifikation fließt:

  • Konfigurationsinformationen für jede Qualifikation, die vom Stamm verwendet wird.
  • Eine Konversations-ID-Factory, mit der der Stamm zwischen der Konversation mit dem Benutzer und der Konversation mit einer Qualifikation hin und her wechseln kann.
  • Ein Skill-Client, mit dem Aktivitäten gepackt und an einen Skill-Bot weitergeleitet werden können.
  • Ein Skill-Handler, der Anforderungen empfangen und Aktivitäten von einem Skill-Bot entpacken kann.

Verwalten von Qualifikationen

Das Starten eines einzelnen Skills und das Ausführen bis zum Abschluss wird verwaltet, indem dem Skillconsumer einige Elemente hinzugefügt werden. Komplexere Szenarien mit mehreren Skills oder Konversationsthreads sind ebenfalls möglich.

Ein Skillconsumer implementiert mindestens zwei HTTP-Endpunkte:

  • Ein Messaging-Endpunkt empfängt Aktivitäten vom Benutzer oder Kanal. Dies ist der übliche Messaging-Endpunkt, den alle Bots implementieren.
  • Ein Skill-Host-Endpunkt für den Empfang von Aktivitäten von einem Skill. Dies dient als Rückruf-URL, die Dienst-URL, auf die der Skill antwortet. (Der Skillconsumer muss Code, der die HTTP-Methodenanforderung vom Skill empfängt, mit einem Skillhandler koppeln.)

Beschreibungen von Qualifikationen

Fügen Sie der Konfigurationsdatei des Skill-Consumers für jede Qualifikation ein Objekt vom Typ Bot Framework-Qualifikation hinzu. Jedes Objekt verfügt über eine ID, eine App-ID und einen Endpunkt für den Skill.

Eigenschaft BESCHREIBUNG
ID Die ID bzw. der Schlüssel der Qualifikation, die bzw. der jeweils für den Skill-Consumer gilt.
App-ID Die appId, die der Bot-Ressource zugewiesen wurde, als die Qualifikation in Azure registriert wurde.
Endpunkt der Qualifikation Der Messaging-Endpunkt der Qualifikation. Dies ist die URL, die vom Consumer zum Kommunizieren mit der Qualifikation verwendet wird.

Skill-Client und Skill-Handler

Der Skill-Consumer verwendet einen Skill-Client, um Aktivitäten an eine Qualifikation zu senden. Der Client führt Folgendes durch:

  • Empfängt eine Aktivität – von einem Benutzer oder vom Consumer generiert – und sendet diese an den Skill.
  • Legt die Service-URL für die an den Skill gesendete Aktivität auf den Skill-Host-Endpunkt des Consumers fest.
  • Ersetzt den ursprünglichen Konversationsverweis durch einen Verweis für die Consumer/Qualifikation-Konversation.
  • Fügt ein Token für die Authentifizierung zwischen Bots hinzu.
  • Sendet die aktualisierte Aktivität an die Qualifikation.

Der Skill-Consumer nutzt einen Skill-Handler, um Aktivitäten von einer Qualifikation zu empfangen. Der Handler führt Folgendes durch:

  • Verarbeitet die REST-API-Methoden des Kanaldiensts.
  • Erzwingt die Authentifizierung und Anspruchsüberprüfung.
  • Ruft den ursprünglichen Konversationsverweis ab.
  • Generiert eine Aktivität für den Adapter des Consumers. Diese Aktivität signalisiert entweder, dass die Qualifikation abgeschlossen ist, oder dass es eine Aktivität ist, die an den Benutzer weitergeleitet werden soll.

Direktes Verwalten von Skills

Sie müssen Ihrem Skill-Consumer Logik hinzufügen, mit der aktive Qualifikationen nachverfolgt werden können. Es bleibt dem Consumer überlassen, wie Qualifikationen im Allgemeinen verwaltet werden, ob mehrere aktive Qualifikationen parallel vorhanden sein können usw. Beispiele für zu berücksichtigende Szenarien:

  • Initiieren einer neuen Consumer/Qualifikation-Konversation. (Wird einer bestimmten Consumer/Benutzer-Konversation zugeordnet.)
    • Legen Sie die value-Eigenschaft der Anfangsaktivität auf eine Qualifikation fest, um dafür Parameter zu übergeben.
  • Fortsetzen einer vorhandenen Consumer/Qualifikation-Konversation.
  • Erkennen einer endOfConversation-Aktivität der Qualifikation als Signal, dass eine Consumer/Qualifikation-Konversation ihr Ende erreicht hat.
    • Überprüfen Sie die value-Eigenschaft der Aktivität, um einen Rückgabewert aus einer Qualifikation abzurufen.
    • Überprüfen Sie den Parameter code, um zu ermitteln, ob für die Qualifikation ein Fehler aufgetreten ist und die Qualifikation ggf. deshalb beendet wurde.
  • Abbrechen einer Qualifikation über den Consumer, indem eine endOfConversation-Aktivität an die Qualifikation gesendet wird.

Informieren Sie sich über das Implementieren eines Skillconsumers für einen Consumer, der einen Skill direkt verwaltet.

Verwalten eines Skills mithilfe eines Skilldialogs

Bei Verwendung der Dialogbibliothek können Sie einen Skilldialog verwenden, um einen Skill zu verwalten. Wenn der Skilldialog aktiv ist, leitet er Aktivitäten an den zugeordneten Skill weiter.

  • Verwenden Sie bei der Skilldialogerstellung den Parameter dialog options, um alle Informationen anzugeben, die für die Verwaltung des Skills durch den Dialog erforderlich sind (etwa die App-ID und die Rückruf-URL des Consumers, die zu verwendende Konversations-ID-Factory, die Eigenschaften des Skills und Ähnliches).
    • Falls Sie mehrere Skills als Dialog verwalten möchten, muss für die einzelnen Skills jeweils ein separater Skilldialog erstellt werden.
    • Der Skilldialog wird häufig einem Komponentendialog hinzugefügt.
  • Verwenden Sie zum Starten des Skilldialogs die Methode begin des Dialogkontexts, und geben Sie die ID des Dialogs an. Verwenden Sie den Parameter options, um die Aktivität anzugeben, die der Consumer als erste Aktivität an den Skill sendet.
  • Der Skilldialog kann wie jeder andere Dialog abgebrochen oder unterbrochen werden. Ein Beispiel finden Sie unter Behandeln von Benutzerunterbrechungen.

Einen Consumer, der zum Verwalten eines Skills einen Dialog verwendet, finden Sie unter Verwenden eines Dialogs zum Nutzen eines Skills.

Verwenden eines Zustellungsmodus für erwartete Antworten

Bots und Skills verwenden den Branchenstandard REST und JSON über HTTPS für die Kommunikation. Normaler Aktivitätsverarbeitungsfluss beginnt, wenn der Stamm-Bot einen Beitrag von einem Kanal am Messaging-Endpunkt empfängt. Der Stamm-Bot sendet dann die Aktivität an den Skill zur Verarbeitung. Antworten von dem Skill werden zurück auf den Skill-Host-Endpunkt des Stamm-Bots und nicht auf den Messaging-Endpunkt gepostet. Schließlich werden die Antworten vom Stamm-Bot weiter verarbeitet oder zurück in den Kanal gepostet. Dieser normale Fluss kann geändert werden, indem der Zustellungsmodus der an den Skill gesendeten Aktivität geändert wird. Wenn der Zustellungsmodus auf „ExpectReplies“ festgelegt ist, wird der Skill nicht wieder an den Skill-Host-Endpunkt gesendet. Stattdessen werden alle Antwortaktivitäten in den Textkörper der Antwort serialisiert. Der Stamm-Bot durchläuft dann diese Aktivitäten und verarbeitet sie so, wie sie auch vom Skill-Host-Endpunkt verarbeitet worden wären.

Weitere Informationen finden Sie im Zustellungsmodus in der Aktivitätsspezifikation.