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

我正在创build一个Google助理应用程序来说明引号,我目前正在使用ApiAi和ApiJi NodeJs webhook 。 我想我的回应应该是这样的:

Innovation is the only way to win. By Steve Jobs Want one more? 

请注意,所有三条线都是不同的线。 我知道这是可能的,如果我只是没有使用webhook(使用多个简单的响应)使用api.ai的用户名,但我不知道如何做到这一点时,与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?"); 

但是它在第一个陈述之后退出。 怎么做?

ask()tell()带参数并发回一个响应。 唯一的区别是, ask()保持对话正在进行,期待用户回头,而tell()表示对话结束。 如果你用web服务器来看待这个问题, ask()tell()返回一个页面的等价物,然后closures连接,但是ask()在页面上包含了一个表单,而tell()不。

他们都可以带一个RichResponse对象,它可以包含一个或两个string或SimpleResponse对象,这些对象将被渲染为聊天泡泡。 你不能做三个,但是,至less不按照文件 。 所以这听起来像你最好的select将包括一个SimpleResponse的报价和归属,第二个与提示另一个。

这也听起来像你希望audio不同于显示的文本的情况 。 在这种情况下,您需要构buildSimpleResponse ,使其具有speech字段和displayText字段。

这可能看起来像这样(我没有testing代码):

 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()方法。 这甚至可能比在第二行包含引用归因的视觉更好。

至于devise – 请记住,你正在devise一个广泛的设备。 当你有显示模式不同(有时不存在)的devise时,试图关注行格式。 不要试图把注意力集中在对话的外观上 ,而应该把注意力集中在谈话的感觉上,就像你的用户与他人的谈话。 请记住,声音是与视觉对话的主要手段,旨在补充对话,而不是规则。

从我可以从文档中收集到的, .tell.ask都closures麦克风。 尝试把你所有的语句放到一个string中。 据我所知, .ask实际上并不影响演讲的语气。 它只是告诉助理等待input。

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