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

如何创建AlexaClient实例实现Python驱动的Alexa设备播报?

实现Python脚本触发Alexa Echo设备播报自定义警报文本

核心思路

借助alexapy和alexa_media_player两个Python包,先完成Amazon账号的登录验证,再获取账号绑定的Alexa设备列表,创建对应设备的AlexaClient实例,最终调用send_announcement方法实现自定义文本播报。

步骤实现

  1. 安装依赖包
    先安装所需的Python包:

    pip install alexapy alexa_media_player
    
  2. 完整代码实现
    在你已有的登录代码基础上,补充设备获取、客户端创建及播报发送的逻辑:

    import asyncio
    import alexapy
    from alexa_media_player.media_player import AlexaClient
    
    # 替换为你的Amazon账号信息
    AMAZON_URL = 'amazon.com'
    AMAZON_USERNAME = '你的亚马逊登录邮箱/用户名'
    AMAZON_PASSWORD = '你的亚马逊密码'
    
    def fun_outputpath(file: str):
        return file
    
    async def send_alexa_announcement(message):
        alexa_login = alexapy.AlexaLogin(AMAZON_URL, AMAZON_USERNAME, AMAZON_PASSWORD, fun_outputpath)
        try:
            await alexa_login.login()
            is_connected = await alexa_login.test_loggedin()
            if not is_connected:
                print("登录失败")
                return
    
            # 获取账号绑定的所有Alexa设备原始数据
            devices_data = await alexa_login.get_devices()
            if not devices_data:
                print("未找到绑定的Alexa设备")
                return
    
            # 遍历设备发送播报(如需指定单台设备,可通过设备名称筛选)
            for device_item in devices_data:
                # 创建AlexaClient实例
                alexa_client = AlexaClient(device_item, alexa_login)
                # 初始化设备信息
                await alexa_client.init()
                # 创建AlexaAPI实例
                echo_device = alexapy.AlexaAPI(alexa_client, alexa_login)
                # 发送播报文本
                await echo_device.send_announcement(message=message)
                print(f"已向设备 {device_item['accountName']} 发送播报")
    
        finally:
            await alexa_login.close()
    
    def main():
        # 替换为你的警报文本
        alert_message = "监控到网页数据异常,请及时查看!"
        asyncio.run(send_alexa_announcement(alert_message))
    
    if __name__ == "__main__":
        main()
    
  3. 关键细节说明

    • get_devices()方法会返回所有绑定到当前Amazon账号的Alexa设备原始字典,包含设备名称、ID等核心信息
    • 创建AlexaClient时,直接传入设备原始数据字典和已登录的alexa_login对象即可
    • 若只需给特定设备播报,可在遍历devices_data时,通过判断device_item['accountName'](设备名称)来筛选目标设备
    • 如需实现所有Echo设备同步播报,遍历所有设备逐一发送即可,也可参考alexapy文档调整send_announcement的参数启用广播模式

注意事项

  • 首次登录可能需要处理Amazon的两步验证,代码运行时会提示输入验证码,后续登录会缓存登录状态
  • 确保目标Echo设备已绑定到当前Amazon账号且处于联网状态
  • 若出现权限报错,可先在浏览器手动登录一次Amazon账号,确认账号状态正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:40:57