google小助手APP如何发送多条语句?
How to send multiple statements in google assistant app?
我正在创建一个 Google 用于报价的助手应用程序,我目前正在使用 Api.ai with ApiAi NodeJs webhook。我希望我的回复应该是这样的:
Innovation is the only way to win.
By Steve Jobs
Want one more?
注意这三行都是不同的行。我知道如果我只使用 api.ai 的用户体验而不使用 webhook(使用多个简单响应)是可能的,但是当与 webhook 结合使用时我无法弄清楚如何做到这一点。
我试过:
assistant.ask("Innovation is the only way to win.");
assistant.ask("By Steve Jobs");
assistant.ask("Want one more?");
不过好像只讲了第一句。我也尝试将其替换为:
assistant.tell("Innovation is the only way to win.");
assistant.tell("By Steve Jobs");
assistant.ask("Want one more?");
但是它在第一个语句之后就退出了。怎么做?
根据我从文档中收集到的信息,.tell
和 .ask
都关闭了麦克风。尝试将所有语句放入一个字符串中。据我所知,.ask
实际上并没有影响讲话的语调;它只是告诉 Google 助理等待输入。
assistant.ask("Innovation is the only way to win. By Steve Jobs. Want one more?");
ask()
和 tell()
都获取它们的参数并发回响应。唯一的区别是 ask()
让对话继续进行,期待用户回复,而 tell()
表示对话结束。如果您从网络服务器的角度考虑这一点,ask()
和 tell()
都会发回相当于一个页面然后关闭连接,但是 ask()
已经在页面上包含了一个表单, 而 tell()
还没有。
两人都可以拿一个RichResponse object, which may include one or two strings or SimpleResponse objects which will be rendered as chat bubbles. You can't do three, however, at least not according to the documentation。所以听起来你最好的选择是在引用和署名中包含一个 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 );
这还可以让您执行一些操作,例如在这两个简介的中间添加卡片,例如可以包含相关人员的照片。为此,您需要使用 BasicCard
对象调用 richResponse.addBasicCard()
方法。这在视觉上什至比在第二行包含引用属性更好。
至于设计 - 请记住,您正在为各种设备进行设计。当您有不同的显示模式(有时不存在)时,试图专注于行格式是有问题的设计。不要试图关注对话 看起来 是什么样子,相反,您应该关注对话在多大程度上感觉像是您的用户与另一个人进行的对话。请记住,语音是此对话的主要方式,而视觉旨在补充对话,而不是统治对话。
我正在创建一个 Google 用于报价的助手应用程序,我目前正在使用 Api.ai with ApiAi NodeJs webhook。我希望我的回复应该是这样的:
Innovation is the only way to win.
By Steve Jobs
Want one more?
注意这三行都是不同的行。我知道如果我只使用 api.ai 的用户体验而不使用 webhook(使用多个简单响应)是可能的,但是当与 webhook 结合使用时我无法弄清楚如何做到这一点。
我试过:
assistant.ask("Innovation is the only way to win.");
assistant.ask("By Steve Jobs");
assistant.ask("Want one more?");
不过好像只讲了第一句。我也尝试将其替换为:
assistant.tell("Innovation is the only way to win.");
assistant.tell("By Steve Jobs");
assistant.ask("Want one more?");
但是它在第一个语句之后就退出了。怎么做?
根据我从文档中收集到的信息,.tell
和 .ask
都关闭了麦克风。尝试将所有语句放入一个字符串中。据我所知,.ask
实际上并没有影响讲话的语调;它只是告诉 Google 助理等待输入。
assistant.ask("Innovation is the only way to win. By Steve Jobs. Want one more?");
ask()
和 tell()
都获取它们的参数并发回响应。唯一的区别是 ask()
让对话继续进行,期待用户回复,而 tell()
表示对话结束。如果您从网络服务器的角度考虑这一点,ask()
和 tell()
都会发回相当于一个页面然后关闭连接,但是 ask()
已经在页面上包含了一个表单, 而 tell()
还没有。
两人都可以拿一个RichResponse object, which may include one or two strings or SimpleResponse objects which will be rendered as chat bubbles. You can't do three, however, at least not according to the documentation。所以听起来你最好的选择是在引用和署名中包含一个 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 );
这还可以让您执行一些操作,例如在这两个简介的中间添加卡片,例如可以包含相关人员的照片。为此,您需要使用 BasicCard
对象调用 richResponse.addBasicCard()
方法。这在视觉上什至比在第二行包含引用属性更好。
至于设计 - 请记住,您正在为各种设备进行设计。当您有不同的显示模式(有时不存在)时,试图专注于行格式是有问题的设计。不要试图关注对话 看起来 是什么样子,相反,您应该关注对话在多大程度上感觉像是您的用户与另一个人进行的对话。请记住,语音是此对话的主要方式,而视觉旨在补充对话,而不是统治对话。