Praxis: Workshop: Women in Voice

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:

  1. Dialogflow v2-Agent erstellen
  2. Entitäten erstellen
  3. Intents erstellen
  4. Webhook mit Google Cloud-Funktionen einrichten
  5. Wissensdatenbank verwenden, um FAQs zu importieren
  6. Chatbot testen
  7. 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

2. Einrichtung

Webaktivitäten im Browser aktivieren

  1. Klicken Sie auf http://myaccount.google.com/activitycontrols.

  1. Stellen Sie sicher, dass Web- und Die App-Aktivitäten sind aktiviert:

bf8d16b828d6f79a.png

Dialogflow-Agent erstellen

  1. Öffnen: https://console.dialogflow.com

  1. 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ü.

1d7c2b56a1ab95b8.png

  1. Geben Sie einen Agent-Namen an: yourname-wiv (verwenden Sie Ihren eigenen Namen)
  2. Wählen Sie als Standardsprache Englisch – en aus.
  3. Wählen Sie als Standardzeitzone die nächstgelegene Zeitzone aus.
  4. 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.)
  5. Klicken Sie auf Erstellen.

382af956cbf308a4.png

Dialogflow konfigurieren

  1. Klicken Sie im linken Menü neben dem Projektnamen auf das Zahnradsymbol.

1d7c2b56a1ab95b8.png

  1. Geben Sie die folgende Beschreibung des Agents ein: Women in Voice-Agent
  2. Scrollen Sie nach unten zu Betafunktionen und legen Sie den Schalter um, um die Betafunktionen zu aktivieren.
  3. 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.

e80c17acc3cce993.png

  1. Klicken Sie auf Speichern.
  2. Klicken Sie auf Fertig.

Actions on Google konfigurieren

  1. Klicken Sie im rechten Seitenbereich unter So funktioniert Google Assistant auf den Link Google Assistant.

5a4940338fc351e3.png

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:

3fd4e594fa169072.png

  1. Versuchen Sie, die Aktion im Simulator** zu öffnen. Klicken Sie dazu auf den Projektnamen.**
  2. 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.

3b6bc284050571f5.png

  1. Klicken Sie auf Speichern.
  2. Wählen Sie in der Menüleiste Testen aus.

dd55b141677932fe.png

  1. 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.

  1. Rufen Sie diese URL auf und melden Sie sich an.

gcpcredits.com/wivnl

  1. Klick: Klicken Sie hier, um auf Ihr Guthaben zuzugreifen.
  2. 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!

  1. Öffnen Sie diese Google-Tabelle in einem neuen Browsertab, falls Sie dies noch nicht getan haben:
  2. https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
  3. WICHTIG: Erstellen Sie eine Kopie dieses Tabellenblatts. Klicken Sie auf Datei > Kopie erstellen
  4. Nachdem das Tabellenblatt kopiert wurde, klicken Sie auf Freigeben.
  5. Wir müssen dem Dialogflow-Dienstkonto Bearbeitungsrechte zuweisen. Öffnen Sie dazu Dialogflow > Einstellungen (Zahnrad).
  6. Scrollen Sie nach unten zu Google-Projekt.
  7. Kopieren Sie die E-Mail-Adresse des Dienstkontos. Sie sollte in etwa so aussehen: dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com

8bc778a04efb3dd2.png

  1. Fügen Sie dieses Dienstkonto in das Pop-up-Fenster „Freigeben“ von Google Tabellen ein und weisen Sie ihm die Berechtigung Bearbeiten zu.

e296b9c069c2028e.png

  1. Als Nächstes müssen wir uns die Tabellen-ID merken, an der wir gerade arbeiten.

f9061a3724086bf7.png

    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.
  1. 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.

8b42de259eb40547.png

  1. Klicken Sie darauf und dann oben auf die Schaltfläche Google Sheets API aktivieren.

4b41a64a6cd5a37e.png

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

  1. Klicken Sie in der Dialogflow-Konsole im Menüpunkt Entities (Entitäten) auf.
  2. Klicken Sie auf Create Entity (Entität erstellen).
  3. Entitätsname: tech (nur Kleinbuchstaben)
  4. 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

f9b213472a75915b.png

5**.** Wechseln Sie in den **RAW-Bearbeitungsmodus**, indem Sie neben der blauen Schaltfläche zum Speichern auf die Menüschaltfläche klicken.

e294b49b123e034f.png

  1. 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"

6cfaa328bcd2bad3.png

  1. 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.

  1. 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.

17610dbd5450e53.png

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?“

  1. Scrollen Sie nach unten zu Antworten.
  2. Alle Textantworten löschen.
  3. 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.

a0078ea79188dcb3.png

  1. 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.

62f0f58753463fbe.png

  1. Klicken Sie auf Speichern.

Weitere Informationen zu SSML für Actions on Google

  1. Lassen Sie uns diesen Intent testen. Zuerst können wir es im Dialogflow-Simulator testen.

Typ: Hello. Sie sollte diese Meldung zurückgeben.

12d40056fbd25dfe.png

  1. 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

  1. Klicken Sie auf Intents > Standard-Fallback-Intent
  2. Scrollen Sie nach unten zu Antworten.
  3. Alle Textantworten löschen.
  4. 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.

