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

Google Assistant技能开发:自定义Payload能否播放音频及JS调用欢迎意图

嘿,我来帮你解决Google Assistant动作开发里的这几个问题,结合我做这类开发的经验给你梳理清楚~

1. 能否用自定义Payload播放音频?

当然可以!Google Assistant支持通过自定义Payload返回媒体响应,只要你的Payload符合它的规范就行。下面是一个完整的音频播放Payload示例,你可以直接在Webhook里返回这个结构:

// 自定义音频播放Payload
const audioPayload = {
  "payload": {
    "google": {
      "expectUserResponse": false, // 播放音频后如果不需要用户后续响应,设为false即可
      "richResponse": {
        "items": [
          {
            "mediaResponse": {
              "mediaType": "AUDIO",
              "mediaObjects": [
                {
                  "name": "欢迎音频",
                  "contentUrl": "https://your-audio-url.mp3", // 替换成你的公开HTTPS音频地址
                  "description": "欢迎语音频",
                  "icon": {
                    "url": "https://your-icon-url.png" // 可选,音频封面图
                  }
                }
              ],
              "supportsPlaybackControls": true // 是否显示播放/暂停控件
            }
          }
        ]
      }
    }
  }
};

你只需要把contentUrl替换成公开可访问的HTTPS音频地址(MP3格式最佳),然后在对应的意图处理函数里返回这个Payload就可以了。

2. 让欢迎意图返回音频响应

有两种简单的实现方式,推荐第二种更简洁的官方库方案:

方式一:用自定义Payload直接返回

在欢迎意图的Webhook处理函数里,直接返回上面的audioPayload:

function welcomeIntent(agent) {
  agent.add(audioPayload);
}

// 绑定意图到处理函数
let intentMap = new Map();
intentMap.set('Welcome Intent', welcomeIntent);
agent.handleRequest(intentMap);

方式二:用Actions on Google客户端库(更清晰易维护)

如果你用actions-on-google这个npm包,不用自己写全Payload,直接调用封装好的方法:

const { dialogflow, Media } = require('actions-on-google');
const app = dialogflow();

app.intent('Welcome Intent', (conv) => {
  conv.close(new Media({
    name: '欢迎音频',
    url: 'https://your-audio-url.mp3',
    description: '欢迎语音频',
    icon: { url: 'https://your-icon-url.png' }
  }));
});

// 导出给Webhook使用
exports.yourFulfillment = app;

官方库会帮你处理Payload的格式细节,减少出错概率,代码也更清爽。

3. 在JS中调用欢迎意图(触发另一个意图)

如果你想在某个意图的逻辑里触发欢迎意图,直接调用函数不是正确的做法——因为Google Assistant的意图触发是由Dialogflow的会话流程控制的。正确的方式是返回一个跟进事件(followup event),让Dialogflow自动触发对应的欢迎意图。

步骤如下:

  1. 先在Dialogflow的欢迎意图里添加一个触发事件(比如命名为welcome_event);
  2. 在其他意图的处理函数里,用代码返回这个事件:
function someOtherIntent(agent) {
  // 返回跟进事件,触发欢迎意图
  agent.setFollowupEvent('welcome_event'); // 这里的名称要和你在Dialogflow里设置的事件名一致
}

这样Dialogflow就会自动跳转到欢迎意图的处理逻辑,执行对应的音频返回逻辑。

最后提醒下:音频文件必须是HTTPS的,而且格式要支持(MP3、AAC等),不然Google Assistant会无法播放哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:57:59