如何通过Alexa技能向用户发送链接?Send to Phone Intent实现咨询
关于Alexa技能中通过Send to Phone Intent发送链接的实现方案
当然可以实现,Send to Phone Intent就是专门用于这类场景的能力,不少开发者已经在电商、内容分享类技能中使用它,你描述的"语音触发后向手机推送链接"是非常典型的适用场景。
具体实现步骤:
开启权限
在Alexa开发者控制台的技能权限设置中,找到并启用Send to Phone权限。用户启用你的技能时,会被要求授予该权限,这是发送推送的前提。配置交互模型
在技能的交互模型里,添加系统内置的AMAZON.SendToPhoneIntent。如果需要动态传递链接,可以自定义一个URLSlot来捕获用户提及的目标地址;如果是固定链接(比如亚马逊官网),也可以直接在后端代码中指定。编写后端处理逻辑
在技能的后端代码中,调用Alexa的推送通知API,构造包含链接的推送内容。以下是Node.js环境的示例代码:const Alexa = require('ask-sdk-core'); const SendToPhoneHandler = { canHandle(handlerInput) { return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest' && Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.SendToPhoneIntent'; }, async handle(handlerInput) { // 构造推送内容 const notification = { title: '打开亚马逊网站', body: '点击通知即可访问亚马逊官网', url: 'https://www.amazon.com' }; try { // 调用推送API await handlerInput.serviceClientFactory.getPushNotificationServiceClient() .sendPushNotification(handlerInput.requestEnvelope, notification); return handlerInput.responseBuilder .speak('已给你的手机发送了亚马逊网站的链接,去查看通知吧') .getResponse(); } catch (err) { console.error('推送失败:', err); return handlerInput.responseBuilder .speak('抱歉,暂时无法发送链接,请稍后再试') .getResponse(); } } };测试注意事项
- 确保用户的Alexa设备账号与手机Alexa App账号一致
- 用户必须在Alexa App中为你的技能授予Send to Phone权限
- 建议使用真实Alexa设备测试,模拟器可能无法正常触发推送
开发者使用现状
这个Intent在实际开发中应用很广泛:比如电商技能中用户语音请求查看商品详情,就推送商品链接到手机;资讯类技能中用户要求查看新闻全文,发送新闻链接。你的场景完全符合该Intent的设计初衷,落地起来没有问题。
内容的提问来源于stack exchange,提问作者tayszane
相关产品推荐
相关产品推荐

