Google上的操作-对话流程中不会要求输入提示

时间:2018-08-22 07:02:14

标签: dialogflow actions-on-google

我一直在寻找有关在Google上执行操作的最佳做​​法指南,特别是我正在尝试实施here概述的“重复”功能

现在示例代码引用未定义的参数/函数并没有帮助,但是具体来说,您似乎应该可以将'NO_INPUT_PROMPTS'参数传递给conv.ask(),因此如果用户在指定的时间内不回答,然后使用这些提示。据我了解,这可能是字符串或数组。

问题是,当我将数组传递到函数中时,它实际上使我的操作停止工作。如果我传递了一个字符串,则它将它连接到最初的问题,而不是提示您。

任何人都可以帮忙。我的代码如下:

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

const app = dialogflow({debug: true});
const NO_INPUT_PROMPTS = ['Would you like to answer the question?'];

function ask(conv, inputPrompt, noInputPrompts) {
    conv.data.lastPrompt = inputPrompt;
    conv.data.lastNoInputPrompts = noInputPrompts;
    conv.ask(inputPrompt,noInputPrompt);
}

app.intent('Default Welcome Intent', conv => {
    let message = "Hello what's your favourite color";
    ask(conv,message,NO_INPUT_PROMPTS);
})

当我调用ask时,查看https://github.com/actions-on-google/actions-on-google-nodejs/blob/master/src/service/actionssdk/conversation/conversation.ts#L431处的代码,它实际上是将其附加到响应数组中,并且它们全部一起读出,而不是被解释为提示。有人知道这里缺少代码的“链接”是什么吗?

我在库和NodeJS v8上使用actions-on-google的v2.2.0。目的是在dialogflow中创建的

1 个答案:

答案 0 :(得分:0)

典型!因此,在尝试解决了两天后,就在发布问题后,我偶然发现了可能是一种解决方案。

我认为问题是您需要显式设置conv.noInputs属性,而不是将其作为ask的一部分传递。我将其作为文档错误提交,希望它不会引起其他人的注意。

function ask(conv, inputPrompt, noInputPrompts) {
    conv.data.lastPrompt = inputPrompt;
    conv.data.lastNoInputPrompts = noInputPrompts;
    conv.noInputs = noInputPrompts
    conv.ask(inputPrompt);
}