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

如何在Flask-ASK中检测Alexa设备支持的接口

在Flask-ASK中判断Alexa设备支持的接口

我之前做跨设备Alexa技能的时候也踩过这个坑,刚好可以给你分享具体的解决办法!

其实Flask-ASK已经帮我们把请求里的上下文信息封装好了,直接从request对象里就能拿到设备支持的接口数据,不用自己去解析JSON。

具体实现步骤

  1. 获取设备支持的接口集合
    在你的技能处理函数里,通过request.context.system.device.supported_interfaces就能拿到对应设备的接口信息,这和你提供的上下文结构完全对应。

  2. 检查是否支持特定接口
    用Python的hasattr()方法来判断是否存在对应的接口属性,比如:

  • 检查带屏幕设备的Display接口
  • 检查音频设备的AudioPlayer接口
  • 检查视频设备的VideoApp接口

完整代码示例

from flask import Flask
from flask_ask import Ask, request, question

app = Flask(__name__)
ask = Ask(app, "/")

@ask.launch
def launch_skill():
    # 提取设备支持的接口
    supported_interfaces = request.context.system.device.supported_interfaces
    
    # 判断设备类型
    has_display = hasattr(supported_interfaces, 'Display')
    
    # 根据设备返回适配的响应
    if has_display:
        # 带屏幕设备:可以返回带卡片或视觉模板的响应
        return question("嗨!欢迎使用带屏幕版本的技能,你想查看什么内容?").simple_card("欢迎", "带屏幕设备专属欢迎")
    else:
        # 纯音频设备:只返回语音响应即可
        return question("嗨!欢迎使用音频版本的技能,你想播放什么内容?")

if __name__ == '__main__':
    app.run(debug=True)

额外提示

如果你的技能需要用到更细致的接口版本判断(比如Display接口的不同版本特性),可以进一步访问supported_interfaces.Display的属性,但大部分基础场景下,只需要判断接口是否存在就足够避免那个"无法访问技能"的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:01:17