Twilio Studio的Say/Gather组件无法输出SSML,求解决方法
确认Polly语音的选择是否正确
必须在Say/Gather组件的「Voice」选项里选Amazon Polly系列的语音(比如Matthew、Joanna),不能用Twilio原生语音。原生语音不支持SSML,只要选了它,输入的SSML标签就会被自动剥离。同时要保证「Language」选项和所选Polly语音的语言匹配,比如选英文Polly语音就不能设成中文,不匹配也会导致SSML失效。SSML的格式要规范
把完整的SSML内容直接填到「Text to say」框里,必须用<speak>根标签包裹所有内容,不用额外转义常规标签。比如正确示例:<speak>Hi there, <prosody volume="loud">let's test SSML with Polly</prosody></speak>要是只写部分标签、没套
<speak>,Twilio会把内容当成普通文本处理,直接剥离标签。检查流程的部署状态
别只在草稿里改配置,一定要部署修改后的流程版本。如果通话用的还是旧的已部署版本,哪怕草稿里改对了也没用。可以试试新建一个极简测试流程,只放一个配置好Polly语音和正确SSML的Say/Gather组件,测试是否能生成带SSML的TwiML,排除原有流程里其他组件的干扰。排查日志与账号权限
去Twilio控制台的「Logs > Studio」里找对应流程的执行日志,查看Say/Gather组件生成的TwiML,确认有没有SSML标签。要是还是被剥离,检查流程里有没有其他组件(比如Set Variables)修改了该组件的文本内容,把SSML替换掉了。另外,确认账号已经开通Amazon Polly权限(控制台「Voice > Settings > Amazon Polly」里可以查看),虽然默认是开通的,但也不妨检查一下。
内容的提问来源于stack exchange,提问作者dh42

