Twilio SSML 使用运行时函数

Twilio SSML Using Runtime Functions

我正在尝试在 Twilio 运行时函数中使用 Say-verbs 添加 SSML 文本。

let twiml = new Twilio.twiml.VoiceResponse();
twiml.say('<prosody rate="-15%">Hello World</prosody>');

以上代码在呈现时生成编码文本。有没有办法让 Twilio 接受不编码的文本?

&lt;prosody rate='-15%'&gt;Hello World&lt;/prosody&gt;

我知道 Say 对象中的 ssml 方法,但是它们相当麻烦,将标签作为 Say-String 的一部分编写会更容易。

此处为 Twilio 开发人员布道师。

say 方法(和其他 TwiML 方法)旨在使编写 XML 响应变得更容易,而无需您自己手写和编码 XML。因此,这些辅助方法将转义输入。目前没有办法让库不转义输入,我建议使用 SSML 助手。

如果你真的不想使用助手,那么你也可以手写<Response><Say>。确保 return a Twilio.Response object 设置正确 headers。

exports.handler = function(context, event, callback) {
    const twiml = `
      <Response>
        <Say>
          <prosody rate="-15%">Hello World</prosody>
        </Say>
      </Response>
    `;
    const response = new Twilio.Response();
    response.setBody(twiml);
    response.appendHeader('Content-Type', 'application/xml');
    callback(null, response);
}

Javascript

const Twilio = require('twilio');

const response = new Twilio.twiml.VoiceResponse();
const say = response.say();
say.ssmlProsody({ rate: '15%' }, 'Hello World');

console.log(response.toString());

XML

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say>
    <prosody rate="15%">Hello World</prosody>
  </Say>
</Response>

https://www.twilio.com/docs/voice/twiml/say/text-speech