Google Home dialogFlow V2 API mediaResponse无效

时间:2018-03-22 16:34:02

标签: actions-on-google dialogflow google-home

我决定升级我的Google智能助理操作以使用“dialogFlow V2 API”,我的webhook会返回一个这样的对象

{
    "fulfillmentText": "Testing",
    "fulfillmentMessages": [
        {
            "text": {
                "text": [
                    "fulfillmentMessages text attribute"
                ]
            }
        }
    ],
    "payload": {
        "google": {
            "richResponse": {
                "items": [
                    {
                        "mediaResponse": {
                            "mediaType": "AUDIO",
                            "mediaObjects": [
                                {
                                    "name": "mediaResponse name",
                                    "description": "mediaResponse description",
                                    "largeImage": {
                                        "url": "https://.../640x480.jpg"
                                    },
                                    "contentUrl": "https://.../20183832714.mp3"
                                }
                            ]
                        },
                        "simpleResponse": {
                            "textToSpeech": "simpleResponse: testing",
                            "ssml": "simpleResponse: ssml",
                            "displayText": "simpleResponse displayText"
                        }
                    }
                ]
            }
        }
    },
    "source": "webhook-play-sample"
}

但是我收到一条错误消息,说我的操作不可用,V2支持mediaResponse吗?我应该以不同方式格式化我的对象吗?同样,当我删除“mediaResponse”对象工作正常并且助理会说话时simpleResponse part。

这个动作是在2018年3月中旬重新创建的,我读到了5月截止日期,这就是为什么我决定升级到V2,你认为我应该回到V1,我知道我必须删除它并重新开始创建但很好。这是我在调试选项卡中看到的JSON对象的链接。再次感谢

我在动作dialogFlow控制台中设置了“API V2”,这是该设置的screenshot

以下是我的操作集成的screenshoot - > Google智能助理

感谢Allen,是的,我确实有"expectUserResponse": false,我添加了您推荐的建议对象,但遗憾的是没有任何变化,我仍然收到此错误 Simulator debug tag details

1 个答案:

答案 0 :(得分:1)

首先 - 这不是Dialogflow V2的问题。你似乎也混淆了Google V1上的Actions的日落和Dialogflow V2的发布 - 它们完全是两个不同的生物。如果你的项目使用的是AoG V1,那么在动作集成屏幕上会有一个设置,而你不是。

如果您想要转移到Dialogflow V2,则可以,但不是必需的。 Media绝对适用于Dialogflow V2。

items数组必须首先包含simpleResponse项,然后才能包含RichResponse中的任何其他项。 (您也不应同时包含ssmltextToSpeech - 只有其中一个。)您也不需要fulfillmentTextfulfillmentMessages组件,因为这些组件已提供由richResponse

除非您将expectUserResponse设置为false,否则您还需要包含建议筹码。在模拟器调试的某个地方可能是一个块

      {
        "name": "MalformedResponse",
        "debugInfo": "expected_inputs[0].input_prompt.rich_initial_prompt: Suggestions must be provided if media_response is used..",
        "subDebugEntryList": []
      }

所以更像这样的事情应该有效:

{
    "payload": {
        "google": {
            "richResponse": {
                "items": [
                    {
                        "simpleResponse": {
                            "textToSpeech": "simpleResponse: testing",
                            "displayText": "simpleResponse displayText"
                        },
                        "mediaResponse": {
                            "mediaType": "AUDIO",
                            "mediaObjects": [
                                {
                                    "name": "mediaResponse name",
                                    "description": "mediaResponse description",
                                    "largeImage": {
                                        "url": "https://.../640x480.jpg"
                                    },
                                    "contentUrl": "https://.../20183832714.mp3"
                                }
                            ]
                        }
                    }
                ]
                "suggestions": [
                    {
                        "title": "This"
                    },
                    {
                        "title": "That"
                    }
                ]
            }
        }
    },
    "source": "webhook-play-sample"
}