如何实现Alexa Custom Skill定时执行指定动作?
实现Alexa自定义技能定时执行动作的方案
要实现「Alexa,下午3点做某事」这类定时触发动作的需求,核心要用到Alexa Reminders API,下面是具体的实现思路和关键步骤:
核心依赖:Alexa Reminders API
这个API专门用于创建、管理定时提醒,到指定时间后会触发事件通知你的技能,进而执行预设动作。
关键实现步骤
- 配置技能权限
在Alexa开发者控制台,给你的技能添加alexa::alerts:reminders:skill:readwrite权限,用户启用技能时必须授权该权限,否则无法创建提醒。 - 解析用户请求的时间与动作
- 利用Alexa内置的
AMAZON.TIME槽位提取用户指定的时间,自定义action槽位来捕获要执行的动作内容。 - 配置对应的意图(比如
ScheduleActionIntent),关联这两个槽位,确保能正确解析用户的语音指令。
- 利用Alexa内置的
- 调用API创建定时提醒
在技能后端,构造Reminders API的创建请求,传入解析后的时间(需转换为UTC格式并指定时区,比如Asia/Shanghai)、提醒触发时的语音提示,同时设置提醒触发后要通知的技能端点。
简化的请求示例:{ "request": { "type": "CreateReminderRequest", "alertInfo": { "spokenInfo": { "content": [{ "locale": "zh-CN", "text": "现在要执行你指定的动作了" }] } }, "trigger": { "type": "SCHEDULED_ABSOLUTE", "scheduledTime": "2024-05-20T15:00:00.000Z", "timeZoneId": "Asia/Shanghai" }, "pushNotification": { "status": "ENABLED" } } } - 处理提醒触发事件
当到达指定时间时,Alexa会向你的技能发送ReminderAlertTriggered事件,后端监听该事件后,即可执行对应的动作(比如控制智能设备、发送自定义通知等)。
注意点
- 时间转换要准确:用户说的本地时间必须转成UTC时间,同时匹配正确的时区ID,避免触发时间偏差。
- 权限引导:必须在技能启用流程中明确引导用户授权提醒权限,否则API调用会失败。
- 多地区适配:如果技能支持多locale,要针对不同地区配置对应的时间解析规则和提醒文本。
内容的提问来源于stack exchange,提问作者betta7391
相关产品推荐
相关产品推荐

