google action不发送actions.intent.media\u状态

7rtdyuoh  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(301)

这是我关于堆栈溢出的第一个问题,如果我搞砸了,请告诉我!
我正在建立一个谷歌行动,将能够播放播客,我想播放结束时,播客音频剪辑。据我所知,从文件(https://developers.google.com/actions/assistant/responses#media_responses),在音频播放结束时,设备应发送包含actions.intent.media\u status intent的请求。然后,我想回应这个关闭音频,但我从来没有得到请求。
至于到目前为止我设置了什么:我使用dialogflow来设置对话,然后将请求发送到aws lambda,在那里我设置了一些java代码来发回podcast url。我有一部分媒体的React工作-它可以播放,暂停,跳过前进和返回。到目前为止,为了获得下一个音频曲目,我做了以下工作:
在dialogflow中创建一个意图(我称之为AudioCompleteContent)
将actions\u intent\u media\u status添加到intent的“events”部分(如dialogflow(media responses)中的handle audio play completion callback所示)
添加虚拟训练短语。不确定这是否必要,但这是唯一的方法,我可以得到AudioCompleteContent整合谷歌行动在“行动”部分。否则就不会出现了。我认为在“操作”部分中有意图对于设备发送请求是必要的,但可能它只是用于用户发起的意图。
在实现过程中,我选择了“enablewebhook call for this intent”,以便可以将请求发送到aws lambda函数。lambda函数已将所有请求记录到日志中
我在dialogflow中附上了我的意图截图。训练短语仍然不总是与动作同步,但是初始化对话的意图似乎是有效的,不管dialogflow意图是否显示在google动作控制台audiocompleteintent屏幕截图中
问题是,我没有看到任何来自actions.intent.media\u status intent设备的请求。在播客自己完成播放后(不是在用户停止播放时),我希望设备向dialogflow发送actions.intent.media\u status intent,然后dialogflow将通过向aws lambda函数发送AudioCompleteContent来处理此问题。我在dialogflow“history”部分和aws日志中都没有看到AudioCompleteContent请求或任何类型的actions.intent.media\u状态意图。dialogflow/aws都显示了开始播客的对话记录,但播客结束时什么都没有。
我一直在测试我的像素(像素1从像2016年)手机的谷歌助手。显然,根据google action mediaresponse在一些设备上不工作的消息,有一个bug,其中一些设备不会发送请求,但是这个问题已经存在了将近一年了,所以我想这个问题已经解决了,我有点搞砸了。我也没有足够的声誉去评论那篇文章和询问解决方案,所以我想我应该问问我的设置

2sbarzqh

2sbarzqh1#

最后我让它工作了。我缺少的主要部分是我需要将“expectuserresponse”设置为true并提供建议芯片。由于缺少建议芯片,当前文档中的示例(截至2019年2月)将不起作用。我搬走了 "expectUserResponse": true 从例子中得到了它的发挥,但它没有发送一个 actions.intent.MEDIA_STATUS 回应。重新介绍 "expectUserResponse": true 不过,添加建议芯片确实起到了作用
我不能包含我发送的实际响应,但这里是文档中代码示例的编辑版本。具体来说,我在dialogflow json选项卡的“sample code”部分下向示例添加了建议芯片https://developers.google.com/actions/assistant/responses#media_responses :

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "mediaResponse": {
              "mediaType": "AUDIO",
              "mediaObjects": [
                {
                  "contentUrl": "https://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3",
                  "description": "A funky Jazz tune",
                  "icon": {
                    "url": "https://storage.googleapis.com/automotive-media/album_art.jpg",
                    "accessibilityText": "Ocean view"
                  },
                  "name": "Jazz in Paris"
                }
              ]
            }
          }
        ],
        "suggestions": [
          {
            "title": "pause"
          },
          {
            "title": "start over"
          }
        ]
      },
      "userStorage": "{\"data\":{}}"
    }
  },
  "outputContexts": [
    {
      "name": "/contexts/_actions_on_google",
      "lifespanCount": 99,
      "parameters": {
        "data": "{}"
      }
    }
  ]
}

多亏了bonegoathttps://github.com/actions-on-google/actions-on-google-nodejs/issues/247#issuecomment-439617878介绍在node.js端查找用户响应的重要性。希望这个问题能对其他java开发人员有所帮助!

相关问题