Actions on google 自定义负载中的媒体响应(Dialogflow)
我试图在自定义负载中编写媒体响应代码,但运气不佳。我肯定是做错了什么,但我不知道:)测试时媒体的反应没有出现。(请注意,我正在一个英语动作中尝试这一点)。以下是JSON代码:Actions on google 自定义负载中的媒体响应(Dialogflow),actions-on-google,Actions On Google,我试图在自定义负载中编写媒体响应代码,但运气不佳。我肯定是做错了什么,但我不知道:)测试时媒体的反应没有出现。(请注意,我正在一个英语动作中尝试这一点)。以下是JSON代码: { "platform": "google", "type": "custom_payload", "payload": { "google": { "richResponse": { "items": [ { "mediaResp
{
"platform": "google",
"type": "custom_payload",
"payload": {
"google": {
"richResponse": {
"items": [
{
"mediaResponse": {
"mediaType": "AUDIO",
"mediaObjects": [
{
"name": "Exercises",
"description": "ex",
"largeImage": {
"url": "https://firebasestorage.googleapis.com/...",
"accessibilityText": "image..."
},
"contentUrl": "https://firebasestorage.googleapis.com/..."
}
]
}
}
]
}
}
}
}
更新:
我已经将JSON更新为类似这样的内容。但我得到一个错误:“API版本2:无法解析JSON响应字符串,错误为‘INVALID_ARGUMENT’::找不到字段。”
以下是调试信息:
{
"audioResponse": "//NExAARWG...",
"conversationToken": "GidzaW11bG...",
"debugInfo": {
"agentToAssistantDebug": {
"agentToAssistantJson": "{\"message\":\"Failed to parse Dialogflow response into AppResponse, exception thrown with message: Empty speech response\",\"apiResponse\":{\"id\":\"cd7204ac-ab80-42aa-9755-6123cbb938a6\",\"timestamp\":\"2018-03-11T09:02:35.827Z\",\"lang\":\"en-us\",\"result\":{},\"status\":{\"code\":200,\"errorType\":\"success\"},\"sessionId\":\"1520758955600\"}}"
},
"assistantToAgentDebug": {
"assistantToAgentJson": "{\"user\":{\"userId\":\"AA9douaa4XGkqtmcU_EDjPy7PQ_9\",\"locale\":\"en-US\",\"lastSeen\":\"2018-03-11T09:02:09Z\"},\"conversation\":{\"conversationId\":\"1520758955600\",\"type\":\"NEW\"},\"inputs\":[{\"intent\":\"actions.intent.MAIN\",\"rawInputs\":[{\"inputType\":\"VOICE\",\"query\":\"Talk to Zen Coach\"}]}],\"surface\":{\"capabilities\":[{\"name\":\"actions.capability.SCREEN_OUTPUT\"},{\"name\":\"actions.capability.MEDIA_RESPONSE_AUDIO\"},{\"name\":\"actions.capability.WEB_BROWSER\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"}]},\"isInSandbox\":true,\"availableSurfaces\":[{\"capabilities\":[{\"name\":\"actions.capability.SCREEN_OUTPUT\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"}]}]}",
"curlCommand": "curl -v 'https://api.api.ai/api/integrations/google?token=0def1bb6be4b4bf2810ec68bf6f37a6a' -H 'Content-Type: application/json;charset=UTF-8' -H 'Google-Actions-API-Version: 2' -H 'Authorization: eyJhbGciOiJSUzI1NiIsImtpZCI6ImFjMmI2M2ZhZWZjZjgzNjJmNGM1MjhlN2M3ODQzMzg3OTM4NzAxNmIifQ.eyJhdWQiOiJ6ZW4tY29hY2giLCJhenAiOiI0OTYwOTIwOTE1NzEtMGNhY3VtczVkZ3F1OWpkM2k0dHZpOGFiOTVydXQ2NnQuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJleHAiOjE1MjA3NTkwNzUsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsImp0aSI6IjY4NDc0NThhNTNhZGExODAxZjMwMjAyYjkxZGIyODZhMjk1NzA2YmIiLCJpYXQiOjE1MjA3NTg5NTUsIm5iZiI6MTUyMDc1ODY1NX0.e1cqg96F5L-BvD0yJz3UFgsnX_0TRox0Lu8R9K5NhhXcQVfC7mq1QwCqs2DGrUJGquGdW2GhzBU2lzf4ro2TUeieg4ozak1OmiYAMqtiCH0EodeHy59AXXqzb3a35YuD7CmSDu6qVQRfEp8uaaH2t-Sq9lUchudNOgjucip3ex9Rr2XacHm0qWtV69H1o-Yq5INl5HHR0kNqtEIsxUox961imKvDLN5s--F35yTbAhIWibr6OmaACyzSQW5X7OjrJ2781DSmEdYn73poDbuwMS9E2l9B-QTUHAIpUM5b4WqrFkD6XKALdf2pQFwZlRRhDzRiDKWLA-i1w-mcak0LWw' -A 'Mozilla/5.0 (compatible; Google-Cloud-Functions/2.1; +http://www.google.com/bot.html)' -X POST -d '{\"user\":{\"userId\":\"AA9douaa4XGkqtmcU_EDjPy7PQ_9\",\"locale\":\"en-US\",\"lastSeen\":\"2018-03-11T09:02:09Z\"},\"conversation\":{\"conversationId\":\"1520758955600\",\"type\":\"NEW\"},\"inputs\":[{\"intent\":\"actions.intent.MAIN\",\"rawInputs\":[{\"inputType\":\"VOICE\",\"query\":\"Talk to Zen Coach\"}]}],\"surface\":{\"capabilities\":[{\"name\":\"actions.capability.SCREEN_OUTPUT\"},{\"name\":\"actions.capability.MEDIA_RESPONSE_AUDIO\"},{\"name\":\"actions.capability.WEB_BROWSER\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"}]},\"isInSandbox\":true,\"availableSurfaces\":[{\"capabilities\":[{\"name\":\"actions.capability.SCREEN_OUTPUT\"},{\"name\":\"actions.capability.AUDIO_OUTPUT\"}]}]}'"
},
"sharedDebugInfo": [
{
"name": "ResponseValidation",
"subDebugEntry": [
{
"debugInfo": "API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: \": Cannot find field.\".",
"name": "UnparseableJsonResponse"
}
]
}
]
},
"response": "Zen coach isn't responding right now. Try again soon.",
"visualResponse": {
"visualElements": []
}
}
问题是
richResponse
属性仍然需要遵循对象的规则。其中的第一项必须是对象。(我还没有测试过,但您可能会让它什么都不说,但这是介绍音频的好地方。)
错误消息未能将Dialogflow响应解析为AppResponse,与消息一起引发的异常:Empty speech response
表明它可能还在响应中的顶级对象上查找speech
参数,这是Dialogflow v1希望复制的simpleResponse
ssml
或textToSpeech
参数。我不确定如果设置为v2,为什么会出现这种情况,但听起来可能有点混淆。我会确保您使用的是v1,并且您有一个speech
参数
还请记住,如果这不是最终响应,则说明如何在音频期间或之后向前移动对话。问题在于
richResponse
属性仍然需要遵循对象的规则。其中的第一项必须是对象。(我还没有测试过,但你可以让它什么也不说,但这是一个介绍你的音频的好地方。)
错误消息未能将Dialogflow响应解析为AppResponse,与消息一起引发的异常:Empty speech response
表明它可能还在响应中的顶级对象上查找speech
参数,这是Dialogflow v1希望复制的simpleResponse
ssml
或textToSpeech
参数。我不确定如果设置为v2,为什么会出现这种情况,但听起来可能有点混淆。我会确保您使用的是v1,并且您有一个speech
参数
另外,请记住,如果这不是最终响应,则说明如何在音频期间或之后向前移动对话。是否在自定义负载中添加“平台”:“谷歌”和“键入”:“自定义负载”?如果是,请尝试删除该选项
我使用语音节拍器应用程序进行了以下工作:
{
"google":{
"richResponse":{
"items":[
{
"simpleResponse":{
"textToSpeech":"Hey! Good to see you."
}
},
{
"mediaResponse":{
"mediaType":"AUDIO",
"mediaObjects":[
{
"name":"Exercises",
"description":"ex",
"largeImage":{
"url":"http://res.freestockphotos.biz/pictures/17/17903-balloons-pv.jpg",
"accessibilityText":"..."
},
"contentUrl":"https://freepd.com/Chill/Chill Air.mp3"
}
]
}
}
],
"suggestions":[
{
"title":"chips"
}
]
}
}
}
是否在自定义负载中添加“平台”:“谷歌”和“类型”:“自定义负载”?如果是,请尝试删除该选项
我使用语音节拍器应用程序进行了以下工作:
{
"google":{
"richResponse":{
"items":[
{
"simpleResponse":{
"textToSpeech":"Hey! Good to see you."
}
},
{
"mediaResponse":{
"mediaType":"AUDIO",
"mediaObjects":[
{
"name":"Exercises",
"description":"ex",
"largeImage":{
"url":"http://res.freestockphotos.biz/pictures/17/17903-balloons-pv.jpg",
"accessibilityText":"..."
},
"contentUrl":"https://freepd.com/Chill/Chill Air.mp3"
}
]
}
}
],
"suggestions":[
{
"title":"chips"
}
]
}
}
}
谢谢!我会试试,我会告诉你;)顺便说一句,如果媒体的回应是谈话的结束,我认为不需要建议芯片,就像我的情况一样。(对吗?)正确-仅当您继续对话时才需要建议芯片。已更新,但您的错误与您使用的v2不匹配。@囚犯我在响应v2请求时也收到v1错误。@囚犯我真的没有问题。只是观察。例如,ResponseValidation的错误响应返回以下f在对话v2中使用Dialogflow v2beta1时进行rom调试。我知道我在v2上,因为我在2017年5月之后创建了代理。从v2开始,元素没有下划线分隔。虽然这不是一个严重的错误,但它会给新开发人员带来困惑。
预期的\u输入[0].input\u prompt.rich\u initial\u prompt:第一个元素必须是“简单响应”、“结构化响应”或“自定义响应”。
谢谢!我会尝试,我会告诉你;)顺便说一句,如果媒体响应是对话的结束,我想不需要建议芯片,就像我的情况一样。(对吗?)正确-仅当您继续对话时才需要建议芯片。已更新,但您的错误与您使用的v2不匹配。@囚犯我在响应v2请求时也收到v1错误。@囚犯我真的没有问题。只是观察。例如,ResponseValidation的错误响应返回以下f在对话v2中使用Dialogflow v2beta1时进行rom调试。我知道我在v2上,因为我在2017年5月之后创建了代理。从v2开始,元素没有下划线分隔。虽然这不是一个严重的错误,但它会给新开发人员带来困惑。预期的\u输入[0].input_prompt.rich_initial_prompt:第一个元素必须是“简单响应”、“结构化响应”或“自定义响应”。
是否可以更新答案以包含“调试”的输出“模拟机的选项卡?您还可以确认您正在使用Dialogflow v2吗?是的,我正在使用Dialogflow v2,但我也尝试了v1。同样的问题。Dialogflow v1的调试屏幕是什么样子的?哦!坚持这是Dialogflow response选项卡中的“自定义负载”?不是从webhook发送的?是的,这是Dialogflow respond选项卡中的自定义负载。我的缺点是我之前没有写过:(你能更新你的答案以包含来自模拟器的“调试”选项卡的输出吗?你能确认你正在使用Dialogflow v2吗?是的,我正在使用Dialogflow v2,但我也尝试了v1。同样的问题。Dialogflow v1的调试屏幕是什么样子的?哦!等等。这是“自定义负载”在Dialogflow response选项卡中?不是从webhook发送的?是的,这是Dialogflow response选项卡中的自定义负载。我的错是我之前没有编写它:(