Как завершить действие с помощником? - PullRequest
3 голосов
/ 29 мая 2020

У меня есть очень простое действие, которое просто дает мне некоторый статус, а затем я хочу его закончить, никаких разговоров, ничего другого, просто получить статус и закончить его. Прямо сейчас я делаю это:

agent.add(message1);
agent.add(message2);
agent.end('done');

Я также пробовал (как вы увидите в приведенном ниже коде, просто выполняю agent.end(completeMessage);, но помощник продолжает ждать, пока я сделаю больше, мое действие не 't end.

Я сделал совершенно простой образец для демонстрации, test intent - это тот, который имеет вызов end():

enter image description here

Код:

'use strict';

const functions = require('firebase-functions');
const { WebhookClient } = require('dialogflow-fulfillment');
const { Card, Suggestion } = require('dialogflow-fulfillment');

const fetch = require("node-fetch");

process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });
  console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
  console.log('Dialogflow Request body: ' + JSON.stringify(request.body));

  function welcome(agent) {
    agent.add(`Welcome to my agent!`);
  }

  function fallback(agent) {
    agent.add(`I didn't understand`);
    agent.add(`I'm sorry, can you try again?`);
  }
  function testIntent(agent) {
    agent.end('done');
  }

 intent name
  let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);
  intentMap.set('test intent', testIntent);
  agent.handleRequest(intentMap);
});

У кого-нибудь есть идеи, как я могу полностью завершить свое действие, когда я позвоню test intent?

1 Ответ

0 голосов
/ 30 мая 2020

Если вы используете библиотеку выполнения диалога с Actions on Google, у вас может быть только два простых ответа (текст или строки SSML). Поскольку ваш код вызывает agent.end() после того, как два сообщения уже были установлены, его можно игнорировать.

Вместо этого вы можете назвать его как

agent.add(message1);
agent.end(message2);

Документация для agent предназначена для WebhookClient объект. Если вы хотите пропустить библиотеку, есть также ответ веб-перехватчика JSON документация.

...