谷歌上的操作正在工作,但对话流代理坏了



我有一个项目,Actions on GoogleDialogflow和一个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配置了一个IntentStartIntent和webhook fulfilment。

当我使用谷歌模拟器上的操作进行测试时,一切似乎都很好。我得到了预期的答案"你好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 上的操作只是调用 dialogflow 并返回良好的响应。而单独测试对话流是行不通的。

知道吗?

这是意料之中的。谷歌上的操作库的输出针对谷歌助理集成进行了调整。它不会尝试包含将由通用对话流代理使用的输出,这是对话流测试字段使用的输出。

如果它在助手模拟器中工作 - 你应该很好。

更新

具体来说,谷歌上的操作库在JSON响应中设置payload.google.richResponse值,这些响应设置了谷歌助理显示的消息。顾名思义,这是Google特定的输出,因此Dialogflow测试侧栏(以及使用Dialogflow的其他代理(忽略了此部分。

对话流具有发送回消息的通用方法,包括 JSON 响应中的fulfillmentTextfulfillmentMessages字段。对话流测试侧栏使用这些字段来显示结果。Google 上的操作库不会设置或使用这些字段,因此无法获得结果。

最新更新