Alexa Skills开发中Interceptor配置及意图跳转相关问题咨询
Alexa Interceptor 常见问题解答
1. Interceptor是否可以仅绑定到单个Intent?
官方SDK没有提供直接绑定单个Intent的配置参数,但可以通过简单的逻辑实现等价效果:
- 在Interceptor的执行入口处,先从
handlerInput中获取当前请求的Intent名称 - 仅当Intent名称和你需要绑定的目标Intent一致时,才执行后续拦截逻辑;不一致则直接跳过拦截,返回原有流程即可
2. 是否可以通过Interceptor跳转到其他Intent?
可以,但需要注意拦截器的执行时机,避免出现响应内容混杂的问题。
异常原因
你选择了Response Interceptor实现跳转,该拦截器的触发时机是原Intent的全部响应内容(包括APL模板、语音播报、卡片等)已经构建完成后,才会对响应做二次修改。你在跳转时仅覆盖了语音播报字段,没有清除原Intent已经生成的APL指令,也没有把跳转目标Intent的APL指令写入最终响应,就会出现原APL正常展示、新Intent语音播报、新APL不显示的异常。
修复方案
- 优先替换为Request Interceptor实现跳转逻辑:Request Interceptor的触发时机在原Intent的处理逻辑执行之前,此时还没有生成任何响应内容,直接调用目标Intent的处理逻辑生成完整响应即可,不会出现新旧内容混杂的问题。
- 如果必须使用Response Interceptor实现:跳转时需要先清空原响应的
directives(APL指令存放字段)、outputSpeech、card等所有字段,再完整写入目标Intent的全部响应内容,避免残留旧内容。
内容的提问来源于stack exchange,提问作者Apoena Machado
相关产品推荐
相关产品推荐

