Deployment del fulfillment (Dialogflow)

Dopo aver creato il fulfillment webhook, esegui il deployment in produzione e connettilo all'Azione. I passaggi seguenti mostrano come configurare l'ambiente per il deployment in Cloud Functions for Firebase per l'hosting di produzione. Tuttavia, puoi scegliere qualsiasi piattaforma di hosting web che supporti richieste e risposte HTTPS per ospitare il fulfillment.

Se hai già eseguito il deployment del webhook su una piattaforma di hosting web, puoi passare a Collegare il webhook all'Azione. Tieni presente che i passaggi finali della procedura seguente variano a seconda che utilizzi Dialogflow o l'SDK Actions.

Esegui il deployment in Cloud Functions for Firebase

  1. Scarica e installa Node.js.
  2. Configura e inizializza l'interfaccia a riga di comando di Firebase. Se il comando seguente non va a buon fine e viene restituito un errore EACCES, potresti dover modificare le autorizzazioni npm.

    npm install -g firebase-tools
    
  3. Autentica lo strumento Firebase con il tuo Account Google:

    firebase login
    
  4. Vai alla directory del progetto Azione e inizializza Firebase. Ti verrà chiesto di selezionare le funzionalità dell'interfaccia a riga di comando di Firebase da configurare per il progetto Actions. Scegli Functions e altre funzionalità che potresti voler utilizzare, come Firestore, quindi premi Invio per confermare e continuare:

    cd <cloud_function_dir>
    firebase init
    
  5. Associa lo strumento Firebase al progetto Actions selezionandolo con i tasti freccia per spostarti nell'elenco dei progetti:

    .
  6. Dopo aver scelto il progetto, lo strumento Firebase avvia la configurazione di Functions e ti chiede quale lingua usare. Selezionalo con i tasti freccia e premi Invio per continuare.

    === 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. Scegli se vuoi utilizzare ESLint per individuare probabili bug e applicare la digitazione dello stile Y o N:

    ? Do you want to use ESLint to catch probable bugs and enforce style? (Y/n)
  8. Ottieni le dipendenze del progetto digitando Y nel prompt:

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

    Una volta completata la configurazione, verrà visualizzato un output simile al seguente:

    ✔  Firebase initialization complete!
  9. Installa la dipendenza actions-on-google:

    cd <cloud_function_dir>/functions
    npm install actions-on-google
    
  10. Recupera le dipendenze di fulfillment ed esegui il deployment della funzione di fulfillment:

    npm install
    firebase deploy --only functions
    

    Il deployment richiede alcuni minuti. Al termine, visualizzerai un output simile al seguente. Sarà necessario l'URL della funzione da inserire in Dialogflow.

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

Collega il webhook all'azione

Se utilizzi Dialogflow: nella console Dialogflow, vai a Fulfillment, imposta il pulsante Webhook su ATTIVATO e sostituisci l'URL nel campo URL con l'URL funzione.

Se utilizzi l'SDK Actions: crea un oggetto all'interno dell'oggetto conversations per dichiarare il fulfillment nel pacchetto Azione:

{
  "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"
}