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

Alexa自定义技能设备发现及电视视频流功能实现技术咨询

解决Alexa Custom Skill扩展电视视频流功能的可行方案

嘿,我来帮你理清这个问题!你提到的Custom Skill用VideoApp推流到Echo Show是没错,但如果要对接真实电视设备、摆脱硬编码设备列表,其实有更灵活的实现方式,我给你拆解清楚:

1. 先明确两种核心播放场景

  • 仅在Echo Show等带屏Echo设备播放
    这种场景完全不需要设备发现,直接用VideoApp.Launch指令就能搞定。你只需要在Skill的Intent处理逻辑里,返回包含视频流URL的指令就行,示例JSON大概是这样:

    {
      "version": "1.0",
      "response": {
        "directives": [
          {
            "type": "VideoApp.Launch",
            "videoItem": {
              "source": "https://your-video-stream-url.com/hls-stream.m3u8",
              "metadata": {
                "title": "周末影院",
                "subtitle": "高清热播剧"
              }
            }
          }
        ],
        "shouldEndSession": true
      }
    }
    

    注意视频流格式要符合Alexa要求,HLS、MP4这些都没问题。

  • 控制第三方电视设备播放视频
    要是想让语音指令控制家里的电视播放,这时候就需要设备发现,但绝对不用硬编码!你可以这么做:

    • 先搭个简单的设备管理后端,存好用户绑定的电视设备信息——比如唯一的applianceId、设备名称(比如“客厅电视”)、支持的播放能力
    • 当Alexa发送Discovery请求时,你的Skill调用后端API,拉取当前用户绑定的所有电视设备,然后动态生成符合Alexa规范的发现响应返回
    • 设备被Alexa识别后,用户说“Alexa,让客厅电视播放XX”,你的Skill就能拿到对应设备的applianceId,再通过电视的API、MQTT或者其他协议发送播放指令

2. 动态生成设备发现响应的示例逻辑

你看到的硬编码设备只是Demo里的简化写法,生产环境可以用伪代码这样实现(以Python为例):

def handle_alexa_discovery(user_id):
    # 从后端获取该用户绑定的电视设备列表
    user_devices = fetch_user_bound_tvs(user_id)
    
    # 构建Alexa Discovery响应结构
    discovery_response = {
        "event": {
            "header": {
                "namespace": "Alexa.Discovery",
                "name": "Discover.Response",
                "payloadVersion": "3"
            },
            "payload": {
                "endpoints": []
            }
        }
    }
    
    # 遍历设备,生成每个设备的Endpoint信息
    for tv in user_devices:
        endpoint = {
            "endpointId": tv["appliance_id"],
            "friendlyName": tv["device_name"],
            "description": "支持Alexa控制的智能电视",
            "manufacturerName": "你的设备品牌",
            "displayCategories": ["TV"],
            "capabilities": [
                {
                    "type": "AlexaInterface",
                    "interface": "Alexa.Video",
                    "version": "3"
                },
                {
                    "type": "AlexaInterface",
                    "interface": "Alexa.PlaybackController",
                    "version": "3",
                    "supportedOperations": ["Play", "Pause", "Stop"]
                }
            ]
        }
        discovery_response["event"]["payload"]["endpoints"].append(endpoint)
    
    return discovery_response

3. 几个关键注意点

  • 如果你要控制第三方电视,得确保电视支持对应的控制协议——要么它本身兼容Alexa Video接口,要么你自己实现了HTTP/蓝牙等控制方式
  • Custom Skill的设备发现规范和Smart Home Skill略有不同,一定要按照Alexa Custom Skill的文档来构建响应结构
  • 视频流的码率、分辨率也要适配目标设备,避免播放卡顿

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:04:31