Die Node.js-Clientbibliothek von Actions on Google ist die empfohlene Methode für den Zugriff und mit der Actions on Google-Plattform interagieren, Auftragsausführungs-Webhook in JavaScript.
Einführung
Die Node.js-Clientbibliothek ist eine Auftragsausführungsbibliothek für Actions on Google bietet diese Funktionen:
- Unterstützt alle Actions on Google-Funktionen, einschließlich Text- und Multimediaantworten, Kontoanmeldung, Datenspeicherung und Transaktionen.
- Stellt eine idiomatische Abstraktionsebene in JavaScript bereit, die die Conversation HTTP/JSON Webhook API
- Verarbeitet die Low-Level-Details der Kommunikation zwischen der Auftragsausführung und die Actions on Google-Plattform.
- Sie können mit vertrauten Paketverwaltungstools installiert werden, z. B.
npm
oderyarn
- Ermöglicht die einfache Bereitstellung des Webhooks für die Auftragsausführung auf serverlosen Computing-Plattformen wie Cloud Functions for Firebase oder AWS Lambda. Sie können den Webhook für die Auftragsausführung auch hosten bei einem Cloud-Dienstanbieter oder in einer selbst gehosteten Umgebung.
- Ist mit Node.js Version 6.0.0 und höher kompatibel.
Sie können die Clientbibliothek zusammen mit der Dialogflow-Einbindung für Actions on Google oder mit dem Actions SDK.
Vollständige Codebeispiele für die Verwendung der Clientbibliothek finden Sie unter Seite „Beispiele“
API-Referenz ansehen
Die API-Referenz wird in der Node.js-Clientbibliothek von Actions on Google gehostet. GitHub-Seite.
Du kannst auch eine lokale Kopie der Referenz generieren, indem du Folgendes ausführst: aus dem Verzeichnis aus, in das Sie die Clientbibliothek heruntergeladen haben. Code:
yarn docs
Die generierten Dokumente sind im Ordner docs
des Verzeichnisses verfügbar.
den Clientbibliothekscode heruntergeladen haben.
Funktionsweise
Bevor Sie die Clientbibliothek verwenden, sollten Sie wissen, Auftragsausführungs-Webhook verwendet die Clientbibliothek, um Nutzeranfragen zu verarbeiten, Actions on Google sendet an deine Auftragsausführung.
Wenn Sie einen Auftragsausführungs-Webhook in JavaScript erstellen, können Sie Ihren Code bereitstellen und hosten in einer serverlosen Computing-Umgebung wie der von Google, Cloud Functions for Firebase oder AWS Lambda. Sie können den Code auch ohne zusätzlichen Aufwand selbst hosten. mit dem Express-Web-Framework.
Innerhalb der Laufzeitumgebung kann der Auftragsausführungs-Webhook Funktionen im Client-Bibliothek verwenden, um Nutzeranfragen zu verarbeiten und Antworten an Aktionen auf Google für das Rendering in eine Nutzerausgabe.
Die wichtigsten Aufgaben, die der Auftragsausführungs-Webhook mithilfe des Clientbibliotheken werden im Folgenden kurz zusammengefasst:
- Nutzeranfragen erhalten: Wenn ein Nutzer eine Anfrage an Google Assistant stellt, Die Actions on Google-Plattform sendet eine HTTP-Anfrage an den Auftragsausführungs-Webhook. die Anfrage enthält eine JSON-Nutzlast, die den Intent und andere Daten enthält, z. B. die Rohdaten Text der Nutzereingabe und die Oberflächenfunktionen des Nutzergeräts. Weitere Beispiele für den Inhalt der JSON-Nutzlast finden Sie in den Leitfäden zum Dialogflow-Webhook-Format und zum Konversations-Webhook-Format.
- Framework-Erkennung des Anrufformats: Bei unterstützten Frameworks: erkennt die Clientbibliothek automatisch das Aufrufformat des Frameworks (z. B. ob die Anfrage vom Express-Web-Framework oder von AWS Lambda stammt) und weiß, die nahtlose Kommunikation mit der Actions on Google-Plattform.
- Dienst-Handler-Verarbeitung:Die Clientbibliothek stellt
Die Conversation HTTP/JSON Webhook API für Dialogflow und das Actions SDK
als Dienstfunktion verwendet. Der Auftragsausführungs-Webhook verwendet den entsprechenden Dienst, um
Erstellen Sie eine globale
app
-Instanz. Die Instanzapp
dient als Handler für HTTP und versteht das spezifische Protokoll des Dienstes. - Konversationsverarbeitung:Die Clientbibliothek stellt
Informationen pro Unterhaltung als
Conversation
-Objekt, das an dieapp
-Instanz. Der Auftragsausführungs-Webhook kann dasConversation
-Objekt für folgende Zwecke verwenden: konversationelle gespeicherte Daten oder Statusinformationen abrufen, Antworten senden oder das Mikrofon ausschalten. - Middleware-Verarbeitung: Mit der Clientbibliothek können Sie Ihre eigene Middleware für Konversationsdienste erstellen. Diese besteht aus einer oder mehreren von Ihnen definierten Funktionen, die von der Clientbibliothek automatisch ausgeführt werden, bevor der Intent-Handler aufgerufen wird. Dein Fulfillment-Webhook kann deine Middleware verwenden, um dem
Conversation
-Objekt Properties oder Hilfsklassen hinzuzufügen. - Intent-Handler-Verarbeitung: Mit der Clientbibliothek können Sie
Handler für Intents, die der Auftragsausführungs-Webhook versteht. Bei Dialogflow leitet die Clientbibliothek die Anfrage an den richtigen Intent-Handler weiter, indem sie den genauen String des Intent-Namens zuordnet, der in der Dialogflow-Konsole definiert ist. Beim Actions SDK wird sie anhand des gesendeten Attributs
intent
weitergeleitet von Actions on Google. - Antworten an Nutzer senden:Zum Erstellen von Antworten benötigt der Webhook für die Auftragsausführung
die Funktion
Conversation#ask()
aufruft. Dieask()
-Funktion kann wird mehrfach aufgerufen, um die Antwort inkrementell zu erstellen. Die -Client-Bibliothek serialisiert die Antwort in eine HTTP-Anfrage mit einem JSON-Nutzlast und sendet sie an Actions on Google. Die Funktionclose()
enthält Verhalten wieask()
, schließt aber die Unterhaltung.
Lokale Entwicklungsumgebung einrichten
Bevor Sie den Webhook für die Auftragsausführung implementieren, müssen Sie zuerst den Clientbibliothek.
Clientbibliothek installieren
Die einfachste Möglichkeit, die Clientbibliothek in Ihrer lokalen Entwicklung zu installieren
ist die Verwendung eines Paketmanagers wie npm
oder yarn
.
Führen Sie einen der folgenden Befehle im Terminal aus, um die Installation auszuführen:
- Bei Verwendung von npm:
npm install actions-on-google
- Bei Verwendung von yarn:
yarn add actions-on-google
Projektordner einrichten
Je nachdem, wo Sie den Auftragsausführungs-Webhook (Cloud Functions-Funktionen von Google) bereitstellen möchten bei Firebase, AWS Lambda oder selbstgehostetem Express), müssen Sie möglicherweise eine bestimmte Projektordnerstruktur festlegen, um Ihre Dateien zu speichern.
Wenn Sie beispielsweise Cloud Functions for Firebase verwenden, können Sie
Projektordner erstellen, indem Sie die in
Richten Sie Node.js und die Firebase CLI ein.
Firebase for Cloud Functions initialisieren Bei Cloud Functions for Firebase wird der Webhook der Auftragsausführung in der Datei /functions/index.js
geschrieben.
Anwendungsinstanz erstellen
Actions on Google verwendet spezifische Nachrichtenformate für den Austausch von Anfragen und Antworten mit Ihrem Auftragsausführungs-Webhook. Das hängt davon ab, ob Sie eine konversationsorientierte Aktion mit Dialogflow oder dem Actions SDK oder eine Smart-Home-Aktion erstellen.
Um diese verschiedenen Anfrage- und Antwortprotokolle darzustellen, bietet die Clientbibliothek drei Dienstfunktionen:
Protokoll für Unterhaltungs-Webhooks wird von beiden Konversationsdiensten (Dialogflow und Actions SDK) verwendet, aber jeder werden Nachrichten unterschiedlich umschlossen.
Sie verwenden einen Dienst, um eine app
-Instanz zu erstellen. Die Instanz app
kapselt
Den globalen Status und die Auftragsausführungslogik für den Webhook und die Handles
Kommunikation zwischen Actions on Google und Ihrer Auftragsausführung mithilfe der
dienstspezifisches Protokoll.
Sie können die Attribute der Instanz app
konfigurieren und ihre Methoden aufrufen, um
das Verhalten des Auftragsausführungs-Webhooks steuern. Sie können die app
-Instanz auch ganz einfach anschließen.
in einer serverlosen Computing-Umgebung
wie Cloud Functions for Firebase,
das JavaScript-Funktionen als Handler für HTTP-Anfragen akzeptiert.
So erstellen Sie eine app
-Instanz im Webhook für die Auftragsausführung:
Rufe die Funktion
require()
auf, um „actions-on-google“ zu importieren Modul und laden Sie den gewünschten Dienst. Das folgende Snippet zeigt beispielsweise, den Dienstdialogflow
und einige Elemente, die zum Erstellen von Antworten verwendet werden, laden. Weisen Sie sie einer Konstante mit dem Namendialogflow
zu:// Import the service function and various response classes const { dialogflow, actionssdk, Image, Table, Carousel, } = require('actions-on-google');
Hier bezieht sich
actions-on-google
auf eine Abhängigkeit, die in einempackage.json
-Datei in Ihrem Projektordner erstellen (Sie finden diese Beispieldateipackage.json
.Beim Abrufen einer
app
-Instanz können Sie optional Klassen angeben. für Rich-Media-Antworten, Hilfs-Intents und andere Actions on Google-Funktionen, die Sie verwenden möchten. Eine vollständige Liste der gültigen Klassen, die Sie laden können, finden Sie in der Referenzdokumentation für die Module Unterhaltungsantwort und Hilfe-Intent.Erstellen Sie eine
app
-Instanz, indem Sie den geladenen Dienst aufrufen. Beispiel:const app = dialogflow();
Wenn Sie die
app
-Instanz bei der Initialisierung konfigurieren möchten, können Sie beim Aufrufen des Dienstes einoptions
-Objekt als erstes Argument angeben. (SieheDialogflowOptions
. Im folgenden Snippet wird beispielsweise gezeigt, wie die rohe JSON-Nutzlast aus der Nutzeranfrage oder ‑antwort protokolliert wird, indem das Flag{ debug: true }
festgelegt wird:
const app = dialogflow({ debug: true });
Handler für Ereignisse festlegen
Um Actions on Google-bezogene Ereignisse zu verarbeiten, die von der Clientbibliothek während des Lebenszyklus der Nutzerinteraktion mit Ihrer Aktion erstellt wurden, erstellen Sie mit der Clientbibliothek Handler, um Nutzeranfragen zu verarbeiten und Antworten zurückzugeben.
Sie können Funktionen erstellen, die als Handler für diese Hauptereignistypen dienen. die die Clientbibliothek erkennt:
- Intent-Ereignisse:Intents sind eindeutige Kennungen, die von Actions on Google gesendet werden. wenn ein Nutzer bestimmte Funktionen anfordert. Wenn Wenn Sie Dialogflow verwenden, entspricht dies dem Abgleich einer Nutzerabfrage durch Dialogflow. einem Intent in Ihrem Dialogflow-Agent.
- Fehlerereignisse:Wenn ein JavaScript- oder Clientbibliotheksfehler auftritt,
Sie können die Funktion
catch
derapp
-Instanz verwenden, um die Fehlerausnahme zu verarbeiten angemessen. Sie sollten eine einzelnecatch
-Funktion implementieren, um alle Fehler, die für die Auftragsausführung relevant sind. - Fallback-Ereignisse: Ein Fallback-Ereignis tritt auf, wenn der Nutzer eine Suchanfrage sendet, die von Actions on Google nicht erkannt werden kann. Sie können die
app
verwendenfallback
der Instanz, um einen generischen Fallback-Handler zu registrieren, wird ausgelöst, wenn kein Intent-Handler für die eingehende Auftragsausführung zugeordnet wurde. Sie sollten eine einzelnefallback
-Funktion implementieren, um alle Fallback-Ereignisse. Wenn Sie Dialogflow verwenden, kann Dialogflow eine bestimmte Fallback-Intent, wenn kein anderer Intent zugeordnet ist. Sie sollten einen entsprechenden Intent-Handler für diesen Fallback-Intent erstellen.
Immer wenn der Nutzer eine Anfrage an Ihre Aktion sendet, erstellt die app
-Instanz einen
Conversation
das diese Konversationssitzung darstellt. Der Zugriff auf dieses Objekt erfolgt über
Der Variablenname conv
, der an die Intent-Handler-Funktion als
ersten Funktionsargument. In Ihren Handlers verwenden Sie in der Regel das conv
-Objekt, um eine Antwort an den Nutzer zu senden.
Nutzerabfragen können auch Parameter enthalten, die deine Aktion extrahieren und verwenden kann um die Antworten zu optimieren.
- Wenn Sie das Actions SDK verwenden, definieren Sie Parameter im Aktionspaket. Ein Beispiel für das Extrahieren von Parametern aus Intents finden Sie in der Eliza-Codebeispiel:
- Wenn Sie Dialogflow verwenden, können Sie auf die Parameterwerte über die
params
. Um Beispiele für den Umgang mit Intents mit Parameter in Dialogflow finden Sie unter Zugriffsparameter und Kontexte.
Handler für Intents festlegen
Rufen Sie zum Festlegen des Handlers für einen Intent die Funktion intent()
Ihrer app
auf
Instanz. Wenn Sie beispielsweise Dialogflow verwenden, ist dies der
DialogflowApp#intent()
. Geben Sie in den Argumenten den Namen des Intents und eine Handler-Funktion an.
Wenn Sie Dialogflow verwenden, müssen Sie nicht für jeden Intent in Ihren Agent. Nutzen Sie stattdessen die integrierte Antwort von Dialogflow Handler zur automatischen Verarbeitung von Intents, ohne einen eigenen Handler zu implementieren Funktionen. Beispiel: Der Parameter Der default Welcome Intent kann sein: auf diese Weise an Dialogflow delegiert wurde.
Das folgende Beispiel zeigt Intent-Handler für die Intents „Hallo“ und „Tschüss“. Ihre anonymen Handler-Funktionen senden das Argument conv
eine einfache Stringantwort an den Nutzer über die Funktion conv.ask()
:
app.intent('Default Welcome Intent', (conv) => { conv.ask('How are you?'); }); app.intent('bye', (conv) => { conv.close('See you later!'); });
Die close()
-Funktion ähnelt ask()
, nur dass sie folgendes Objekt schließt:
das Mikrofon und das Gespräch ist vorbei.
Weitere Informationen zum Erstellen von Handlern für Intents finden Sie unter Erstellen Sie einen Intent-Handler.
Handler für Fehlerereignisse festlegen
Um die Handler für Fehler festzulegen, rufen Sie die Funktion catch()
Ihrer app
auf
Instanz. Wenn Sie beispielsweise Dialogflow verwenden, ist dies der
DialogflowApp#catch()
function.)
Das folgende Beispiel zeigt einen einfachen Catch-Fehler-Handler, der den Fehler an
Konsolenausgabe und sendet eine einfache Zeichenfolgenantwort zurück, um den Nutzer mittels
die Funktion conv.ask()
:
app.catch((conv, error) => { console.error(error); conv.ask('I encountered a glitch. Can you say that again?'); });
Handler für Fallback-Ereignisse festlegen
Wenn Sie einen generischen Fallback-Handler festlegen möchten, wenn für die eingehende Anfrage keine Absicht gefunden wird, rufen Sie die fallback()
-Funktion Ihrer app
-Instanz auf. Wenn Sie beispielsweise Dialogflow verwenden, ist dies die Funktion DialogflowApp#fallback()
.
Das folgende Beispiel zeigt einen einfachen Fallback-Handler, der ein einfaches
Stringantwort, um den Nutzer mit der Funktion conv.ask()
aufzufordern:
app.fallback((conv) => { conv.ask(`I couldn't understand. Can you say that again?`); });
Intent-Handler erstellen
In diesem Abschnitt werden einige häufige Anwendungsfälle bei der Implementierung von Intent-Handlern behandelt. mit der Clientbibliothek. So ermitteln Sie die Übereinstimmung der Clientbibliothek Weitere Informationen finden Sie im Artikel zur Verarbeitung von Intent-Handlern. Abschnitt in Funktionsweise
Auf Parameter und Kontexte zugreifen
Wenn Sie Dialogflow verwenden, können Sie parameters und Kontexte in Ihrem Dialogflow-Agent Statusinformationen zu erhalten und den Gesprächsverlauf zu steuern.
Parameter sind nützlich, um wichtige Wörter, Wortgruppen oder Werte in Nutzerabfragen zu erfassen. Dialogflow extrahiert die entsprechenden Parameter aus Nutzerabfragen unter Laufzeit und können diese Parameterwerte in Ihrem Webhook für die Auftragsausführung den Nutzenden zu antworten.
Immer wenn der Nutzer eine Anfrage an Ihre Aktion sendet, wird die Instanz DialogflowApp
erstellt ein parameters
für die Parameterwerte, die Dialogflow daraus extrahiert hat.
Der Zugriff auf dieses Objekt erfolgt über den Variablennamen params
.
Im folgenden Snippet wird gezeigt, wie du über das params
-Objekt auf die name
-Eigenschaft zugreifen kannst, wenn der Nutzer eine Anfrage sendet:
app.intent('Default Welcome Intent', (conv, params) => { conv.ask(`How are you, ${params.name}?`); });
Hier ist ein alternatives Snippet, das dasselbe bewirkt. Geschweifte Klammern
({}
) führt eine Desstrukturierung von JavaScript durch
um die name
-Eigenschaft des parameters
-Objekts als lokale
Variable:
app.intent('Default Welcome Intent', (conv, {name}) => { conv.ask(`How are you, ${name}?`); });
Im folgenden Snippet lautet der Parametername full-name
,
destrukturiert und einer lokalen Variablen namens name
zugewiesen:
app.intent('Default Welcome Intent', (conv, {'full-name': name}) => { conv.ask(`How are you, ${name}?`); });
Kontexte sind eine erweiterte Funktion von
Dialogflow Sie können Kontexte verwenden, um
Unterhaltungsstatus, -ablauf und
Verzweigungen. Die Clientbibliothek bietet Zugriff auf einen Kontext über die Methode
DialogflowConversation#contexts
-Objekt enthält. Im folgenden Snippet wird gezeigt, wie Sie einen Kontext programmatisch in Ihrem Fulfillment-Webhook festlegen und das Kontextobjekt abrufen:
app.intent('intent1', (conv) => { const lifespan = 5; const contextParameters = { color: 'red', }; conv.contexts.set('context1', lifespan, contextParameters); // ... conv.ask('...'); }); app.intent('intent2', (conv) => { const context1 = conv.contexts.get('context1'); const contextParameters = context1.parameters; // ... conv.ask('...'); }); app.intent('intent3', (conv) => { conv.contexts.delete('context1'); // ... conv.ask('...'); });
Auf Helper-Intent-Ergebnisse zugreifen
Der Einfachheit halber enthält die Clientbibliothek Helper-Intent-Klassen die häufige Typen von Nutzerdaten enthalten, die von Actions häufig angefordert werden. Diese Klassen enthalten, die die Ergebnisse für die verschiedenen Actions on Google darstellen helper-Intents. Sie verwenden Hilfsintents, wenn Google Assistant Teile der Unterhaltung bearbeiten soll, in denen der Nutzer Eingaben machen muss, um die Unterhaltung fortzusetzen.
Beispiel: Ergebnisse des Bestätigungsassistenten
Mit dem Confirmation Helper Intent können Sie
fragen Sie den Nutzer nach einer Ja/Nein-Bestätigung und erhalten die daraus resultierende Antwort.
Das folgende Snippet zeigt, wie der Webhook seine Antwort basierend auf
zu den Ergebnissen, die vom Confirmed Helper-Intent zurückgegeben werden. Ein vollständigeres Beispiel finden Sie in der Referenzdokumentation zur Klasse Confirmation
.
// Create Dialogflow intent with `actions_intent_CONFIRMATION` event app.intent('get_confirmation', (conv, input, confirmation) => { if (confirmation) { conv.close(`Great! I'm glad you want to do it!`); } else { conv.close(`That's okay. Let's not do it now.`); } });
Beispiel: Karussellergebnisse
Das folgende Snippet zeigt, wie der Auftragsausführungs-Webhook seine Antwort anpassen kann
basierend auf den Eingaben der Nutzenden
Karussell. Mit der Karussellkomponente können Sie Nutzern in Ihrer Aktion eine Auswahl von Optionen präsentieren. Für eine
vollständiges Beispiel finden Sie in der Carousel
Klassenreferenzdokumentation.
app.intent('carousel', (conv) => { conv.ask('Which of these looks good?'); conv.ask(new Carousel({ items: { car: { title: 'Car', description: 'A four wheel vehicle', synonyms: ['automobile', 'vehicle'], }, plane: { title: 'Plane', description: 'A flying machine', synonyms: ['aeroplane', 'jet'], } } })); }); // Create Dialogflow intent with `actions_intent_OPTION` event app.intent('get_carousel_option', (conv, input, option) => { if (option === 'one') { conv.close(`Number one is a great choice!`); } else { conv.close(`Number ${option} is a great choice!`); } });
Unterhaltungsantwortobjekte konfigurieren
Die Clientbibliothek bietet Unterhaltungsantwortklassen die Rich-Antworten oder Multimedia-Elemente darstellen, die deine Aktion senden kann. Sie senden diese Antworten oder Elemente in der Regel, wenn Nutzende keine um das Gespräch fortzusetzen.
Beispiel: Bild
Das folgende Snippet zeigt, wie der Webhook für die Auftragsausführung
Image
in einer Antwort, die automatisch an eine BasicCard
-Antwort angehängt wird von
Bibliothek:
app.intent('Default Welcome Intent', (conv) => { conv.ask('Hi, how is it going?'); conv.ask(`Here's a picture of a cat`); conv.ask(new Image({ url: '/web/fundamentals/accessibility/semantics-builtin/imgs/160204193356-01-cat-500.jpg', alt: 'A cat', })); });
Asynchrone Funktionsaufrufe
Die Node.js-Clientbibliothek von Actions on Google wurde für asynchrone Programmgestaltung. Der Intent-Handler kann Folgendes zurückgeben: Versprechen, das behoben wird, Der Auftragsausführungs-Webhook hat eine Antwort generiert.
Das folgende Snippet zeigt, wie Sie einen asynchronen Funktionsaufruf an ein Promise-Objekt zurückgeben und dann mit einer Nachricht antworten, empfängt die „Begrüßung“ Nutzerabsicht verstehen. In diesem Snippet sorgt das Versprechen dafür, Der Auftragsausführungs-Webhook gibt erst nach dem Promise für das externer API-Aufruf behoben.
In diesem Beispiel verwenden wir eine fiktive API zum Abrufen der Wetterdaten.
/** * Make an external API call to get weather data. * @return {Promise<string>} */ const forecast = () => { // ... }; app.intent('Default Welcome Intent', (conv) => { return forecast().then((weather) => { conv.ask('How are you?'); conv.ask(`Today's weather is ${weather}.`); }); });
Das folgende optimierte Code-Snippet hat denselben Effekt, verwendet aber die Funktion async
await
, die in ECMA 2017 (Node.js-Version 8) eingeführt wurde. Um
mit Cloud Functions for Firebase
erstellen, verwenden Sie die Methode
richtige Version von firebase-tools
und die richtige Konfiguration haben.
app.intent('Default Welcome Intent', async (conv) => { const weather = await forecast(); conv.ask('How are you?'); conv.ask(`Today's weather is ${weather}.`); });
Konversationsdaten speichern
Mit der Clientbibliothek kann der Webhook für die Auftragsausführung Daten in Unterhaltungen speichern, zu vermeiden. Zu den wichtigsten Objekten, die Sie für die Datenspeicherung verwenden können, gehören:
DialogflowConversation#data
oderActionsSdkConversation#data
: Speichert Daten im JSON-Format für die Dauer einer einzelnen Unterhaltungssitzung zwischen dem Nutzer und Ihrer Aktion.Conversation#user.storage
: Speichert Daten im JSON-Format über mehrere in Gesprächen.
Im folgenden Snippet wird gezeigt, wie dein Fulfillment-Webhook Daten in einer beliebigen von dir definierten Property (someProperty
) speichern und an das Conversation#user.storage
-Objekt anhängen kann. Ein vollständigeres Beispiel finden Sie in der Referenzdokumentation zur Klasse Conversation#user.storage
.
app.intent('Default Welcome Intent', (conv) => { conv.user.storage.someProperty = 'someValue'; conv.ask('...'); });
Sie können die Conversation#user
verwenden
, um Informationen über den Nutzer zu erhalten, einschließlich String-ID und
personenbezogenen Daten. Bestimmte Felder wie conv.user.name.display
und
Für conv.user.email
müssen conv.ask(new Permission)
angefordert werden für
NAME und conv.ask(new SignIn)
für Google Log-in.
const {Permission} = require('actions-on-google'); app.intent('Default Welcome Intent', (conv) => { if (conv.user.last.seen) { conv.ask('Welcome back! How are you?'); } else { conv.ask('Nice to meet you! How are you doing?'); } }); app.intent('permission', (conv) => { conv.ask(new Permission({ context: 'To greet you personally', permissions: 'NAME', })); }); // Create Dialogflow intent with `actions_intent_PERMISSION` event app.intent('get_permission', (conv, input, granted) => { if (granted) { conv.close(`Hi ${conv.user.name.display}!`); } else { // User did not grant permission conv.close(`Hello!`); } });
Mit Middleware skalieren
Sie können die Clientbibliothek über Middleware erweitern.
Die Middleware-Schicht besteht aus einer oder mehreren Funktionen, die Sie definieren,
die die Clientbibliothek automatisch ausführt, bevor die
Intent-Handler. Mit einer Middleware-Ebene können Sie die Conversation
ändern
und zusätzliche Funktionen hinzufügen.
Die Dienste Dialogflow und Actions SDK stellen eine app.middleware()
-Funktion bereit
mit der Sie Attribute oder Hilfsklassen zum Conversation
hinzufügen können
Instanz.
Das folgende Snippet zeigt ein Beispiel für die Verwendung von Middleware:
class Helper { constructor(conv) { this.conv = conv; } func1() { this.conv.ask(`What's up?`); } } app.middleware((conv) => { conv.helper = new Helper(conv); }); app.intent('Default Welcome Intent', (conv) => { conv.helper.func1(); });
App exportieren
So stellen Sie den Auftragsausführungs-Webhook für ein Web-Framework oder eine serverlose Computing-Plattform bereit:
Sie müssen das Objekt app
als öffentlich zugänglichen Webhook exportieren. Die Clientbibliothek unterstützt die Bereitstellung in einer Reihe von Umgebungen.
Die folgenden Snippets veranschaulichen, wie Sie app
innerhalb verschiedener Laufzeiten exportieren können:
Beispiel: Cloud Functions for Firebase
const functions = require('firebase-functions'); // ... app code here exports.fulfillment = functions.https.onRequest(app);
Beispiel: Dialogflow-Inline-Editor
const functions = require('firebase-functions'); // ... app code here // Exported function name must be 'dialogflowFirebaseFulfillment' exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
Beispiel: Eigenhosteter Express-Server (einfach)
const express = require('express'); const bodyParser = require('body-parser'); // ... app code here express().use(bodyParser.json(), app).listen(3000);
Beispiel: Eigenhosteter Express-Server (mehrere Routen)
const express = require('express'); const bodyParser = require('body-parser'); // ... app code here const expressApp = express().use(bodyParser.json()); expressApp.post('/fulfillment', app); expressApp.listen(3000);
Beispiel: AWS Lambda API-Gateway
// ... app code here exports.fulfillment = app;