0

我正在尝试在 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 的一部分编写会更容易。

4

2 回答 2

0

Twilio 开发人员布道者在这里。

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

如果您真的不想使用帮助程序,那么您也可以手动编写<Response>and <Say>。确保返回一个Twilio.Response设置了正确标题的对象。

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);
}
于 2018-10-29T01:15:49.633 回答
0

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

于 2018-11-08T00:53:26.793 回答