Auftragsausführung bereitstellen (Dialogflow)

Nachdem Sie die Webhook-Auftragsausführung erstellt haben, stellen Sie sie für die Produktion bereit und verbinden sie mit Ihrer Aktion. Die folgenden Schritte zeigen, wie Sie Ihre Umgebung für das Deployment in Cloud Functions for Firebase für das Produktionshosting einrichten. Sie können jedoch eine beliebige Webhosting-Plattform zum Hosten der Auftragsausführung auswählen, die HTTPS-Anfragen und -Antworten unterstützt.

Wenn Sie den Webhook bereits auf einer Webhosting-Plattform bereitgestellt haben, können Sie mit Webhook mit Ihrer Aktion verbinden fortfahren. Die abschließenden Schritte im folgenden Verfahren unterscheiden sich je nachdem, ob Sie Dialogflow oder das Actions SDK verwenden.

In Cloud Functions for Firebase bereitstellen

  1. Laden Sie Node.js herunter und installieren Sie die App.
  2. Firebase CLI einrichten und initialisieren Wenn der folgende Befehl mit dem Fehler EACCES fehlschlägt, müssen Sie möglicherweise npm-Berechtigungen ändern.

    npm install -g firebase-tools
    
  3. Authentifizieren Sie das Firebase-Tool mit Ihrem Google-Konto:

    firebase login
    
  4. Rufen Sie das Projektverzeichnis für Ihre Aktion auf und initialisieren Sie Firebase. Sie werden aufgefordert, die Features der Firebase CLI auszuwählen, die Sie für Ihr Actions-Projekt einrichten möchten. Wählen Sie Functions und andere Features aus, die Sie möglicherweise verwenden möchten, wie Firestore. Drücken Sie dann die Eingabetaste, um den Vorgang zu bestätigen und fortzufahren:

    cd <cloud_function_dir>
    firebase init
    
  5. Verknüpfen Sie das Firebase-Tool mit Ihrem Actions-Projekt, indem Sie es mithilfe der Pfeiltasten in der Projektliste auswählen:

    vornehmen.
  6. Nachdem Sie das Projekt ausgewählt haben, startet das Firebase-Tool die Functions-Einrichtung. Sie fragt Sie, welche Sprache Sie verwenden möchten. Verwenden Sie die Pfeiltasten, um auszuwählen, und drücken Sie die Eingabetaste, um fortzufahren.

    === Functions Setup
    A functions directory will be created in your project with a Node.js package pre-configured. Functions can be deployed with firebase deploy. ? What language would you like to use to write Cloud Functions? (Use arrow keys) > JavaScript TypeScript
  7. Legen Sie fest, ob Sie ESLint verwenden möchten, um wahrscheinliche Fehler zu erkennen und die Stileingabe Y oder N zu erzwingen:

    ? Do you want to use ESLint to catch probable bugs and enforce style? (Y/n)
  8. Rufen Sie die Projektabhängigkeiten ab, indem Sie Y in die Eingabeaufforderung eingeben:

    ? Do you want to install dependencies with npm now? (Y/n)

    Sobald die Einrichtung abgeschlossen ist, sollte die Ausgabe in etwa so aussehen:

    ✔  Firebase initialization complete!
  9. Installieren Sie die Abhängigkeit actions-on-google:

    cd <cloud_function_dir>/functions
    npm install actions-on-google
    
  10. Rufen Sie die Auftragsausführungsabhängigkeiten ab und stellen Sie die Auftragsausführungsfunktion bereit:

    npm install
    firebase deploy --only functions
    

    Die Bereitstellung dauert einige Minuten. Danach sieht die Ausgabe in etwa so aus: Sie benötigen die Funktions-URL, die in Dialogflow eingegeben werden muss.

    ✔  Deploy complete!
    Project Console: https://console.firebase.google.com/project/exampleproject-123/overview Function URL (cloudFunctionName): https://us-central1-exampleproject-123.cloudfunctions.net/cloudFunctionName

Webhook mit Ihrer Aktion verbinden

Wenn Sie Dialogflow verwenden:Rufen Sie in der Dialogflow-Konsole die Option Auftragsausführung auf, setzen Sie die Schaltfläche Webhook auf AKTIVIERT und ersetzen Sie die URL im Feld URL durch die Funktions-URL.

Wenn du das Actions SDK verwendest:Erstelle im Objekt conversations ein Objekt, um die Auftragsausführung in deinem Aktionspaket zu deklarieren:

{
  "actions": [
    {
      "description": "Default Welcome Intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "myFulfillmentFunction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to myFulfillmentFunction"
          ]
        }
      }
    }
  ],
  "conversations": {
    "myFulfillmentFunction": {
      "name": "myFulfillmentFunction",
      "url": "https://us-central1-myprojectname-ab123.cloudfunctions.net/cloudFunctionName"
    }
  },
  "locale": "en"
}