Actions on google 自定义负载中的媒体响应(Dialogflow)

Actions on google 自定义负载中的媒体响应(Dialogflow),actions-on-google,Actions On Google,我试图在自定义负载中编写媒体响应代码,但运气不佳。我肯定是做错了什么,但我不知道:)测试时媒体的反应没有出现。(请注意,我正在一个英语动作中尝试这一点)。以下是JSON代码: { "platform": "google", "type": "custom_payload", "payload": { "google": { "richResponse": { "items": [ { "mediaResp

我试图在自定义负载中编写媒体响应代码,但运气不佳。我肯定是做错了什么,但我不知道:)测试时媒体的反应没有出现。(请注意,我正在一个英语动作中尝试这一点)。以下是JSON代码:

{
  "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选项卡中的自定义负载。我的错是我之前没有编写它:(