Ihr Webhook verwendet derzeit hartcodierte Daten in der Funktion cruisePlanCoverage
.
In diesem Schritt der Anleitung erstellen Sie eine Spanner-Datenbank, füllen sie mit abgedeckten Zielen und aktualisieren Ihre Funktion, um die Datenbank abzufragen.
Projektkonfiguration
Ihr Dialogflow-Agent und die Datenbank müssen sich im selben Projekt befinden. Dies ist die einfachste Möglichkeit, für den sicheren Zugriff auf Ihre Datenbank. Außerdem müssen Sie die Spanner API aktivieren.
Wählen Sie vor dem Erstellen der Datenbank Ihr Projekt in der Google Cloud Console aus.
Aktivieren Sie die Spanner API für das Projekt.
Spanner-Instanz erstellen
Wenn Sie Spanner zum ersten Mal verwenden, müssen Sie eine Instanz erstellen eine Zuordnung von Ressourcen, die von Spanner-Datenbanken in dieser Instanz verwendet werden.
Rufen Sie in der Google Cloud Console die Seite Spanner-Instanzen auf.
Klicken Sie auf Instanz erstellen.
Geben Sie als Instanznamen Tutorial Instance ein.
Die Instanz-ID wird automatisch anhand des Instanznamens eingegeben.
Gehen Sie unter Konfiguration auswählen so vor: Behalten Sie die Standardoption Regional bei und wählen Sie dieselbe Region aus. Ort das Sie beim Erstellen der Funktion ausgewählt haben.
Gehen Sie unter Rechenkapazität zuweisen so vor: 100 Verarbeitungseinheiten ein. Dies bietet eine Mindestkapazität für die Anleitung.
Klicken Sie auf Erstellen. In der Google Cloud Console wird die Seite Übersicht für die von Ihnen erstellte Instanz angezeigt.
Spanner-Datenbank erstellen
Nachdem Sie eine Instanz haben, müssen Sie eine Datenbank erstellen. So erstellen Sie eine Datenbank:
- Klicken Sie auf der Seite Übersicht für die Instanz auf Datenbank erstellen.
- Geben Sie als Datenbanknamen tutorial-database ein.
- Wählen Sie den Datenbankdialekt Google Standard SQL aus.
- Klicken Sie auf Erstellen. In der Google Cloud Console wird die Seite Übersicht für die Datenbank angezeigt. die Sie erstellt haben.
Tabelle für die Datenbank erstellen
Nachdem Sie eine Datenbank haben, müssen Sie eine Tabelle für die Datenbank erstellen. So erstellen Sie eine Tabelle:
- Klicken Sie auf der Seite Übersicht der Datenbank im Bereich „Tabellen“ auf Tabelle erstellen.
Geben Sie auf der Seite DDL-Anweisungen schreiben Folgendes ein:
CREATE TABLE Destinations ( Destination STRING(1024), Covered BOOL, ) PRIMARY KEY(Destination);
Klicken Sie auf Senden. In der Google Cloud Console wird die Seite Übersicht der Datenbank angezeigt. Dort wird angezeigt, dass Schemaupdates ausgeführt werden. Warten Sie, bis das Update abgeschlossen ist.
Daten in eine Tabelle einfügen
Nachdem Sie Ihrer Datenbank eine Tabelle hinzugefügt haben, müssen Sie der Tabelle Daten hinzufügen. So fügen Sie Daten hinzu:
- Klicken Sie in der Liste der Tabellen auf der Seite Übersicht der Datenbank auf die Tabelle „Ziele“. In der Google Cloud Console wird die Seite Schema der Tabelle „Ziele“ angezeigt.
- Klicken Sie im linken Navigationsmenü Klicken Sie auf Daten, um die Seite Daten der Tabelle „Ziele“ aufzurufen.
Klicken Sie auf Einfügen. In der Google Cloud Console wird die Seite Abfrage der Tabelle „Ziele“ mit einem neuen Abfragetab angezeigt, der
INSERT
- undSELECT
-Anweisungen enthält. Überschreiben Sie diese Anweisungen mit dem folgenden Code:INSERT INTO Destinations (Destination, Covered) VALUES('anguilla', TRUE), ('canada', TRUE), ('china', TRUE), ('italy', TRUE), ('mexico', TRUE), ('spain', FALSE);
Klicken Sie auf Ausführen.
Klicken Sie im linken Navigationsmenü Klicken Sie noch einmal auf Daten, um die Daten der Zieltabelle anzuzeigen. Prüfen Sie, ob die Tabelle die gewünschten Daten enthält.
Cloud Function für die Abfrage der Datenbank aktualisieren
Die Funktion cruisePlanCoverage
im Webhook-Code
Prüft, ob bestimmte Umgebungsvariablen festgelegt sind
mit Informationen zum Herstellen einer Verbindung zur Datenbank.
Wenn diese Umgebungsvariablen nicht festgelegt sind,
die Funktion eine hartcodierte Liste von Zielen verwendet.
Nachdem Sie eine Datenbank eingerichtet haben, aktualisieren Sie Ihre Cloud-Funktion, um die erforderlichen Umgebungsvariablen festzulegen:
Öffnen Sie die Übersichtsseite zu Cloud Functions.
Klicken Sie auf die Funktion „tutorial-telecommunications-webhook“, um die Detailseite aufzurufen.
Klicken Sie auf Bearbeiten.
Öffnen Sie den Bereich Laufzeit-, Build- und Verbindungseinstellungen.
Wählen Sie den Tab Laufzeit aus.
Fügen Sie im Abschnitt Laufzeit-Umgebungsvariablen die folgenden Variablen hinzu:
PROJECT_ID
: Ihre Projekt-ID.SPANNER_INSTANCE_ID
: Ihre Spanner-Instanz-ID (wahrscheinlichtutorial-instance
)SPANNER_DATABASE_ID
: Ihre Spanner-Datenbank-ID (wahrscheinlichtutorial-database
)
Klicken Sie auf Weiter.
Klicken Sie auf Bereitstellen.
Warten Sie, bis die Statusanzeige anzeigt, dass die Funktion wurde bereitgestellt.
Agent testen
Der Agent kann jetzt verwendet werden. Klicken Sie in der Dialogflow-Konsole auf die Schaltfläche Test Agent (Agent testen). um den Simulator zu öffnen. Versuchen Sie, die folgende Unterhaltung mit dem Agent zu führen:
Konversationsrunde | Ich | Agent |
---|---|---|
1 | Hallo! | Hallo! Ich bin der virtuelle Kundenservicemitarbeiter für Telekommunikation. Ich kann Ihnen bei Fragen zur Abrechnung und Planung helfen, Fehler beheben und Reise- und Kreuzfahrtpläne hinzufügen. Wie kann ich Ihnen helfen? |
2 | Ich möchte einen Kreuzfahrtplan hinzufügen | Ich prüfe das für Sie. Wie lautet Ihre Telefonnummer bei uns? |
3 | 123-123-1234 | Wie viele Tage dauert Ihre Kreuzfahrt? |
4 | 7 | Option 1 umfasst Anrufe und SMS. Die Kosten betragen [XX] $ pro Tag. Weitere Informationen finden Sie hier: [URL]. Option 2 umfasst Anrufe, SMS und Daten. Sie kostet [XX] $ pro Tag. Weitere Informationen finden Sie hier: [URL]. Welchen Kreuzfahrtplan möchten Sie hinzufügen? |
5 | Option 1 | Alles klar. Ich habe diesen Tarif Ihrem Konto hinzugefügt. Während Ihrer Kreuzfahrt benötigen Sie unter Umständen auch an Land Abdeckung. In welchem Hafen legen Sie an? |
6 | Italien | Und wie viele Tage verbringen Sie dort? |
7 | 3 | Außerdem haben wir gute Nachrichten: In Italien ist die Abdeckung an Land kostenlos. Das war's! Kann ich sonst noch etwas für Sie tun? |
Wenn Sie sich den Code ansehen, Italien ist nicht in der hartcodierten Liste der abgedeckten Reiseziele enthalten. Das bedeutet, dass Ihr Webhook eine Verbindung zur Datenbank hergestellt hat, die Italien umfasst.
Fehlerbehebung
Der Webhook-Code enthält Logging-Anweisungen. Wenn Probleme auftreten, versuchen Sie, Logs ansehen für Ihre Cloud Functions-Funktion.
Wenn Ihre Funktion keine Verbindung zur Datenbank herstellen kann und in den Protokollen ein Berechtigungsfehler angezeigt wird, müssen Sie möglicherweise die Rolle für das Standarddienstkonto korrigieren, das von Ihrer Funktion verwendet wird.
Dieses Dienstkonto hat das Format PROJECT_ID@appspot.gserviceaccount.com
.
Sie haben folgende Möglichkeiten, das Problem zu beheben:
Wenn das Standarddienstkonto auf der IAM-Hauptseite angezeigt wird, Berechtigungen für das Dienstkonto ändern Die Rolle Bearbeiter ist in Ordnung, aber in einem Produktionsszenario benötigen Sie möglicherweise eine detailliertere Rolle.
Wenn das Standarddienstkonto nicht auf der IAM-Hauptseite angezeigt wird, Erforderliche Rolle gewähren indem Sie das Dienstkonto als neues Hauptkonto hinzufügen.
Alternativ können Sie ein von Ihnen erstelltes Dienstkonto verwenden.
Weitere Informationen
Weitere Informationen zu den oben genannten Schritten finden Sie unter:
- Cloud Spanner mit Cloud Functions verwenden
- Datenbank mit der Google Cloud Console erstellen und abfragen
- Google Standard-SQL-Datendefinitionssprache
- Datenbearbeitungssprache von Google-Standard-SQL