如何在谷歌助手应用程序中发送多个语句?

fru*_*kad 1 node.js actions-on-google api-ai

我正在创建一个Google Assistant应用程序来讲述报价,我目前正在使用Api.aiApiAi NodeJs webhook.我希望我的回答应该是这样的:

Innovation is the only way to win.
By Steve Jobs
Want one more?
Run Code Online (Sandbox Code Playgroud)

请注意,所有三条线都是不同的线.我知道如果我只使用api.ai的ux而不使用webhook(使用多个简单响应)是可能的,但是当与webhook结合时我无法弄清楚如何做到这一点.

我试过了:

assistant.ask("Innovation is the only way to win.");
assistant.ask("By Steve Jobs");
assistant.ask("Want one more?");
Run Code Online (Sandbox Code Playgroud)

但它似乎只说第一句话.我也试过用以下代替:

assistant.tell("Innovation is the only way to win.");
assistant.tell("By Steve Jobs");
assistant.ask("Want one more?");
Run Code Online (Sandbox Code Playgroud)

但它在第一个声明之后就退出了.怎么做?

Pri*_*ner 5

双方ask()tell()持有它们的参数和发送回一个响应.唯一的区别是ask()保持对话继续进行,期望用户回复说话,同时tell()表明对话已结束.如果您在Web服务器方面,都认为这ask()tell()发送回一个页面的当量,然后关闭连接,而是ask()包括了页面上的表单,同时tell()也没有.

它们都可以使用RichResponse对象,该对象可能包含一个或两个字符串或SimpleResponse对象,这些对象将呈现为聊天气泡.但是,你不能做三个,至少不是根据文件.所以听起来你最好的选择是将一个SimpleResponse包含在引用和归因中,第二个包含提示另一个.

这听起来像是您希望音频显示的文本不同的情况.在这种情况下,您需要构建SimpleResponse它,因此它具有speech字段和displayText字段.

这可能看起来像这样(我还没有测试过代码):

var simpleResponse = {
  speech: 'Steve Jobs said "Innovation is the only way to win."',
  displayText: '"Innovation is the only way to win." -- Steve Jobs'
};
var richResponse = assistant.buildRichResponse();
richResponse.addSimpleResponse(simpleResponse);
richResponse.addSimpleResponse('Do you want another?');
assistant.ask( richResponse );
Run Code Online (Sandbox Code Playgroud)

这也可以让你在这两个模糊的中间添加卡片,例如,可以包含相关人物的图片.为此,您需要richResponse.addBasicCard()使用BasicCard对象调用该方法.这可能在视觉上比在第二行包含引用归属更好.

至于设计 - 请记住,您正在设计各种设备.当您的显示模式不同(有时不存在)时,尝试专注于行格式设计是有问题的.不要试图把重点放在谈话会怎样样,而是你应该专注于谈话多少感觉就像一个对话你的用户将与另一个人.请记住,语音是这种对话的主要手段,视觉旨在补充对话,而不是规则.