Alexa APL中AlexaTextList的speakList命令正确使用方法
SpeakList命令无法播报列表语音的修复方案
核心问题点
SpeakList的count参数配置错误:当前列表实际仅3个条目,配置count=6会导致命令遍历到不存在的条目时直接中断语音逻辑,仅保留滚动行为speechItems绑定值无效:AlexaLists组件的speechItems要求传入经textToSpeech转换后的SSML语音内容数组,当前代码绑定的是未转换的纯文本数组,转换器生成的语音结果完全没有被引用,列表子项拿不到有效speech属性自然无法播报- 命令触发时序不对:根容器
onMount执行时,AlexaLists内部子列表项还未完成渲染,且前序开场语音播报未结束,直接触发SpeakList时子项的语音属性还未绑定完成
具体修复步骤
- 调整dataSources的转换器配置,将speakItems数组的语音转换结果直接输出到原speakItems字段,替换纯文本内容
- 修正SpeakList命令的count参数,和实际列表条目总数保持一致
- 调整onMount命令执行逻辑,在前序开场播报后增加短延迟,等待列表渲染完成再触发SpeakList
修正后代码片段
dataSources 转换器部分修正
"transformers": [ { "inputPath": "textToSpeak", "transformer": "textToSpeech", "outputName": "outputSpeech" }, { "inputPath": "speakItems", "transformer": "textToSpeech", "outputName": "speakItems" } ]
其余dataSources配置不需要改动,转换完成后payload.data.properties.speakItems会自动替换为对应SSML语音数组,和APL里的绑定路径完全匹配
APL文档onMount部分修正
"onMount": [ { "type": "SpeakItem", "componentId": "firstSpeak" }, { "type": "Sequential", "commands": [ { "type": "Delay", "delay": 100 }, { "type": "SpeakList", "componentId": "itemsList", "start": 0, "count": 3, "minimumDwellTime": 800, "align": "center" } ] } ]
其余APL配置不需要改动,AlexaLists组件原有的speechItems绑定路径无需调整
验证提示
如果修改后仍有问题,可以给AlexaLists组件绑定onScroll事件打印子项属性,确认每个列表子项的speech字段为<speak>标签包裹的SSML内容,如果是纯文本则说明转换器配置或绑定路径仍有错误。
内容的提问来源于stack exchange,提问作者pwzero
相关产品推荐
相关产品推荐

