我一直在寻找有关在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中创建的
答案 0 :(得分:0)
典型!因此,在尝试解决了两天后,就在发布问题后,我偶然发现了可能是一种解决方案。
我认为问题是您需要显式设置conv.noInputs属性,而不是将其作为ask的一部分传递。我将其作为文档错误提交,希望它不会引起其他人的注意。
function ask(conv, inputPrompt, noInputPrompts) {
conv.data.lastPrompt = inputPrompt;
conv.data.lastNoInputPrompts = noInputPrompts;
conv.noInputs = noInputPrompts
conv.ask(inputPrompt);
}