【发布时间】:2019-02-21 22:58:38
【问题描述】:
我正在尝试从我的 webhook 发送响应以触发更改到另一个表面的过程,但 Actions on Google 总是抛出:
必须设置 MalformedResponse 'final_response'。
而且它不是很有帮助。
这是我返回的 JSON:
{
"payload": {
"google": {
"expectUserResponse": true,
"conversationToken": "{\"data\":{}}",
"userStorage": "{\"data\":{}}",
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [
{
"simpleResponse": {
"textToSpeech": "PLACEHOLDER"
}
}
]
}
},
"possibleIntents": [
{
"intent": "actions.intent.NEW_SURFACE",
"inputValueData": {
"@type": "type.googleapis.com/google.actions.v2.NewSurfaceValueSpec",
"capabilities": [
{
"name": "actions.capability.SCREEN_OUTPUT"
}
],
"context": "Sure, I have some sample images for you.",
"notificationTitle": "Sample Images"
}
}
]
}
]
}
}
}
在 Dialogflow 上,我设置了 2 个意图;一个意图返回此处指定的 json,另一个意图带有事件 actions_intent_NEW_SURFACE,所以我知道用户对更改表面的问题的反应。
我一直在阅读这些网站:
https://developers.google.com/actions/assistant/surface-capabilities#multi-surface_conversations
https://dialogflow.com/docs/reference/api-v2/rest/Shared.Types/WebhookResponse
https://developers.google.com/actions/build/json/dialogflow-webhook-json#dialogflow-response-body
Action On Google, webhook response with actions.intent.NEW_SURFACE(这似乎与我有同样的问题,但 OP 没有写响应。)
但是他们都没有让我对这件事有所了解。
【问题讨论】:
-
建议:尝试使用独立的 AoG NodeJS 客户端 - github.com/actions-on-google/actions-on-google-nodejs 或 AoG 客户端与 Dialogflow Fulfillment Client - github.com/dialogflow/dialogflow-fulfillment-nodejs 这些将帮助您进行编码,并且易于使用表面切换、权限等功能, RichUI 通过这些客户端。
-
感谢您的建议,我支持您,使用 NodeJS 比使用 webhook 实现要容易得多,因为所有文档都是针对 Node.js 的。但是 webhook 决定来自于使用我正在使用的框架中的其他工具的必要性。
-
您使用的是哪个版本的 Dialogflow 和 AoG?
-
Dialogflow v2. AoG 我认为只有一个?
-
看起来developers.google.com/actions/assistant/… 中的文档已经过时并且不起作用。我尝试将 NEW_SURFACE 意图作为 systemIntent 发送,并且有效。
标签: dialogflow-es actions-on-google