自定义Google Home应用中返回YouTube播放列表的实现问题
让Google Assistant播放YouTube播放列表的解决方案
嘿Jason,我明白你现在的困境——你的webhook已经能拿到播放列表URL,但Google Assistant只会把它读出来,不会触发播放。别担心,要实现播放操作,你需要用Google Assistant的**媒体响应(Media Response)**来替代单纯的文本回复,这是让Assistant处理音频/视频播放的标准方式。
下面是具体的实现步骤和要点:
1. 核心:返回Media Response而非纯文本
Google Assistant不会自动识别URL并播放,你需要在webhook的响应里明确告诉它“这是一个媒体内容,请播放它”。Media Response是Actions on Google框架专门用来触发媒体播放的响应类型,支持YouTube播放列表、音频文件等。
示例响应格式(JSON)
这是你需要从webhook返回的结构,我以YouTube视频播放列表为例:
{ "fulfillmentMessages": [ { "mediaResponse": { "mediaType": "VIDEO", "mediaObjects": [ { "name": "本周末教堂礼拜歌曲", "description": "周日聚会所用的赞美诗合集", "contentUrl": "你的YouTube播放列表完整URL", "largeImage": { "url": "https://example.com/playlist-cover.jpg", // 可选:播放列表封面图 "accessibilityText": "教堂歌曲播放列表封面" } } ], "optionalMediaControls": "PAUSE_RESUME" // 可选:添加播放控制选项 } } ] }
字段说明
mediaType:选VIDEO(因为YouTube是视频内容),如果是纯音频可以选AUDIO。contentUrl:直接填入你的YouTube播放列表URL,确保这个列表是公开或未列出的(私有列表Assistant无法访问)。name和description:用于在Assistant的界面上展示,给用户清晰的提示。optionalMediaControls:可以添加PAUSE_RESUME、STOP等控制选项,方便用户操作。
2. 适配“在电视上播放”的指令
用户的指令提到“在我的电视上播放”,你不需要额外做太多配置——只要用户的电视支持Google Cast,并且已经和用户的Google账户关联,Assistant会自动根据上下文把内容投放到指定设备。不过要确保你的Media Response格式正确,这样Assistant才能识别并触发投屏。
3. 关键注意事项
- 播放列表权限:必须确保YouTube播放列表是公开或未列出状态,私有列表会导致Assistant无法加载内容。
- 测试验证:可以用Actions on Google的测试控制台,或者直接在关联的Google Assistant设备上测试指令,看是否能正常触发播放。
- 框架兼容:如果你用的是Dialogflow ES/CX,也可以在意图的响应设置里直接添加“媒体响应”,不需要手动写JSON,但如果是自定义webhook,就必须按上面的格式返回。
这样调整后,当用户说出“在我的电视上播放我们本周末要用的歌曲”时,Assistant就会直接播放你的YouTube播放列表,而不是只读URL啦!
内容的提问来源于stack exchange,提问作者Jason Silver
相关产品推荐
相关产品推荐

