如何创建AlexaClient实例实现Python驱动的Alexa设备播报?
实现Python脚本触发Alexa Echo设备播报自定义警报文本
核心思路
借助alexapy和alexa_media_player两个Python包,先完成Amazon账号的登录验证,再获取账号绑定的Alexa设备列表,创建对应设备的AlexaClient实例,最终调用send_announcement方法实现自定义文本播报。
步骤实现
安装依赖包
先安装所需的Python包:pip install alexapy alexa_media_player完整代码实现
在你已有的登录代码基础上,补充设备获取、客户端创建及播报发送的逻辑: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()关键细节说明
get_devices()方法会返回所有绑定到当前Amazon账号的Alexa设备原始字典,包含设备名称、ID等核心信息- 创建
AlexaClient时,直接传入设备原始数据字典和已登录的alexa_login对象即可 - 若只需给特定设备播报,可在遍历
devices_data时,通过判断device_item['accountName'](设备名称)来筛选目标设备 - 如需实现所有Echo设备同步播报,遍历所有设备逐一发送即可,也可参考
alexapy文档调整send_announcement的参数启用广播模式
注意事项
- 首次登录可能需要处理Amazon的两步验证,代码运行时会提示输入验证码,后续登录会缓存登录状态
- 确保目标Echo设备已绑定到当前Amazon账号且处于联网状态
- 若出现权限报错,可先在浏览器手动登录一次Amazon账号,确认账号状态正常
内容的提问来源于stack exchange,提问作者SamCie
相关产品推荐
相关产品推荐

