我的项目有Actions on Google
,Dialogflow
& AWS Lambda
来管理履行。在后端(NodeJs)我使用actions-on-google
(v2)
const {dialogflow} = require('actions-on-google');
const app = dialogflow({debug: true});
app.intent('StartIntent', (conv) => {
console.log('Hello AWS');
conv.ask('Hello AWS');
});
exports.handler = app
Dialogflow配置了一个Intent StartIntent
&与webhook履行。
当我使用Google模拟器上的Actions进行测试时,一切似乎都能正常工作。我得到了预期的答案'Hello AWS'。
但是,它不适用于对话流模拟器。没有答案,虽然我可以在诊断信息中阅读“Webhook执行成功”,并获得正确的履行回复:
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Hello AWS"
}
}
]
},
"userStorage": "{\"data\":{}}"
}
},
"outputContexts": [
{
"name": "projects..../_actions_on_google",
"lifespanCount": 99,
"parameters": {
"data": "{}"
}
}
]
}
这对我来说似乎很奇怪,因为Google上的动作只是调用对话流并且返回了良好的响应。而测试对话流本身并不起作用。
有什么想法吗?
答案 0 :(得分:0)
这是预期的。谷歌动作库的输出已针对Google智能助理集成进行了调整。它不会尝试包含通用Dialogflow代理使用的输出,这是Dialogflow测试字段使用的。
如果它在助手模拟器中有效 - 你应该很好。
<强>更新强>
具体而言,Google Play操作系统会在JSON响应中的payload.google.richResponse
中设置值,这些值会设置Google智能助理显示的消息。顾名思义,这是特定于Google的输出,因此Dialogflow测试侧栏(以及与Dialogflow一起使用的其他代理)会忽略此部分。
Dialogflow具有一般发送消息的方式,包括JSON响应中的fulfillmentText
和fulfillmentMessages
字段。 Dialogflow测试侧栏使用这些字段显示结果。谷歌动作库不会设置或使用这些字段,因此结果不可用。