1. Einführung
In diesem Lab erstellen Sie mit Dialogflow eine einfache Aktion und lernen, wie Sie diese in Google Assistant einbinden.
Die Reihenfolge der Übungen orientiert sich am üblichen Vorgehen bei der Cloud-Entwicklung:
- Dialogflow v2-Agent erstellen
- Entitäten erstellen
- Intents erstellen
- Webhook mit Google Cloud-Funktionen einrichten
- Wissensdatenbank verwenden, um FAQs zu importieren
- Chatbot testen
- Google Assistant-Integration aktivieren
Überblick
Wir werden eine Google Assistant-App für die Meetup-Gruppe „Women in Voice“ entwickeln. Ihr könnt fragen, wann das nächste Treffen stattfindet, Artikel und Buche Tipps oder allgemeine Fragen zur Meetup-Gruppe. |
Aufgaben in diesem Lab
- So erstellen Sie einen Chatbot mit Dialogflow v2
- Lineare Unterhaltung mit Dialogflow erstellen
- Entitäten verwenden
- So nutzen Sie die Wissensdatenbank
- Webhook-Auftragsausführungen mit Dialogflow- und GCP-Funktionen einrichten
- Anwendung mit Actions on Google in Google Assistant bereitstellen
Voraussetzungen
- Sie benötigen eine Google Identity-/Gmail-Adresse, um einen Dialogflow-Agent zu erstellen.
- Sie erhalten Google Cloud-Guthaben für die Nutzung von Google Cloud Functions
- Sie müssen auf diese öffentliche Google-Tabelle zugreifen, um die Agent-Daten abzurufen.
- In einem neuen Tab öffnen: https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit?usp=sharing
- Grundkenntnisse in JavaScript sind nicht erforderlich, können aber praktisch sein, wenn Sie den Auftragsausführungscode des Webhooks ändern möchten.
2. Einrichtung
Webaktivitäten im Browser aktivieren
- Klicken Sie auf http://myaccount.google.com/activitycontrols.
- Stellen Sie sicher, dass Web- und Die App-Aktivitäten sind aktiviert:
Dialogflow-Agent erstellen
- Öffnen: https://console.dialogflow.com
- Wählen Sie in der linken Leiste direkt unter dem Logo Create New Agent (Neuen Agent erstellen) aus. Wenn Sie bereits Agents haben, klicken Sie zuerst auf das Drop-down-Menü.
- Geben Sie einen Agent-Namen an:
yourname-wiv
(verwenden Sie Ihren eigenen Namen) - Wählen Sie als Standardsprache Englisch – en aus.
- Wählen Sie als Standardzeitzone die nächstgelegene Zeitzone aus.
- Wählen Sie nicht Mega Agent aus. (Mit dieser Funktion können Sie einen übergreifenden Agent erstellen, der zwischen „Unter“-Agents orchestrieren kann. Das ist jetzt nicht mehr nötig.)
- Klicken Sie auf Erstellen.
Dialogflow konfigurieren
- Klicken Sie im linken Menü neben dem Projektnamen auf das Zahnradsymbol.
- Geben Sie die folgende Beschreibung des Agents ein: Women in Voice-Agent
- Scrollen Sie nach unten zu Betafunktionen und legen Sie den Schalter um, um die Betafunktionen zu aktivieren.
- Scrollen Sie nach unten zu Log Settings (Logeinstellungen) und stellen Sie die beiden Schalter auf "Log the Interaktionen of Dialogflow" (Interaktionen von Dialogflow protokollieren) und um alle Interaktionen in Google Cloud Stackdriver zu protokollieren. Wir benötigen ihn später für den Fall, dass wir unsere Aktion debuggen möchten.
- Klicken Sie auf Speichern.
- Klicken Sie auf Fertig.
Actions on Google konfigurieren
- Klicken Sie im rechten Seitenbereich unter So funktioniert Google Assistant auf den Link Google Assistant.
Daraufhin wird diese Seite geöffnet: http://console.actions.google.com.
HINWEIS: Achten Sie darauf, dass Sie mit demselben Google-Konto wie in Dialogflow angemeldet sind.
Wenn Sie neu bei Actions on Google sind, müssen Sie zuerst dieses Formular ausfüllen:
- Versuchen Sie, die Aktion im Simulator** zu öffnen. Klicken Sie dazu auf den Projektnamen.**
- Wählen Sie in der Menüleiste Entwickeln aus.
Entfernen Sie das Häkchen bei Spracheinstellung des Nutzers anpassen. Damit wird verhindert, dass die Sprachausgabe durch die Standardsprache von Assistant überschrieben wird.
- Klicken Sie auf Speichern.
- Wählen Sie in der Menüleiste Testen aus.
- Achten Sie darauf, dass der Simulator auf English eingestellt ist, und klicken Sie auf Talk to my test-app (Mit meiner Test-App sprechen).
Die Aktion wird Sie mit dem grundlegenden Dialogflow-Standard-Intent begrüßt. Die Einbindung in Action on Google hat also funktioniert.
Google Cloud konfigurieren
Für diese Anleitung benötigen Sie ein GCP-Konto mit einem Rechnungskonto. Falls Sie noch keines haben, können Sie mit den folgenden Schritten eins erstellen.
Normalerweise ist für ein Rechnungskonto eine Zahlungsmethode wie z. B. eine Kreditkarte erforderlich. Für diesen Workshop können wir Guthaben verwenden, wodurch dieser Prozess übersprungen werden kann.
- Rufen Sie diese URL auf und melden Sie sich an.
- Klick: Klicken Sie hier, um auf Ihr Guthaben zuzugreifen.
- Klicken Sie auf Akzeptieren & Weiter
Jetzt sind Sie startklar! Sie haben nun ein Rechnungskonto mit 25 € erstellt. Dies sollte mehr als ausreichen, um Cloud Functions über einen längeren Zeitraum nutzen zu können.
Google Sheets API aktivieren
Wenn Ihr Agent mehr als statische Intent-Antworten benötigt, z. B. um Daten aus einem Webdienst, einer Datenbank oder einer Tabelle abzurufen, müssen Sie die Auftragsausführung verwenden, um Ihren Webdienst mit dem Agent zu verbinden. Wenn Sie Ihren Webdienst verbinden, können Sie Aktionen basierend auf Nutzerausdrücken ausführen und dynamische Antworten an den Nutzer zurücksenden.
Wenn ein Nutzer beispielsweise einen Blog- oder Buchtipp erhalten möchte, kann Ihr Webdienst in Ihrer Datenbank nachsehen und dem Nutzer einen Artikel zum Lesen antworten.
In dieser Anleitung verwenden wir keine Datenbank, sondern eine Google-Tabelle. Sobald das Tabellenblatt aktualisiert wurde, wird auch die Google Assistant-Aktion aktualisiert. Sehr gut!
- Öffnen Sie diese Google-Tabelle in einem neuen Browsertab, falls Sie dies noch nicht getan haben:
- https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
- WICHTIG: Erstellen Sie eine Kopie dieses Tabellenblatts. Klicken Sie auf Datei > Kopie erstellen
- Nachdem das Tabellenblatt kopiert wurde, klicken Sie auf Freigeben.
- Wir müssen dem Dialogflow-Dienstkonto Bearbeitungsrechte zuweisen. Öffnen Sie dazu Dialogflow > Einstellungen (Zahnrad).
- Scrollen Sie nach unten zu Google-Projekt.
- Kopieren Sie die E-Mail-Adresse des Dienstkontos. Sie sollte in etwa so aussehen: dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com
- Fügen Sie dieses Dienstkonto in das Pop-up-Fenster „Freigeben“ von Google Tabellen ein und weisen Sie ihm die Berechtigung Bearbeiten zu.
- Als Nächstes müssen wir uns die Tabellen-ID merken, an der wir gerade arbeiten.
The Sheets URL will look something like this:
https://docs.google.com/spreadsheets/d/1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o/edit#gid=1240329448
But we are only interested in the Sheet id, which is the part between:
https://docs.google.com/spreadsheets/d/ und /edit#gid=1240329448 (ohne Schrägstriche).
So it will look something like this: **1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o**
**Write this Sheet ID down**, or copy it to Notepad. In the Webhook steps we will use this again.
- In einem anderen Browsertab öffnen http://console.cloud.google.com. Falls Sie weitere Google Cloud-Projekte haben, aktivieren Sie das neue Dialogflow-Projekt: ihrname-wiv. - Geben Sie in die Suchleiste Google Sheets API ein.
- Klicken Sie darauf und dann oben auf die Schaltfläche Google Sheets API aktivieren.
3. Benutzerdefinierte Entitäten
Entitäten sind Objekte, für die Ihre App oder Ihr Gerät Aktionen ausführt. Stellen Sie sich das als Parameter / Variablen vor. In unserer Aktion stellen wir uns folgende Fragen:
„Ich möchte einen Lesetipp zu
Chatbots
/ Ich möchte einen Lesetipp zu
voice*“*
Unabhängig davon, ob Sie „Chatbots“, „Voice“ oder „Beide“ sagen, wird dies aus einer benutzerdefinierten Entität erfasst, die als Parameter in meiner Anfrage an einen Webdienst verwendet wird.
Weitere Informationen zu Dialogflow-Entitäten
Kanalentität erstellen
- Klicken Sie in der Dialogflow-Konsole im Menüpunkt Entities (Entitäten) auf.
- Klicken Sie auf Create Entity (Entität erstellen).
- Entitätsname:
tech
(nur Kleinbuchstaben) - Geben Sie die Optionen mit den Synonymen an. Sie können mit der Tabulatortaste durch die Benutzeroberfläche wechseln.
Chatbots - Chatbots, Chat, Web
Voice - Voice, Voicebots, Voice Assistants
Both - Both, All
5**.** Wechseln Sie in den **RAW-Bearbeitungsmodus**, indem Sie neben der blauen Schaltfläche zum Speichern auf die Menüschaltfläche klicken.
- Beachten Sie, dass Sie auch alle Entitäten im CSV-Format eingegeben hätten. Dies kann nützlich sein, wenn Sie viele Entitäten haben, die erstellt werden müssen.
"Chatbots","Chatbots","Chat","Web"
"Voice","Voice","Voicebots","Voice Assistants"
"Both","Both","All"
- Klicke auf Speichern.
4. Intents
Dialogflow verwendet Intents, um die Absichten von Nutzern zu kategorisieren. Intents haben Trainingsformulierungen, die Beispiele dafür sind, was ein Nutzer dem Agent sagen könnte.
Wenn ein Nutzer beispielsweise wissen möchte, wer das nächste Ereignis wissen möchte, könnte er Folgendes fragen:
„Wann ist das nächste Treffen?“
Wenn ein Nutzer etwas schreibt oder sagt (dies wird als Nutzerausdruck bezeichnet), ordnet Dialogflow den Nutzerausdruck dem besten Intent im Agent zu. Der Abgleich eines Intents wird auch als Intent-Klassifizierung bezeichnet.
Weitere Informationen zu Dialogflow-Intents
Standard-Begrüßungs-Intent ändern
Wenn Sie einen neuen Dialogflow-Agent erstellen, werden automatisch zwei Standard-Intents erstellt. Der Standard-Begrüßungs-Intent ist der erste Ablauf, den Sie aufrufen, wenn Sie eine Unterhaltung mit dem Agent starten. Der Standard-Fallback-Intent ist der Ablauf, den Sie erhalten, wenn der Agent Sie nicht verstehen oder einen Intent nicht dem gerade Gesagten zuordnen kann.
- Klicken Sie auf Intents > Standard-Begrüßungs-Intent
Im Fall von Google Assistant startet er automatisch mit dem Standard-Begrüßungs-Intent. Das liegt daran, dass Dialogflow das Willkommensereignis überwacht. Sie können den Intent aber auch aufrufen, indem Sie eine der eingegebenen Trainingsformulierungen sagen.
Hier ist die Begrüßungsnachricht für den Standard-Begrüßungs-Intent:
Nutzer | Kundenservicemitarbeiter |
„Hey Google, sprich mit <IhrName>-WIV“ | „Hallo, ich bin Anna, die virtuelle Kundenservicemitarbeiterin von Women in Voice.“ Sie können mich nach Informationen zu Treffen, Women in Voice oder nach einem Lesetipp fragen. „Was möchten Sie wissen?“ |
- Scrollen Sie nach unten zu Antworten.
- Alle Textantworten löschen.
- Erstellen Sie auf dem Standardtab die folgenden drei Antworten. Klicken Sie für jede neue Zeile auf „Add Responses“ > „Text“ oder „SSML-Antwort“:
- Hallo, ich bin Anna, die virtuelle Kundenservicemitarbeiterin von Women in Voice.
- Du kannst mich nach Informationen zu Treffen, Women in Voice oder nach einem Lesetipp fragen.
- Was möchten Sie wissen?
Die Konfiguration sollte diesem Screenshot ähneln.
- Die vorherige Ausgabe wird für Chatbots verwendet. Wir können sie ein wenig speziell für Google Assistant ändern. Wir verwenden SSML (Speech Synthesis Markup Language), um Pausen in unsere Sätze einzufügen. Klicken Sie auf den Tab Google Assistant.
- Aktivieren Sie die Ein/Aus-Schaltfläche „Standard“ nicht, da die Chatbot-Nachricht nicht wiederverwendet wird.
- Klicken Sie auf Antworten hinzufügen > Einfache Antwort
- Fügen Sie die folgende Textversion hinzu:
Hey there, I'm Anna, the virtual agent of Women in Voice.
You can ask me for information about meetups, Women in Voice or a reading tip. What would you like to know?
- Klicken Sie dann auf Audioausgabe anpassen.
- Fügen Sie die folgende SSML-Version hinzu:
<speak><p><s>Hey there, I'm Anna, the virtual agent of Women in Voice.</s><s>
You can ask me for information about meetups, Women in Voice or a reading tip.</s></p><break time="500ms"/><p><s>
What would you like to know?</s></p></speak>
Die Konfiguration sollte diesem Screenshot ähneln.
- Klicken Sie auf Speichern.
Weitere Informationen zu SSML für Actions on Google
- Lassen Sie uns diesen Intent testen. Zuerst können wir es im Dialogflow-Simulator testen.
Typ: Hello. Sie sollte diese Meldung zurückgeben.
- Kehren Sie nun zur Actions on Google-Konsole zurück.
(Wir empfehlen, diesen Tab auf einem anderen Tab zu belassen.)
Klicken Sie auf Mit meiner Test-App sprechen. Und hör dir die neue Willkommensnachricht an.
Standard-Fallback-Intent ändern
- Klicken Sie auf Intents > Standard-Fallback-Intent
- Scrollen Sie nach unten zu Antworten.
- Alle Textantworten löschen.
- Erstellen Sie auf dem Standardtab die folgenden Antworten in jeweils einer neuen Zeile, damit sie abwechselnd angezeigt werden:
Sorry, can you repeat this?
I didn't understand you. You can ask me questions about Women in Voice, a book or article tip or when the next meetup will be.
- Klicken Sie auf Speichern.
Hinweis: Wenn Sie keine Google Assistant-Ausgabe eingeben, wird die Standardausgabe verwendet.
Stop-Intent erstellen
- Klicken Sie auf den Menüpunkt Intents.
- Klicken Sie auf Create Intent (Intent erstellen).
- Geben Sie den Intent-Namen ein:
Stop Intent
- Klicken Sie auf Trainingsformulierungen hinzufügen.
No
That's it
Bye
I don't want that
Goodbye
It's ok for now
Quit
I want to stop
Close this
End the conversation
- Scrollen Sie nach unten zu Antworten.> Antwort hinzufügen
- Fügen Sie die folgenden Textoptionen hinzu:
Alright! Hopefully we will see you at one of our meetups!
No problem. See you at one of our meetups!
- Stellen Sie den Schalter um: Legen Sie diesen Intent als Ende der Unterhaltung fest. Dadurch wird die Google Assistant-Aktion geschlossen, sobald der Intent zugeordnet wurde.
- Klicken Sie auf Speichern.
Meetup-Intent erstellen
Der Meetup-Intent enthält diesen Teil der Unterhaltung:
Nutzer | Kundenservicemitarbeiter |
„Wann ist das nächste Treffen?“ | „Das nächste Treffen findet am <Datum> statt. um <time> in <location>. Das Thema ist <topic>. Und die Lautsprecher sind: <speakers>. Du kannst dich über unseren Newsletter anmelden.“ |
- Klicken Sie auf den Menüpunkt Intents.
- Klicken Sie auf Create Intent (Intent erstellen).
- Geben Sie den Intent-Namen ein:
Meetup Intent
. Verwenden Sie ein großes M und ein großes I. – Wenn Sie den Intent anders schreiben, funktioniert der Backend-Dienst nicht.) - Klicken Sie auf Trainingsformulierungen hinzufügen.
When is the next meetup?
Do you have any events?
Which events are in the planning?
Are there meetup events soon?
I would love to attend a meetup
Can I join a virtual meetup?
When will you get together?
Can I join?
What does your calendar look like?
- Klicken Sie auf Fulfillment > Auftragsausführung aktivieren
- Stellen Sie den Schalter für Webhook-Aufruf für diesen Intent aktivieren auf „Ein“.
- Klicke auf Speichern.
Tip-Intent erstellen
Der Tip-Intent enthält diesen Teil der Unterhaltung:
Nutzer | Kundenservicemitarbeiter |
„Ich möchte einen Lesetipp.“ | „Möchten Sie mehr über Chatbots, Voice oder beides erfahren?“ |
„Stimme“ | „Hier ist der Tipp des Tages! Der <type> <title> von <author>. Möchtest du noch einen Tipp für ein Buch oder einen Artikel erhalten? Außerdem kann ich dir mehr über Treffen oder unsere Tätigkeiten erzählen. Wie kann ich Ihnen helfen?“ |
- Klicken Sie noch einmal auf den Menüpunkt Intents.
- Klicken Sie auf Create Intent (Intent erstellen).
- Geben Sie den Intent-Namen ein:
Tip Intent
. Achten Sie darauf, ein großes L und ein großes I zu verwenden. – Wenn Sie den Intent anders schreiben, funktioniert der Backend-Dienst nicht.) - Klicken Sie auf Trainingsformulierungen hinzufügen und geben Sie Folgendes ein:
Can I get a tip for an article?
I would like to receive a reading tip
Any book tips?
What's nice to read?
I want to learn more about Chatbots, what should I read?
What are nice blogs?
Do you have book suggestions?
I want to receive information about Both
Can I have Chatbots reading tip
I would like to read more about Voice
Voice please
Both are okay.
Reading tip
Tip
Blog
Article
Book
Book suggestions
Yes
Yeah
Another tip
Yes one more
- Scrollen Sie nach unten zu Aktion und Parameter.
- Technologie als erforderlich kennzeichnen
Klicken Sie auf Prompt definieren und geben Sie Folgendes ein:
Do you want to read more about Chatbots, Voice or Both?
- Klicken Sie auf Fulfillment > Auftragsausführung aktivieren
Diesmal wird eine Antwort nicht hartcodiert. Die Antwort kommt von der Cloud Functions-Funktion. Stellen Sie daher den Schalter für Webhook-Aufruf für diesen Intent aktivieren auf „Ein“.
Klicken Sie auf Fulfillment > Auftragsausführung aktivieren
- Stellen Sie den Schalter für Webhook-Aufruf für diesen Intent aktivieren auf „Ein“.
- Klicke auf Speichern.
5. Wissensconnectors
Wissensconnectors ergänzen definierte Intents. Sie parsen Wissensdokumente, um automatisierte Antworten zu finden. z. B. häufig gestellte Fragen oder Artikel aus CSV-Dateien, Online-Websites oder sogar PDF-Dateien. Um sie zu konfigurieren, definieren Sie eine oder mehrere Wissensdatenbanken, bei denen es sich um Sammlungen von Wissensdokumenten handelt.
Weitere Informationen zu Wissensconnectors
Probieren wir es aus.
- Wählen Sie das Tag en aus, um im Menü oben die englische Sprache auszuwählen.
- Wählen Sie im Menü Wissen (Beta) aus.
- Klicke auf die rechte blaue Schaltfläche: Wissensdatenbank erstellen
- Gib einen Namen in der Wissensdatenbank ein. Women in Voice und klicke auf Speichern.
- Klicken Sie auf Ersten Link erstellen.
- Dadurch wird ein Fenster geöffnet.
Verwenden Sie die folgende Konfiguration:
Dokumentname: FAQ-Tabelle für Frauen in Voice
Wissenstyp: FAQs
MIME-Typ: CSV
- Wir benötigen die Daten aus diesem Tabellenblatt. Öffnen Sie das Datenblatt und wählen Sie den Tab „FAQs“ aus.
- Wählen Sie Datei > Herunterladen > CSV-Datei
- Kehren Sie zu Dialogflow zurück, klicken Sie auf Upload File from Computer (Datei vom Computer hochladen) und wählen Sie die heruntergeladene CSV-Datei aus. Klicken Sie auf Erstellen.
Es wurde eine Wissensdatenbank erstellt:
- Klicken Sie auf Antwort hinzufügen.
Erstelle die folgenden Antworten und klicke auf Speichern:
$Knowledge.Answer[1]
- Klicken Sie auf Details ansehen.
Daraufhin werden alle FAQs angezeigt, die Sie in Dialogflow implementiert haben.
Ganz einfach!
Sie können auch auf eine Online-HTML-Website mit FAQs verweisen, um diese in den Agent zu importieren. Es ist sogar möglich, eine PDF-Datei mit einem Textblock hochzuladen. Dialogflow stellt dann selbst Fragen.
- Klicken Sie im Dialogflow-Menü auf Knowledge (Beta), um zu allen Wissensdatenbank-Connectors zurückzukehren.
- Du kannst die Stärke und Schwäche der Wissensdatenbank ändern. Das ist sinnvoll, wenn du schon weißt, dass deine häufig gestellten Fragen von deinen eigenen Absichten überzeugen. Da wir nur wenige Intents haben, machen wir unsere Wissensdatenbank ein wenig stärker. Ändern Sie die Skala in -0,2. Nachdem Sie den Schieberegler gezogen haben, wird der Wert automatisch gespeichert.
FAQs sollten jetzt als „Extras“ betrachtet werden. die Sie Ihren Agents hinzufügen möchten. Das Modell kann in den häufig gestellten Fragen der Wissensdatenbank nicht trainiert werden. Wenn Sie Fragen also auf ganz andere Weise stellen, erhalten Sie möglicherweise keine Übereinstimmung, da dabei Natural Language Understanding (Modelle für maschinelles Lernen) nicht verwendet wird. Aus diesem Grund lohnt es sich manchmal, häufig gestellte Fragen in Intents umzuwandeln.
6. Webhook-Auftragsausführung
Google Cloud Functions-Funktion erstellen
- Rufen Sie in einem anderen Browsertab http://console.cloud.google.com auf.
- Wählen Sie im linken Menü Cloud Functions aus.
- Klicken Sie auf Funktion erstellen.
- Geben Sie die folgende Konfiguration an:
- Name:
dialogflow
- Zugewiesener Arbeitsspeicher: 256 MiB
- Trigger: HTTP
- Kopieren Sie die URL in die Zwischenablage.
- Wählen Sie Inline Editor (Inline-Editor) aus.
- Laufzeit: NodeJS 8
- Auszuführende Funktion:
dialogflow
- Achten Sie darauf, dass dieses Authentifizierungskästchen aktiviert ist:
- Hier ist der Inhalt von package.json. Kopieren Sie die Datei und fügen Sie sie auf dem Tab „package.json“ des Editors ein.
Mit diesem Code werden die richtigen npm-Bibliotheken in Google Cloud geladen:
{
"name": "dialogflow",
"description": "Cloud Functions",
"engines": {
"node": "8"
},
"dependencies": {
"request": "^2.85.0",
"request-promise": "^4.2.5",
"dialogflow-fulfillment": "^0.6.1",
"actions-on-google": "^2.2.0",
"googleapis": "^48.0.0",
"moment": "^2.24.0"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"ngrok": "^3.2.7"
},
"private": true
}
- Hier ist der Inhalt der Datei index.js: Kopieren Sie es und fügen Sie es in den Tab „index.js“ des Editors ein.
Dieser Code wird in die googleapis-Bibliothek eingebunden, um Daten aus einer Google-Tabelle abzurufen. Dabei wird die Bibliothek actions-on-google verwendet, um Karten auf einem Google Assistant-Gerät anzuzeigen. Dabei wird die Bibliothek dialogflow-fulfillment verwendet, um Dialogflow-Intents zu klassifizieren. Außerdem wird der Moment der Bibliothek genutzt, um Datums- und Uhrzeitobjekte zu verarbeiten.
/* jshint esversion: 8 */
'use strict';
process.env.DEBUG = 'dialogflow:debug';
const ACCOUNTS_SHEET_ID = '1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY';
const {
BasicCard,
Button,
} = require('actions-on-google');
const {google} = require('googleapis');
const moment = require('moment');
moment.locale('nl');
const { WebhookClient } = require('dialogflow-fulfillment');
var books;
var meetups;
const SHEETS_SCOPE = 'https://www.googleapis.com/auth/spreadsheets.readonly';
/**
* Authenticates the Sheets API client for read-only access.
*
* @return {Object} sheets client
*/
async function getSheetsClient() {
// Should change this to file.only probably
const auth = await google.auth.getClient({
scopes: [SHEETS_SCOPE],
});
return google.sheets({version: 'v4', auth});
}
/**
* Return a natural spoken date
* @param {string} date in 'YYYY-MM-DD' format
* @returns {string}
*/
var getSpokenDate = function(date){
let datetime = moment(date, 'YYYY-MM-DD');
return `${datetime.format('D MMMM')}`;
};
/* When the tipIntent Intent gets invoked. */
function tipIntent(agent) {
var par = agent.parameters.tech;
var selection = [];
//console.log(par);
//console.log(books);
for(var i = 0; i<books.length; i++){
if(books[i][2].toLowerCase() == par.toLowerCase()) {
selection.push(books[i]);
}
}
var random = Math.floor(Math.random() * selection.length);
var booktip = selection[random];
//console.log(selection[random]);
let spokenText = `<p><s>Alright, here's the tip of the day!</s></p><p>The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.</p>`;
let writtenText = `Alright, here's the tip of the day! The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`;
//console.log(booktip[8]);
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
let conv = agent.conv();
conv.ask(`<speak>${spokenText}</speak>`);
conv.ask(new BasicCard({
title: `Tip of the day!`,
subtitle: `${par}`,
text: `The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`,
buttons: new Button({
title: 'Read',
url: `${booktip[8]}`,
})
}));
conv.ask(`<speak><p><s>Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?</s></p></speak>`);
// Add Actions on Google library responses to your agent's response
agent.add(conv);
} else {
agent.add(writtenText + ' Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?');
}
}
function meetupIntent(agent) {
let conv = agent.conv();
let record;
console.log(meetups);
for(var i = 0; i<meetups.length; i++){
let d = moment(meetups[i][0], 'YYYY-MM-DD');
let today = moment(new Date());
if(moment(d).isSameOrAfter(today)) {
// the i event is not in the past
record = meetups[i];
console.log(record);
break;
}
}
let date = getSpokenDate(record[0]);
let spokenText1 = `The next meetup will be ${date} at ${record[1]} in ${record[3]}.`;
let spokenText2 = `The topic will be <emphasis level="moderate">${record[2]}.</emphasis>`;
let spokenText3 = `You can register via our newsletter.`;
let writtenText = `${spokenText1} The topic will be ${record[2]}. ${spokenText3}`;
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
conv.ask(`<speak>${spokenText1} ${spokenText2} ${spokenText3}</speak>`);
conv.ask(new BasicCard({
title: `Meetup`,
subtitle: `${record[2]}`,
text: `${record[0]} ${record[1]} - ${record[3]}`,
buttons: new Button({
title: 'Register',
url: `http://www.meetup.com`
})
}));
conv.ask('<speak><p><s>Is there anything else I can help you with?</s></p></speak>');
agent.add(conv);
} else {
agent.add(`${writtenText} Is there anything else I can help you with?`);
}
}
exports.dialogflow = async (request, response) => {
var agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
const client = await getSheetsClient();
const allBooks = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Books&Blogs!A:I',
});
const allEvents = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Meetups!A:D',
});
books = allBooks.data.values;
meetups = allEvents.data.values;
books.shift();
meetups.shift();
var intentMap = new Map();
intentMap.set('Tip Intent', tipIntent);
intentMap.set('Meetup Intent', meetupIntent);
agent.handleRequest(intentMap);
};
- Klicken Sie auf den Link Umgebungsvariablen, Netzwerk, Zeitlimits und mehr.
- Wählen Sie das Dienstkonto Dialogflow-Integrationen aus.
Standardmäßig wird ein GAE App Engine-Dienstkonto verwendet. Es sollte jedoch dasselbe Dienstkonto sein, das Sie in den ersten Schritten dieser Anleitung in Google Tabellen freigegeben haben.
- Bevor wir die Cloud Functions-Funktion bereitstellen. Wir ändern eine Codezeile auf dem Tab index.js. Die dritte Codezeile:
const
ACCOUNTS_SHEET_ID = '1Yo_E8KONgSiUm00ZmTOqtjXCwULmc2JuI3sjxRyvrkE';
In einem der ersten Schritte haben wir diese Taste im Notepad geschrieben. Kopieren Sie diese ID und fügen Sie sie in Ihren Code ein.
- Jetzt sind wir bereit. Klicken Sie auf Erstellen. Das dauert einen Moment, da Ihre serverlose Funktion bereitgestellt wird.
Auftragsausführungen in Dialogflow aktivieren
- Zurück zu Dialogflow wechseln
- Klicken Sie im Hauptmenü auf Fulfillment (Auftragsausführung).
- Aktivieren Sie den Schalter Webhook.
- Geben Sie die URL der Cloud Functions-Funktion ein, die in die Zwischenablage kopiert wurde.
Beispiel: https://us-central1-leeboonstra-wiv-uhtefa.cloudfunctions.net/dialogflow
- Klicken Sie auf Speichern.
- Lassen Sie uns jetzt den Webhook testen, um zu sehen, ob der Code funktioniert, und die Abläufe direkt im Dialogflow-Simulator testen.
7. Actions on Google
Actions on Google ist eine Entwicklungsplattform für Google Assistant. Drittanbieter können damit „Aktionen“ entwickeln – Applets für Google Assistant, die erweiterte Funktionen bieten.
Du musst eine Google Action aufrufen, indem du Google bittest, eine App zu öffnen oder mit ihr zu sprechen.
Dadurch wird Ihre Aktion geöffnet, die Stimme wird geändert und Sie lassen die native Anzeige unverändert. den Umfang von Google Assistant. Das bedeutet, dass alles, was Sie den Agent ab jetzt fragen, von Ihnen erstellt werden muss. Sie können Google Assistant nicht plötzlich nach dem Wetter von Google fragen, wenn Sie das möchten. sollten Sie zuerst den Umfang Ihrer aktuellen Aktion (Ihrer App) schließen.
Aktion im Google Assistant-Simulator testen
Lassen Sie uns die folgende Unterhaltung testen:
Nutzer | Google Assistant |
„Hey Google, sprich mit meiner Test-App.“ | „Testversion meiner App herunterladen“ |
Nutzer | Ihr-Name-WIV |
- | „Hallo, ich bin Anna, die virtuelle Kundenservicemitarbeiterin von Women in Voice. Du kannst mich nach Informationen zu Treffen, Women in Voice oder nach einem Lesetipp fragen. Was möchten Sie wissen?“ |
Kann ich einen Tipp für ein Blog haben? | „Möchten Sie mehr über Chatbots, Voice oder beides erfahren?“ |
Chatbots | „Hier ist der Tipp des Tages! The Article Chatbots and The Challenge of Invisible Affordances of Cobus Greyling.Möchtest du ein weiteres Buch oder einen Artikeltipp? Außerdem kann ich dir mehr über Treffen oder unsere Tätigkeiten erzählen. Wie kann ich Ihnen helfen?“ |
Wann ist das nächste Treffen? | „Das nächste Treffen findet am 29. April um 18:00 Uhr in einem virtuellen Hangout statt. Thema: Online-Workshop: Google Actions with Dialogflow erstellen. Sie können sich über unseren Newsletter anmelden.Kann ich Ihnen noch bei etwas anderem weiterhelfen?“ |
Wie lautet die URL Ihrer Website? | „Sie finden uns unter www.womeninvoice.com. Kann ich sonst noch etwas für Sie tun?“ |
Nein, das wars, danke | „Alles klar! Hoffentlich sehen wir uns bei einem unserer Meetups wieder.“ |
- Zurück zum Google Assistant-Simulator
Öffnen Sie https://console.actions.google.com.
- Klicken Sie auf das Mikrofonsymbol und fragen Sie Folgendes:
Talk to my test app.
- Fragen wir nun:
Can I have a tip for a blog?
In diesem Fall sollte Folgendes zurückgegeben werden:
„Möchten Sie mehr über Chatbots, Voice oder beides erfahren?“
Chatbots
„Hier ist der Tipp des Tages! The Article Chatbots and The Challenge Of Invisible Affordances of Cobus Greyling.
Möchtest du noch einen Tipp für ein Buch oder einen Artikel erhalten? Außerdem kann ich dir mehr über Treffen oder unsere Tätigkeiten erzählen. Wie kann ich Ihnen helfen?“
- Versuchen wir es mit einer anderen Version der gleichen Frage:
"Yes, I want to read more about Voice"
„Hier ist der Tipp des Tages! The Book Designing Voice User Interfaces: Principles of Conversational Experiences. ... von Cathy Pearl.
Möchtest du noch einen Tipp für ein Buch oder einen Artikel erhalten? Außerdem kann ich dir mehr über Treffen oder unsere Tätigkeiten erzählen. Wie kann ich Ihnen helfen?“
Beachten Sie, dass Sie diese Trainingsformulierung noch nie in Dialogflow verwendet haben. Es stimmte genau auf den richtigen Intent ab.
Beachten Sie auch, dass Sie keine Anschlussfrage erhalten haben, da Sie genügend Informationen zur Verfügung gestellt haben, damit Dialogflow fortfahren kann.
- Fahren Sie mit den folgenden Formulierungen in Dialogflow fort:
What's the URL for your website
Bye
Fehler? Prüfen Sie die Protokolle.
Jedes Mal, wenn Sie console.log()
in Ihrem Cloud Functions-Code verwenden, werden Daten in Ihre GCP-Logs (Stackdriver) geschrieben. Sie können auf diese Logs zugreifen, indem Sie die Cloud Console öffnen > Logging:
Im ersten Drop-down-Menü können Sie Cloud Functions > dialogflow, um nach Ihren Logs zu filtern.
8. Glückwunsch
Sie haben Ihre erste Google Assistant-Aktion mit Dialogflow erstellt. Gut gemacht!
Wie Sie vielleicht bemerkt haben, wurde Ihre Aktion im Testmodus ausgeführt, der mit Ihrem Google-Konto verknüpft ist. Wenn Sie sich auf Ihrem Nest-Gerät oder in der Google Assistant App auf Ihrem iOS- oder Android-Smartphone mit demselben Konto anmelden. Sie können auch Ihre Aktion testen.
Das ist jetzt eine Workshop-Demo. Wenn du aber echte Anwendungen für Google Assistant entwickelst, könntest du deine Aktion zur Genehmigung einreichen. Weitere Informationen finden Sie in diesem Leitfaden.
Behandelte Themen
- So erstellen Sie einen Chatbot mit Dialogflow v2
- Benutzerdefinierte Entitäten mit Dialogflow erstellen
- Lineare Unterhaltung mit Dialogflow erstellen
- Webhook-Auftragsausführungen mit Dialogflow und Google Cloud Functions einrichten
- Anwendung mit Actions on Google in Google Assistant bereitstellen
Was liegt als Nächstes an?
Hat Ihnen dieses Code-Lab gefallen? Werfen Sie einen Blick auf diese tollen Labs!
- TV-Guide-Aktion mit Dialogflow und Actions on Google erstellen
- Build Actions for the Google Assistant with Dialogflow (Level 1) (Mit Dialogflow Aktionen für Google Assistant erstellen (Level 1))
- Build Actions for the Google Assistant with Dialogflow (Level 2) (Mit Dialogflow Aktionen für Google Assistant erstellen (Level 2))
- Build Actions for the Google Assistant with Dialogflow (Level 3) (Mit Dialogflow Aktionen für Google Assistant erstellen)
- Grundlegendes zur Auftragsausführung durch Einbindung von Dialogflow in Google Kalender
- Google Cloud Vision API in Dialogflow einbinden