【发布时间】:2019-02-04 15:25:36
【问题描述】:
这是我关于 Stack Overflow 的第一个问题,所以如果我搞砸了,请告诉我!
我正在构建一个能够播放播客的谷歌操作,并且我想在播客结束时播放结束的音频剪辑。据我从文档 (https://developers.google.com/actions/assistant/responses#media_responses) 中得知,在音频播放结束时,设备应该发送一个包含 actions.intent.MEDIA_STATUS 意图的请求。然后我想用结束音频来回应这个,但我从来没有收到过请求。
至于我到目前为止设置的内容:我使用 dialogflow 设置对话,然后向 AWS Lambda 发送请求,在该 AWS Lambda 中我设置了一些 java 代码以发回播客 url。我让媒体响应的那部分工作正常——它可以播放、暂停、向前跳过和返回。到目前为止,为了获得下一个音轨,我已经完成了以下操作:
- 在 Dialogflow 中创建一个意图(我称之为 AudioCompleteIntent)
- 将actions_intent_MEDIA_STATUS添加到意图的“事件”部分(如Handle audio play completion callback in dialogflow (Media responses)所示)
- 添加一个虚拟训练短语。不确定这是否有必要,但这是我可以让 AudioCompleteIntent 集成的唯一方法 在“操作”部分使用谷歌操作。它不会出现 除此以外。我认为在“操作”部分中包含意图对于设备发送请求是必要的,但可能仅适用于用户发起的意图。
- 在履行过程中,我选择了“为此意图启用 webhook 调用”,以便我可以将请求发送到 AWS Lambda 函数。 Lambda 函数已将所有请求记录到日志中
我附上了我在 Dialogflow 中的意图的屏幕截图。训练短语仍然不总是与动作同步,但初始化对话的意图似乎有效,无论对话流意图是否出现在谷歌操作控制台AudioCompleteIntent Screenshot
问题是,我没有看到来自设备的任何带有 actions.intent.MEDIA_STATUS 意图的请求。在播客完成自行播放后(而不是在用户停止播放时),我希望设备向 Dialogflow 发送一个 actions.intent.MEDIA_STATUS 意图,然后 dialogflow 将通过将 AudioCompleteIntent 发送到 aws lambda 函数来处理这个问题。我在对话流“历史”部分和 aws 日志中都没有看到我的 AudioCompleteIntent 请求或任何类型的 actions.intent.MEDIA_STATUS 意图。两个 dialogflow/AWS 都显示了开始播客的对话记录 - 在播客结束时什么都没有。
我一直在使用我的像素(2016 年的像素 1)手机的谷歌助手进行测试。显然,根据Google action MediaResponse not working on some devices 的说法,存在一些设备不会发送请求的错误,但这个问题已经存在将近一年了,所以我认为这个问题已经得到解决,我的结果有些搞砸了。我没有足够的声誉来评论该帖子并询问解决方案,所以我想我会询问我的设置
【问题讨论】:
-
你的问题很好!您能否更新您的问题以澄清几点:您说“我没有看到来自设备的任何带有 actions.intent.MEDIA_STATUS 意图的请求”。你的意思是这个特定的意图,还是你的 AudioCompleteIntent?为什么要让它显示在操作控制台的“操作”部分?当您没有获得 MEDIA_STATUS 时,此媒体播放是否已完成,或者用户是否正在中断播放?最后,如果您可以在 Dialogflow 中使用 AudioCompleteIntent 的屏幕截图进行更新,那将有很大帮助。
-
应该更新!为了快速解决您的问题,1)我既没有看到 actions.intent.MEDIA_STATUS 意图,也没有看到我的自定义意图。 2)我不确定是否有必要在“操作”部分显示 Intent,但我认为可能是。 3) 播放自行完成(不过,我通常会提前跳过以接近结尾 - 我不希望这会产生影响)和 4) 屏幕截图添加到链接中!
标签: java aws-lambda dialogflow-es actions-on-google