有没有一种方法可以在发送媒体响应时使用 Google Actions 和 Actions SDK 作为实现工具来捕获和处理 "next" 和“previous”?

Is there a way to capture & handle "next" and "previous” using Google Actions with Actions SDK as the fulfillment tool When Media Response was sent?

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

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

Dialog Flow 似乎可以处理 "next" 和 "previous" 作为后续意图,但我需要在不使用 Dialog Flow 作为实现工具的情况下做同样的事情。

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

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

参考@Leon Nicholls , I am really confused. I followed his Google Audioplayer tutorial/guide which links to an audioplayer template action

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

现在 Leon 似乎在说它无法通过语音处理上一个和下一个(但按钮似乎可以工作)。

下面是示例代码。其中有指向教程操作的链接,但现在 all the content has been removed。我只需要盲人能够 select 并播放各种音频,对于 SSML 来说太长了,它必须是可导航的(至少下一个和 pause/resume 以后)可能是播放列表的一部分。我如何实现这一目标?建议 "Media Partner" 或 "Podcast" 不是解决方案,因为在英国均不可用。

// 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) {