Kurzanleitung: Auftragsausführung

In diesem Leitfaden erfahren Sie, wie Sie den Agent mithilfe der Auftragsausführung in Ihre Dienste integrieren. Durch Einbindung Ihres Dienstes können Sie basierend auf Endnutzerausdrücken Aktionen ausführen und dynamische Antworten an Endnutzer zurücksenden.

Hinweis

Wenn Sie die Auftragsausführung nicht verwenden möchten, können Sie diese Kurzanleitung überspringen.

Für diese Schritte wird Cloud Functions verwendet. Es wird außerdem von grundlegenden Node.js-Kenntnissen ausgegangen. Wenn Sie die Auftragsausführung mit Ihrem eigenen Server oder einer anderen Sprache erstellen möchten, finden Sie weitere Informationen in der Dokumentation zur Auftragsausführung.

Bevor Sie diese Anleitung lesen, sollten Sie mit Folgendem vertraut sein:

  1. Die Grundlagen von Dialogflow lesen.
  2. Die Einrichtungsschritte ausführen.
  3. Führen Sie die Schritte in der Kurzanleitung Agent erstellen aus. In den folgenden Schritten wird derselbe Agent weiterverwendet. Wenn Sie diesen Agent nicht mehr haben, können Sie build-agent-quickstart.zip herunterladen und die Datei importieren.

Der Inline-Editor

Die Dialogflow-Konsole verfügt über einen eingebundenen Code-Editor, den Inline-Editor, mit dem Sie Auftragsausführungscode erstellen und den Code in Cloud Functions bereitstellen können. Cloud Functions ist zwar gebührenpflichtig, aber bis zu einer beträchtlichen Anzahl von monatlichen Aufrufen kostenlos. Der Inline-Editor unterstützt nur Node.js und verwendet die Dialogflow-Bibliothek zur Auftragsausführung.

Bei der erstmaligen Aktivierung des Inline-Editors ist der Auftragsausführungscode bereits mit Standard-Handlern für Standard-Intents versehen, die in allen Agents enthalten sind. Außerdem enthält der Code kommentierte Anweisungen für Entwickler, um eigene Handler für Intents einzufügen.

Der Inline-Editor ist für einfache Auftragsausführungstests und Prototyping vorgesehen. Sobald Sie bereit sind, eine Produktionsanwendung zu erstellen, sollten Sie einen Webhook-Dienst erstellen.

Auftragsausführung mit dem Inline-Editor aktivieren und bereitstellen

So aktivieren Sie mithilfe des Inline-Editors Standard-Auftragsausführungscode und stellen ihn bereit:

  1. Klicken Sie im Menü in der linken Seitenleiste auf Fulfillment (Auftragsausführung).
  2. Stellen Sie den Inline-Editor auf Aktiviert ein.
  3. Wenn Sie die Abrechnung in den Einrichtungsschritten nicht aktiviert haben, werden Sie jetzt aufgefordert, die Abrechnung zu aktivieren. Für Cloud Functions fallen Gebühren an, aber der Dienst ist bis zu einer erheblichen Anzahl monatlicher Aufrufe kostenlos.
  4. Klicken Sie unten im Formular auf Bereitstellen und warten Sie, bis im Dialogfeld angezeigt wird, dass die Bereitstellung abgeschlossen ist.

Wenn ein Intent Auftragsausführung erfordert, müssen Sie diese aktivieren. So aktivieren Sie die Auftragsausführung für den Standard-Begrüßungs-Intent:

  1. Klicken Sie im Menü in der linken Seitenleiste auf Intents.
  2. Klicken Sie auf Default Welcome Intent.
  3. Scrollen Sie zum Abschnitt Auftragsausführung und aktivieren Sie Enable webhook call for this intent.

  4. Klicken Sie auf Speichern und warten Sie, bis im Dialog Agent Training angezeigt wird, dass das Training abgeschlossen ist.

