要让Google智能助理向用户显示丰富的回复,必须为其提供example on the Actions on Google docs之类的回复。但是,由于我使用Dialogflow作为我的服务器和Google之间的中间方,我需要在我的webhook中提供some kind of response to Dialogflow来表明应该有丰富的响应。正如您从该链接中看到的那样,文档提到了如何向FB Messenger,Kik,LINE等发送丰富的响应,而不是Google智能助理。
我在这里缺少什么?我在Dialogflow Web控制台中看到了丰富响应的选项,但在那里我似乎只能输入没有来自服务器的动态数据的硬编码响应。什么是正确的方法?
答案 0 :(得分:4)
使用Dialogflow集成,您的webhook应该返回的响应JSON以获得丰富的响应,如下所示:
{
"data":{
"google":{
"expectUserResponse":true,
"noInputPrompts":[
],
"richResponse":{
"items":[
{
"simpleResponse":{
"textToSpeech":"Welcome to this Basic Card",
"displayText":"Welcome to this Basic Card"
}
},
{
"basicCard":{
"buttons":[
{
"title":"Button Title",
"openUrlAction":{
"url":"https://some.url"
}
}
],
"formattedText":"Some text",
"image":{
"url":"http://some_image.jpg",
"accessibilityText":"Accessibility text describing the image"
},
"title":"Card Title"
}
}
],
"suggestions":[
{
"title":"Aléatoire"
},
{
"title":"Top"
}
]
}
}
}
}
如果您使用Node.js library您还可以使用提供的Dialogflow集成方法来构建rich response。
答案 1 :(得分:2)
如果你正在使用Node.js,你应该调用方法buildRichResponse()
,然后添加项目作为该对象的子项,如下所示:
app.ask(app.buildRichResponse()
.addSimpleResponse('A text to be spoken')
.addBasicCard(app.buildBasicCard('Some text to be displayed')
.setTitle('A title')
.addButton('Read more', 'https://example.google.com/something')
.setImage('https://example.google.com/image.png', 'Image alternate text')
.setImageDisplay('CROPPED')
)
);
这是添加BasicCard的示例,您可以在https://developers.google.com/actions/assistant/responses#rich-responses
查看如何添加轮播,列表和建议芯片