有没有办法在发送媒体响应时,使用带有操作SDK的Google Actions作为履行工具捕获和处理"下一个PP_3上一个"?



我正在使用媒体响应在我的操作 SDK(操作 SDK 在我的操作控制台中用作履行工具(驱动的操作中播放音频。在每个音频剪辑结束时,我使用 MEDIA_STATUS 回调前进到预定义播放列表中的另一个 mp3 文件。因此,用户应该能够向前/向后导航。

在我的Google Home mini,Android和Smart Display上的Google Assistant上进行测试时,我可以拦截"next"并前进到下一个音频剪辑(它发送一个意图为MEDIA_STATUS的请求(。但是,我无法正确拦截"上一个"每当我尝试时,音频都会重新启动。真实设备似乎正在自行处理此意图,并且不会抛出任何控制台输出(因为我的 webhook 根本没有被访问(。

对话流似乎将"下一个"和"上一个"作为后续意图处理,但我需要在不使用对话流作为履行工具的情况下做同样的事情。

任何人都可以帮助解决这个特定问题吗?

目前媒体响应仅支持 FINISHED 事件。因此,您将无法区分下一个和上一个。

提到@Leon尼科尔斯的回答,我真的很困惑。我遵循了他的谷歌音频播放器教程/指南,该教程/指南链接到音频播放器模板操作

您仍然可以下载它,如果解压缩它,您将看到专门用于处理上一个和下一个曲目的代码。

现在看来,Leon说它无法通过语音处理上一个和下一个(但按钮似乎有效(。

下面是下面的示例代码。其中有指向教程操作的链接,但现在所有内容都已删除。我只需要盲人能够选择和播放各种音频,对于 SSML 来说太长了,它必须是可导航的(至少下一个和稍后暂停/恢复(可能是播放列表的一部分。我如何实现这一点?建议"媒体合作伙伴"或"播客"不是解决方案,因为在英国都不可用。

// Handle the More/Yes/Next intents
app.intent(['More', 'Yes', 'Next'], (conv) => {
console.log(`More: fallbackCount=${conv.data.fallbackCount}`);
nextTrack(conv, false);
});
// Handle the Repeat/Previous intent
app.intent(['Repeat', 'Previous'], (conv) => {
console.log(`Repeat: ${conv.user.storage.track}`);
nextTrack(conv, false, true);
});

// Select the next track to play from the data
const nextTrack = (conv, intro, backwards) => {
console.log(`nextTrack: ${conv.user.storage.track}`);
let track = data[0];
// Persist the selected track in user storage
// https://developers.google.com/actions/assistant/save-data#save_data_across_conversations
if (conv.user.storage.track) {
conv.user.storage.track = parseInt(conv.user.storage.track, 10);
if (backwards) {

最新更新