如何在DialogFlow Fullfilment中退出对话以执行操作

时间:2018-11-02 06:15:07

标签: dialogflow actions-on-google fulfillment

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

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);
    }
  }
  ...
}

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

3 个答案:

答案 0 :(得分:0)

根据记录的https://github.com/dialogflow/dialogflow-fulfillment-nodejs/issues/149,看来0.5.0软件包的dialogflow-fullfillment版本存在问题

我尝试更新为0.6.0,该版本具有重大更改,可以解决我发布的当前问题,但创建了与上下文相关的问题。

答案 1 :(得分:0)

您是否尝试过close方法:

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

答案 2 :(得分:0)

请检查您意图的垃圾邮件是否为1。之后,您可以使用以下命令:

agent.end(“ bye”);