bdecc217bafff97b.png

  1. Klicken Sie auf Speichern.

Hinweis: Wenn Sie keine Google Assistant-Ausgabe eingeben, wird die Standardausgabe verwendet.

Stop-Intent erstellen

  1. Klicken Sie auf den Menüpunkt Intents.
  2. Klicken Sie auf Create Intent (Intent erstellen).
  3. Geben Sie den Intent-Namen ein: Stop Intent
  4. 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

7ec6455cabdf7e36.png

  1. Scrollen Sie nach unten zu Antworten.> Antwort hinzufügen
  2. 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!
  1. 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.

ba532398680d457d.png

  1. 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.“

  1. Klicken Sie auf den Menüpunkt Intents.
  2. Klicken Sie auf Create Intent (Intent erstellen).
  3. 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.)
  4. 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?
  1. Klicken Sie auf Fulfillment > Auftragsausführung aktivieren

7eb73ba04d76140e.png

  1. Stellen Sie den Schalter für Webhook-Aufruf für diesen Intent aktivieren auf „Ein“.

748a82d9b4d7d253.png

  1. 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> &lt;title&gt; 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?“

  1. Klicken Sie noch einmal auf den Menüpunkt Intents.
  2. Klicken Sie auf Create Intent (Intent erstellen).
  3. 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.)
  4. 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
  1. Scrollen Sie nach unten zu Aktion und Parameter.
  2. Technologie als erforderlich kennzeichnen

7cdf7fdf5d2c3fbe.png

Klicken Sie auf Prompt definieren und geben Sie Folgendes ein:

  • Do you want to read more about Chatbots, Voice or Both?
  1. 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

7eb73ba04d76140e.png

  1. Stellen Sie den Schalter für Webhook-Aufruf für diesen Intent aktivieren auf „Ein“.

748a82d9b4d7d253.png

  1. 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.

  1. Wählen Sie das Tag en aus, um im Menü oben die englische Sprache auszuwählen.
  2. Wählen Sie im Menü Wissen (Beta) aus.

e0a3d2e03dd1076c.png

  1. Klicke auf die rechte blaue Schaltfläche: Wissensdatenbank erstellen
  2. Gib einen Namen in der Wissensdatenbank ein. Women in Voice und klicke auf Speichern.
  3. Klicken Sie auf Ersten Link erstellen.

9b2ca6b25c4100ab.png

  1. Dadurch wird ein Fenster geöffnet.

Verwenden Sie die folgende Konfiguration:

Dokumentname: FAQ-Tabelle für Frauen in Voice

Wissenstyp: FAQs

MIME-Typ: CSV

  1. Wir benötigen die Daten aus diesem Tabellenblatt. Öffnen Sie das Datenblatt und wählen Sie den Tab „FAQs“ aus.
  2. Wählen Sie Datei > Herunterladen > CSV-Datei

e7f0066408fc1721.png

  1. 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:

64513e2e484dda31.png

  1. Klicken Sie auf Antwort hinzufügen.

Erstelle die folgenden Antworten und klicke auf Speichern:

$Knowledge.Answer[1]

  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.

  1. Klicken Sie im Dialogflow-Menü auf Knowledge (Beta), um zu allen Wissensdatenbank-Connectors zurückzukehren.
  2. 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

  1. Rufen Sie in einem anderen Browsertab http://console.cloud.google.com auf.
  2. Wählen Sie im linken Menü Cloud Functions aus.
  3. Klicken Sie auf Funktion erstellen.

bf2441ba1271a95e.png

  1. 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
  1. Achten Sie darauf, dass dieses Authentifizierungskästchen aktiviert ist:

317140d44ec3299c.png

61ecb8f57a6fd21b.png

  1. 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
}
  1. 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);
};

b130ee596061832c.png

  1. Klicken Sie auf den Link Umgebungsvariablen, Netzwerk, Zeitlimits und mehr.

e81c29549f696937.png

  1. 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.

61ecb8f57a6fd21b.png

  1. 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.

  1. Jetzt sind wir bereit. Klicken Sie auf Erstellen. Das dauert einen Moment, da Ihre serverlose Funktion bereitgestellt wird.

Auftragsausführungen in Dialogflow aktivieren

  1. Zurück zu Dialogflow wechseln
  2. Klicken Sie im Hauptmenü auf Fulfillment (Auftragsausführung).
  3. Aktivieren Sie den Schalter Webhook.
  4. 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

  1. Klicken Sie auf Speichern.

89dfd437c6689538.png

  1. Lassen Sie uns jetzt den Webhook testen, um zu sehen, ob der Code funktioniert, und die Abläufe direkt im Dialogflow-Simulator testen.

297e8f7ed1b9e801.png

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.“

  1. Zurück zum Google Assistant-Simulator

Öffnen Sie https://console.actions.google.com.

  1. Klicken Sie auf das Mikrofonsymbol und fragen Sie Folgendes:

aa43d7f1568c4d80.png

  • Talk to my test app.
  1. 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?“

  1. 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.

  1. Fahren Sie mit den folgenden Formulierungen in Dialogflow fort:
  • What's the URL for your website
  • Bye

a0bd5578d6833c98.png

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!