ASK(Node.js)中%s未被字符串替换的问题排查
Alexa翻译配置占位符不替换问题排查
问题原因:Alexa Skill SDK的
handlerInput.t()方法不支持%s这种printf风格占位符,它采用的是索引式占位符(如{0}、{1})来匹配传入的参数顺序。修复方案:
- 调整翻译配置中的QUOTE字段,将
%s替换为对应索引的占位符:translation:{ GREETING : 'What do you want to hear?', SKILL_NAME : 'Anime Quotes', QUOTE: 'Quote by {0}, from {1}. {2}', } - 保持
handlerInput.t()的参数传递逻辑不变:outputSpeech = handlerInput.t('QUOTE', character, anime, translated);
此时传入的
character会对应{0},anime对应{1},translated对应{2},实现正确的文本替换。- 调整翻译配置中的QUOTE字段,将
补充说明:你提到单独输出三个字符串正常,说明参数本身不存在问题,核心问题就是占位符格式不符合Alexa SDK的要求,替换后即可解决语音读出
%s的问题。
内容的提问来源于stack exchange,提问作者Geovanne Almeida
相关产品推荐
相关产品推荐

