如何在 DialogFlow Fulfillment for an Action 中退出对话

How to exit conversation in DialogFlow Fullfilment for an Action

我有一个简单的文字游戏,完成游戏后应该退出对话。我希望该操作支持 Google Assistant 和基于扬声器的设备(移动设备 phone 等),因此我以一般方式处理意图。

const {WebhookClient} = require('dialogflow-fulfillment');
...
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  ...
  function answerIntent(agent) {
     if (gameShouldEnd) {
       agent.end("Your score is 3/5. Cheers! GoodBye!");
     }
  }
  ...
}

这会导致日志错误 MalformedResponse: 'final_response' must be set

我也尝试了 conv api,结果也是同样的错误。

const {WebhookClient} = require('dialogflow-fulfillment');
...
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  ...
  function answerIntent(agent) {
    if (gameShouldEnd) {
      let conv = agent.conv();
      conv.tell("Your score is 3/5. Cheers! GoodBye!");
      agent.add(conv);
    }
  }
  ...
}

请建议如何在游戏结束时关闭麦克风并仍然发送响应。

根据 https://github.com/dialogflow/dialogflow-fulfillment-nodejs/issues/149

记录的问题,dialogflow-fullfillment 软件包的版本 0.5.0 似乎存在问题

我尝试更新到 0.6.0,其中有重大更改解决了我发布的当前问题,但产生了与上下文相关的问题。

你试过close方法吗:

  conv.close("Your score is 3/5. Cheers! GoodBye!");

请检查您的 Intent 的生命周期是否为 1。之后您可以使用以下命令:

agent.end("bye");