Nun können Sie die Auftragsausführung im Simulator testen. Wenn Sie im Simulator Hi eingeben, erhalten Sie als Antwort Welcome to my agent!. Diese Antwort wird vom Auftragsausführungs-Webhook gesendet, den Sie gerade erstellt haben. Genauer gesagt stammt die Antwort von diesem Code:

function welcome(agent) {
  agent.add(`Welcome to my agent!`);
}

Benutzerdefinierten Auftragsausführungs-Handler erstellen

In den obigen Schritten wurde ein Handler verwendet, der vom Code des Standard-Inline-Editors bereitgestellt wurde. So erstellen Sie einen benutzerdefinierten Handler:

  1. Aktivieren Sie die Auftragsausführung für den Intent get-agent-name, den Sie in den vorangegangenen Schritten erstellt haben.
  2. Klicken Sie im Menü in der linken Seitenleiste auf Fulfillment (Auftragsausführung) und überprüfen Sie den Code im Inline-Editor.
  3. Suchen Sie diese Zeile:

    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    

    Alle Anfragen von Dialogflow werden von der Funktion onRequest verarbeitet. Im Hauptteil dieser Funktion sind bestimmte Handler-Funktionen definiert. Diese Handler-Funktionen werden aufgerufen, wenn zugehörige Intents zugeordnet werden. Die im vorangegangenen Abschnitt verwendete Funktion ist zum Beispiel function welcome(agent).

  4. Fügen Sie diese Funktion unter den vorhandenen Handlern für den Intent get-agent-name hinzu:

    function getAgentNameHandler(agent) {
      agent.add('From fulfillment: My name is Dialogflow!');
    }
    
  5. Unter den Definitionen der Handler-Funktionen sind Aufrufe vom Typ intentMap.set() eingefügt. Diese Aufrufe verknüpfen anhand des Namens bestimmte Handler mit Intents. Zum Beispiel ordnet intentMap.set('Default Welcome Intent', welcome) den Handler welcome dem Intent mit dem Namen Default Welcome Intent zu.

  6. Fügen Sie unter den vorhandenen intentMap.set-Aufrufen diese Zeile für den Intent get-agent-name hinzu:

    intentMap.set('get-agent-name', getAgentNameHandler);
    
  7. Klicken Sie unten im Formular auf Bereitstellen.

  8. Geben Sie in den Simulator What's your name? ein. Die From fulfillment: My name is Dialogflow!-Antwort wird von dem neuen Handler gesendet.

Auf Parameterwerte zugreifen

In den vorangegangenen Schritten haben Sie den Intent set-language erstellt, um menschliche Sprachen und Programmiersprachen zu identifizieren. Dieser Intent verwendet die Parameter language und language-programming. In diesem Abschnitt greifen Sie in Ihrem Auftragsausführungs-Handler auf Parameter für diese Werte zu.

So fügen Sie den Handler hinzu:

  1. Aktivieren Sie für den Intent set-language die Auftragsausführung.
  2. Klicken Sie im Menü in der linken Seitenleiste auf Fulfillment (Auftragsausführung).
  3. Fügen Sie wie oben beschrieben den folgenden Handler und den Aufruf intentMap hinzu:

    function languageHandler(agent) {
        const language = agent.parameters.language;
        const programmingLanguage = agent.parameters['language-programming'];
        if (language) {
            agent.add(`From fulfillment: Wow! I didn't know you knew ${language}`);
        } else if (programmingLanguage) {
            agent.add(`From fulfillment: ${programmingLanguage} is cool`);
        } else {
            agent.add(`From fulfillment: What language do you know?`);
        }
    }
    
    intentMap.set('set-language', languageHandler);
    
  4. Klicken Sie auf Bereitstellen.

Dieser Handler ruft die Parameter language und language-programming ab und speichert sie in Variablen. Diese Werte bezieht er aus dem Attribut agent.parameters, einem Objekt, das alle Parameternamen und Werte enthält, die Endnutzer in ihren Anfragen angeben.

Geben Sie zum Testen I know how to speak German in den Simulator ein.