You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Actions与Media Player捕获并处理「上一曲」指令?

处理Google Actions中的「上一曲」指令方案

因为Google Actions不像Alexa那样内置「上一曲」的系统意图,所以得通过自定义意图+会话状态管理来实现,具体步骤如下:

1. 在Dialogflow中创建「上一曲」自定义意图

  • 新建一个意图(比如命名为PreviousTrackIntent)
  • 添加覆盖各种口语化表达的训练短语,比如:
    • 上一曲
    • 上一个
    • 回到上一集
    • 我想听上一个
    • Hey Google, 上一集
  • 给意图添加专属上下文(比如playing_context),确保只有在播放音频的会话中才会触发这个意图,避免误触发其他功能

2. 管理播放状态与会话数据

要实现前后切换,必须在会话中存储当前播放位置和完整播放列表,推荐两种存储方式:

  • conv.user.storage:长期存储(跨会话保留,适合记录用户的播放历史)
  • conv.session.params:会话内临时存储(仅当前会话有效,适合单次播放会话)

示例初始化代码(在播放第一曲时执行):

function startPlaylist(conv) {
  // 假设从数据库/API获取播放列表
  const playlist = [
    {title: "第一集", audioUrl: "https://example.com/track1.mp3"},
    {title: "第二集", audioUrl: "https://example.com/track2.mp3"},
    {title: "第三集", audioUrl: "https://example.com/track3.mp3"}
  ];
  
  // 存储播放列表和初始索引
  conv.user.storage.playlist = playlist;
  conv.user.storage.currentIndex = 0;
  
  // 播放第一曲
  conv.ask(new MediaObject({
    name: playlist[0].title,
    url: playlist[0].audioUrl
  }));
}

3. 实现「上一曲」的Fulfillment逻辑

在你的Fulfillment代码中,编写处理PreviousTrackIntent的函数:

function handlePreviousTrack(conv) {
  const playlist = conv.user.storage.playlist;
  let currentIndex = conv.user.storage.currentIndex;
  
  // 边界判断:已经是第一集时给出提示
  if (!playlist || currentIndex <= 0) {
    conv.ask("已经是播放列表的第一集啦,没法再往前切换咯~");
    return;
  }
  
  // 更新当前索引
  currentIndex -= 1;
  conv.user.storage.currentIndex = currentIndex;
  
  // 获取上一曲信息并播放
  const currentTrack = playlist[currentIndex];
  conv.ask(`正在为您切换到上一集:${currentTrack.title}`);
  conv.ask(new MediaObject({
    name: currentTrack.title,
    url: currentTrack.audioUrl
  }));
}

4. 关联意图与Fulfillment函数

在Dialogflow的意图设置页面,找到「Fulfillment」选项,勾选「启用webhook调用用于意图」,并确保你的Fulfillment代码中已经将PreviousTrackIntent和对应的处理函数绑定。

5. 优化识别准确性

  • 补充更多训练短语,覆盖不同用户的表达习惯(比如“返回上一个”、“我要听前面的”)
  • 测试时模拟各种场景:播放中、暂停时、已经在第一集时,确保逻辑正常

内容的提问来源于stack exchange,提问作者nealrs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:53:04