Datenbank abfragen

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. So kann Ihre Funktion am einfachsten sicher auf Ihre Datenbank zugreifen. Außerdem müssen Sie die Spanner API aktivieren.

  1. Wählen Sie vor dem Erstellen der Datenbank, in der Google Cloud Console Ihr Projekt aus.

    Zur Projektauswahl

  2. Aktivieren Sie die Spanner API für das Projekt.

    Spanner API aktivieren

Spanner-Instanz erstellen

Wenn Sie Spanner zum ersten Mal verwenden, müssen Sie eine Instanz erstellen. Dabei handelt es sich um eine Zuordnung von Ressourcen, die von Spanner-Datenbanken in dieser Instanz verwendet werden.

  1. Rufen Sie in der Google Cloud Console die Seite Spanner-Instanzen auf.

    Spanner-Instanzen aufrufen

  2. Klicken Sie auf Instanz erstellen.

  3. Geben Sie als Instanznamen Tutorial Instance ein.

  4. Die Instanz-ID wird automatisch anhand des Instanznamens eingegeben.

  5. Behalten Sie unter Konfiguration auswählen die Standardoption Regional bei und wählen Sie denselben Standort für die Region aus, den Sie beim Erstellen der Funktion ausgewählt haben.

  6. Geben Sie unter Rechenkapazität zuweisen 100 Verarbeitungseinheiten ein. Dies bietet eine Mindestkapazität für die Anleitung.

  7. 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 nun eine Instanz haben, müssen Sie eine Datenbank erstellen. So erstellen Sie eine Datenbank:

  1. Klicken Sie auf der Seite Übersicht der Instanz auf Datenbank erstellen.
  2. Geben Sie als Datenbanknamen tutorial-database ein.
  3. Wählen Sie den Datenbankdialekt Google Standard-SQL aus.
  4. 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 nun eine Datenbank haben, müssen Sie eine Tabelle für die Datenbank erstellen. So erstellen Sie eine Tabelle:

  1. Klicken Sie im Bereich „Tabellen“ auf der Seite Übersicht der Datenbank auf Tabelle erstellen.
  2. Geben Sie auf der Seite DDL-Anweisungen schreiben Folgendes ein:

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. Klicken Sie auf Senden. In der Google Cloud Console wird wieder die Seite Übersicht der Datenbank angezeigt und es wird darauf hingewiesen, dass Schemaaktualisierungen ausgeführt werden. Warten Sie, bis die Aktualisierung abgeschlossen ist.

Daten in die Tabelle einfügen

Nachdem Ihre Datenbank nun eine Tabelle enthält, müssen Sie der Tabelle Daten hinzufügen. So fügen Sie Daten hinzu:

  1. Klicken Sie in der Liste der Tabellen auf der Seite Übersicht der Datenbank auf die Tabelle „Destinations“. In der Google Cloud Console wird die Seite Schema der Tabelle „Destinations“ angezeigt.
  2. Klicken Sie im linken Navigationsmenü auf Daten , um die Seite Daten der Tabelle „Destinations“ aufzurufen.
  3. Klicken Sie auf Einfügen. In der Google Cloud Console wird die Seite Abfrage der Tabelle „Destinations“ mit einem neuen Abfragetab angezeigt, der INSERT und SELECT Anweisungen enthält. Überschreiben Sie diese Anweisungen mit Folgendem:

    INSERT INTO Destinations (Destination, Covered)
    VALUES('anguilla', TRUE),
          ('canada', TRUE),
          ('china', TRUE),
          ('italy', TRUE),
          ('mexico', TRUE),
          ('spain', FALSE);
    
  4. Klicken Sie auf Ausführen.

  5. Klicken Sie im linken Navigationsmenü noch einmal auf Daten , um die Daten der Tabelle „Destinations“ aufzurufen. Prüfen Sie, ob die Tabelle die gewünschten Daten enthält.

Cloud Functions-Funktion aktualisieren, um die Datenbank abzufragen

Die Funktion cruisePlanCoverage im Webhook-Code prüft, ob bestimmte Umgebungsvariablen mit Informationen zum Herstellen einer Verbindung zur Datenbank festgelegt sind. Wenn diese Umgebungsvariablen nicht festgelegt sind, verwendet die Funktion eine hartcodierte Liste von Zielen.

Nachdem Sie nun eine Datenbank eingerichtet haben, aktualisieren Sie Ihre Cloud Functions-Funktion, um die erforderlichen Umgebungsvariablen festzulegen:

  1. Öffnen Sie die Übersichtsseite zu Cloud Functions.

    Übersicht zu Cloud Functions aufrufen

  2. Klicken Sie auf die Funktion „tutorial-telecommunications-webhook“, um die zugehörige Detailseite aufzurufen.

  3. Klicken Sie auf Bearbeiten.

  4. Öffnen Sie den Bereich Laufzeit-, Build- und Verbindungseinstellungen.

  5. Wählen Sie den Tab Laufzeit aus.

  6. Fügen Sie im Bereich „Laufzeit-Umgebungsvariablen“ die folgenden Variablen hinzu:

    • PROJECT_ID: Ihre Projekt-ID
    • SPANNER_INSTANCE_ID: Ihre Spanner-Instanz-ID (wahrscheinlich tutorial-instance)
    • SPANNER_DATABASE_ID: Ihre Spanner-Datenbank-ID (wahrscheinlich tutorial-database)
  7. Klicken Sie auf Weiter.

  8. Klicken Sie auf Bereitstellen.

  9. Warten Sie, bis die Statusanzeige angibt, dass die Funktion erfolgreich bereitgestellt wurde.

Agent testen

Ihr Agent ist jetzt bereit für einen Test. Klicken Sie in der Dialogflow Console auf die Schaltfläche Agent testen , um den Simulator zu öffnen. Versuchen Sie, die folgende Unterhaltung mit dem Agenten zu führen:

Unterhaltungsrunde Ich Agent
1 Hallo! Hallo! Ich bin der virtuelle Kundenservicemitarbeiter für Telekommunikation. Ich kann Ihnen bei Fragen zu Rechnungen und Tarifen helfen, Fehler beheben und Reisepläne und Kreuzfahrten hinzufügen. Wie kann ich Ihnen heute helfen?
2 Ich möchte eine Kreuzfahrt hinzufügen. Ich sehe mal nach. Wie lautet Ihre Telefonnummer?
3 123-123-1234 Wie viele Tage dauert Ihre Kreuzfahrt?
4 7 Option 1 umfasst Gesprächsminuten und SMS. Sie kostet $[XX] pro Tag. Weitere Informationen finden Sie hier: [URL]. Option 2 umfasst Gesprächsminuten, SMS und Daten. Sie kostet $[XX] pro Tag. Weitere Informationen finden Sie hier: [URL]. Welche Kreuzfahrt 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 möglicherweise auch eine Abdeckung an Land. In welchem Hafen machen Sie Halt?
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 den Code prüfen, ist Italien nicht in der hartcodierten Liste der abgedeckten Ziele enthalten. Das bedeutet, dass Ihr Webhook erfolgreich eine Verbindung zur Datenbank hergestellt hat, die Italien enthält.

Fehlerbehebung

Der Webhook-Code enthält Logging-Anweisungen. Wenn Probleme auftreten, rufen Sie die Logs für Ihre Cloud Functions-Funktion auf.

Wenn Ihre Funktion keine Verbindung zur Datenbank herstellt und in den Logs 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 können das Problem auf eine der folgenden Arten beheben:

Weitere Informationen

Weitere Informationen zu den oben genannten Schritten finden Sie unter: