如何修改AWS QnA Bot对接Alexa的默认欢迎消息
AWS QnA Bot对接Alexa自定义欢迎消息不生效问题
问题描述
- 使用AWS QnA Bot对接Alexa时,方案默认的Alexa欢迎消息为
Hello, Please ask a question,需要将其修改为个性化内容 - 按照内置教程指引,找到作为Alexa Skill端点的Lambda函数,定位到名为
get_welcome_message的代码段,代码如下:
async function get_welcome_message(req, locale){ console.log("=================" + JSON.stringify(req)); const welcome_message = _.get(req,'_settings.DEFAULT_ALEXA_LAUNCH_MESSAGE', 'Hello, Please ask a question'); if (_.get(req._settings, 'ENABLE_MULTI_LANGUAGE_SUPPORT')){ return await translate.get_translation(welcome_message,'en',locale,req) } else { return welcome_message; } }
- 尝试直接修改代码中
welcome_message变量对应的默认字符串,但无论修改为何值,Alexa返回的欢迎语始终为默认的Hello, Please ask a question - 已尝试的排查操作:
- 清除Alexa端历史记录与缓存,排除缓存影响
- 重新部署修改后的Lambda函数
- 重建AWS QnA Bot与Alexa Skill
- 排查Lambda代码确认,该函数是唯一设置欢迎消息的位置,所有欢迎消息调用逻辑均走该中间件
- 核心诉求:获取修改默认欢迎消息的正确方法,排查遗漏的配置点
问题原因
修改代码不生效的核心原因是_.get方法的读取逻辑:该方法会优先从请求携带的_settings配置对象中读取DEFAULT_ALEXA_LAUNCH_MESSAGE参数值,只有当该参数完全不存在时,才会返回代码里写的字符串作为兜底默认值。
AWS QnA Bot初始化部署时,默认就会在内置配置中心写入DEFAULT_ALEXA_LAUNCH_MESSAGE参数,值就是默认欢迎语,因此代码永远不会走到你修改的兜底值分支,直接改代码自然无效。
正确修改步骤
- 登录AWS QnA Bot管理控制台,进入全局设置页面
- 在配置项列表中搜索
DEFAULT_ALEXA_LAUNCH_MESSAGE,直接将该参数的值修改为你需要的个性化欢迎语 - 如果你开启了多语言支持(对应配置项
ENABLE_MULTI_LANGUAGE_SUPPORT为开启状态),需要同步配置对应语种的欢迎语翻译,否则系统会自动将默认值翻译为对应locale的语言返回 - 保存配置后等待1-2分钟,配置会自动同步到后端Lambda环境,无需手动重新部署Lambda或重建Alexa Skill,直接测试即可生效
提示:AWS QnA Bot几乎所有可调整的业务逻辑参数都优先从内置配置中心读取,代码中硬编码的字符串仅作为配置缺失时的兜底,调整功能优先在配置页查找对应参数,不要直接修改代码硬编码值。
内容的提问来源于stack exchange,提问作者Kera
相关产品推荐
相关产品推荐

