Google 上的操作有效,但 Dialogflow 代理已损坏
Action on Google working, but with a Dialogflow agent broken
我有一个 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 fulfilment。
当我在 Google 模拟器上使用 Actions 进行测试时,似乎一切正常。我得到了预期的答案 'Hello AWS'.
但是,它不适用于 dialogflow 模拟器。没有答案,虽然我可以在诊断信息中读取 "Webhook execution successful",并具有正确的履行响应:
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Hello AWS"
}
}
]
},
"userStorage": "{\"data\":{}}"
}
},
"outputContexts": [
{
"name": "projects..../_actions_on_google",
"lifespanCount": 99,
"parameters": {
"data": "{}"
}
}
]
}
这对我来说真的很奇怪,因为 Google 上的操作只是调用 dialogflow 并且 return 是一个很好的响应。而单独测试 dialogflow 是行不通的。
有什么想法吗?
这是意料之中的。 actions-on-google 库的输出已针对 Google Assistant 集成进行了调整。它不会尝试包括将由通用 Dialogflow 代理使用的输出,这是 Dialogflow 测试字段使用的内容。
如果它在 Assistant Simulator 中有效 - 你应该很好。
更新
具体而言,actions-on-google 库在 JSON 响应中设置 payload.google.richResponse
中的值,这些值设置 Google 显示的消息助手。顾名思义,这是 Google 特定的输出,因此 Dialogflow 测试侧边栏(以及与 Dialogflow 一起使用的其他代理)忽略此部分。
Dialogflow 具有发回消息的通用方法,包括 JSON 响应中的 fulfillmentText
和 fulfillmentMessages
字段。 Dialogflow 测试侧边栏使用这些字段来显示结果。 actions-on-google 库不设置或使用这些字段,因此结果不可用。
我有一个 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 fulfilment。
当我在 Google 模拟器上使用 Actions 进行测试时,似乎一切正常。我得到了预期的答案 'Hello AWS'.
但是,它不适用于 dialogflow 模拟器。没有答案,虽然我可以在诊断信息中读取 "Webhook execution successful",并具有正确的履行响应:
{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "Hello AWS"
}
}
]
},
"userStorage": "{\"data\":{}}"
}
},
"outputContexts": [
{
"name": "projects..../_actions_on_google",
"lifespanCount": 99,
"parameters": {
"data": "{}"
}
}
]
}
这对我来说真的很奇怪,因为 Google 上的操作只是调用 dialogflow 并且 return 是一个很好的响应。而单独测试 dialogflow 是行不通的。
有什么想法吗?
这是意料之中的。 actions-on-google 库的输出已针对 Google Assistant 集成进行了调整。它不会尝试包括将由通用 Dialogflow 代理使用的输出,这是 Dialogflow 测试字段使用的内容。
如果它在 Assistant Simulator 中有效 - 你应该很好。
更新
具体而言,actions-on-google 库在 JSON 响应中设置 payload.google.richResponse
中的值,这些值设置 Google 显示的消息助手。顾名思义,这是 Google 特定的输出,因此 Dialogflow 测试侧边栏(以及与 Dialogflow 一起使用的其他代理)忽略此部分。
Dialogflow 具有发回消息的通用方法,包括 JSON 响应中的 fulfillmentText
和 fulfillmentMessages
字段。 Dialogflow 测试侧边栏使用这些字段来显示结果。 actions-on-google 库不设置或使用这些字段,因此结果不可用。