1

我有一个简单的文字游戏动作,完成游戏后应该退出对话。我想要支持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);
    }
  }
  ...
}

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

4

3 回答 3

1

根据记录的问题0.5.0https://github.com/dialogflow/dialogflow-fulfillment-nodejs/issues/149似乎存在包版本问题dialogflow-fullfillment

我尝试更新0.6.0具有重大更改的内容,这些更改解决了我发布的当前问题,但产生了与上下文相关的问题。

于 2018-11-02T08:18:12.640 回答
0

有没有试过close方法:

  conv.close("Your score is 3/5. Cheers! GoodBye!");
于 2018-11-02T14:10:31.093 回答
0

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

agent.end("再见");

于 2019-10-08T22:22:49.697 回答