Crea un'azione di conversazione (Dialogflow)

Definisci la conversazione per l'azione con fulfillment, di cui è stato eseguito il deployment come webhook contenente il codice dell'agente Dialogflow. della logica di conversazione. Il completamento indica all'azione cosa fare quando gli utenti effettuano richieste.

Per Interactive Canvas, il completamento comunica anche informazioni sul tuo un'app web all'assistente. Puoi usare un HtmlResponse per dire all'assistente di eseguire il rendering dell'app web. Un HtmlResponse può anche fornire aggiornamenti a data, che la logica personalizzata dell'app web utilizzata per apportare modifiche all'app web.

Questa pagina illustra come utilizzare HtmlResponse in evasione degli ordini e informazioni generali linee guida per l'uso di questo tipo di risposta.

Risposte HTML

Per inoltrare all'assistente informazioni sulla tua app web, devi includere un HtmlResponse nel completamento specifico dell'intento. Un elemento HtmlResponse può contenere l'URL dell'app web e i dati che la aggiornano. Quando invii HtmlResponse, si verificano i seguenti passaggi:

  1. Il completamento dell'intent abbinato invia un HtmlResponse al dispositivo.
  2. Il dispositivo utilizza l'URL nel HtmlResponse per caricare l'app web.
  3. Il payload JSON data viene passato all'app web in un callback.
  4. L'azione conversazionale invia un nuovo HtmlResponse per inviare aggiornamenti o per caricare nuovi stati.

Fulfillment campione

Il seguente estratto dall'esempio il codice di evasione degli ordini mostra come implementare HtmlResponse:

const functions = require('firebase-functions');
const {dialogflow, HtmlResponse} = require('actions-on-google');

const app = dialogflow({debug: true});
app.intent('welcome', (conv) => {
  conv.ask('Welcome! Do you want me to change color or pause spinning?');
  conv.ask(new HtmlResponse({
    url: 'https://your-web-app.com',
  }));
});

// map of human speakable colors to color values
const tints = {
  red: 0xFF0000,
  green: 0x00FF00,
  blue: 0x0000FF,
};
app.intent('color', (conv, {color}) => {
  if (color in tints) {
    conv.ask(`Ok, I changed my color to ${color}. What else?`);
    conv.ask(new HtmlResponse({
      data: {
        tint: tints[color],
      },
    }));
    return;
  }
  conv.ask(`Sorry, I don't know that color. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      query: conv.query,
    },
  }));
});
app.intent('start', (conv) => {
  conv.ask(`Ok, I'm spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: true,
    },
  }));
});

app.intent('pause', (conv) => {
  conv.ask(`Ok, I paused spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: false,
    },
  }));
});

app.intent('restart game', (conv) => {
  conv.ask(new HtmlResponse({
    data: {
      command: 'RESTART_GAME',
    },
  }));
});

exports.conversation = functions.https.onRequest(app);

welcome intent

Nello snippet riportato sopra, il completamento per l'intent welcome invia un HtmlResponse con l'URL dell'app web. L'assistente riceve questo e carica il codice HTML e JavaScript a quell'indirizzo.

...
app.intent('welcome', (conv) => {
  conv.ask('Welcome! Do you want me to change color or pause spinning?');
  conv.ask(new HtmlResponse({
    url: 'https://your-web-app.com',
  }));
});
...

Altri intent

Il HtmlResponse nel fulfillment per altri intent trasmette i valori delle variabili (tint o spin nell'esempio) all'app web. La logica personalizzata per il web l'app utilizza questi valori per aggiornare gli elementi (animazioni, colore e così via):

...
app.intent('start', (conv) => {
  conv.ask(`Ok, I'm spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: true,
    },
  }));
});
...

Linee guida e limitazioni

Tieni presenti le seguenti linee guida e limitazioni per HtmlResponse quando crei il tuo fulfillment:

  • Ogni intent nel tuo fulfillment deve includere un HtmlResponse. Se un intent non include un HtmlResponse, la tua app web si chiude.
  • Devi includere l'URL dell'app web solo nel primo intent che invii a l'utente (in genere è l'intent Welcome).
  • HtmlResponse deve avere una dimensione massima di 50 kB.