开发Alexa技能:如何向用户Alexa设备发送主动通知?
实现Alexa技能主动推送订单状态通知的完整方案
嘿,我刚好折腾过Alexa主动推送的功能,你说的这种订单状态提醒,核心就是用Alexa Proactive Events API——这也是亚马逊购物、Quote Maker这类技能实现主动通知的底层逻辑,给你拆解下具体怎么搞:
1. 先搞定权限与资质(这步是前提)
- 你的技能必须过亚马逊的合规审核,尤其是要在技能描述和授权流程里明确告诉用户:你会推送订单状态类的通知,比如发货、派送提醒,不能隐瞒用途。
- 去Alexa开发者后台,给你的技能开启「Proactive Events」权限,然后申请对应的事件类型——订单状态更新用
AMAZON.OrderStatus.Updated就好,亚马逊已经预定义了很多标准化事件,覆盖物流、预约这类场景,不用自己瞎造。 - 用户启用你技能的时候,必须主动授权同意接收通知,这个授权流程是亚马逊自带的,你只要在后台配置好,用户启用时会看到对应的权限申请弹窗。
2. 触发通知的核心流程
当你的系统里有订单状态变更(比如“已发货”“今日即将派送”),就可以调用API推送给用户了,步骤如下:
- 先把用户的Alexa标识绑定到你的订单系统:用户和你的技能交互时,Alexa会传给你一个
userId(也就是亚马逊用户的customerId),你要把这个ID和用户在你的系统里的账号、订单绑定起来,这样才能知道该推给谁。 - 构造符合亚马逊规范的事件Payload,给你个订单发货的示例(直接改参数就能用):
{ "timestamp": "2024-05-20T12:30:00Z", "referenceId": "你的订单ID_123", "expiryTime": "2024-05-21T12:30:00Z", "event": { "name": "AMAZON.OrderStatus.Updated", "payload": { "order": { "orderId": "你的订单ID_123", "status": "SHIPPED", "statusReason": "你的包裹已发出,正在配送途中!", "expectedDelivery": "2024-05-22T10:00:00Z" } } }, "localizedAttributes": [ { "locale": "zh-CN", "text": { "summary": "你的订单#123已发货!", "content": "包裹正在路上,预计5月22日10:00前送达。" } } ], "relevantAudience": { "type": "Unicast", "payload": { "user": "amzn1.ask.account.用户的Alexa唯一标识" } } }
- 用你的技能的LWA(Login with Amazon)凭证获取访问令牌,然后向
https://api.amazonalexa.com/v1/proactiveEvents发送POST请求,把上面的Payload传过去就行。
3. 用户端的通知呈现
用户的Alexa设备(Echo、Dot这些)会以两种方式提醒:
- 设备的环形灯会闪烁(比如Echo的蓝色灯),提示有新通知;
- 用户可以说「Alexa,我的通知是什么?」来收听详细内容,也能在Alexa App里看到文字版的通知。
避坑提醒
- 别滥用推送!亚马逊有频率限制,同一个用户一天内别发太多无关通知,不然用户投诉了,你的技能可能被下架。
expiryTime要合理设置,比如“即将派送”的通知就设当天过期,别搞成几个月后,亚马逊会拒收不符合要求的事件。- 一定要确保用户已经授权了!如果用户在Alexa App里取消了你的技能的通知权限,就不能再给他们推了,强行调用API会报错。
内容的提问来源于stack exchange,提问作者user9661980
相关产品推荐
相关产品推荐

