这是我关于堆栈溢出的第一个问题,如果我搞砸了,请告诉我!
我正在建立一个谷歌行动,将能够播放播客,我想播放结束时,播客音频剪辑。据我所知,从文件(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,其中一些设备不会发送请求,但是这个问题已经存在了将近一年了,所以我想这个问题已经解决了,我有点搞砸了。我也没有足够的声誉去评论那篇文章和询问解决方案,所以我想我应该问问我的设置
1条答案
按热度按时间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 :
多亏了bonegoathttps://github.com/actions-on-google/actions-on-google-nodejs/issues/247#issuecomment-439617878介绍在node.js端查找用户响应的重要性。希望这个问题能对其他java开发人员有所帮助!