Twilio SSML使用运行时函数

时间:2018-10-26 18:18:54

标签: node.js twilio ssml

我正在尝试使用Twilio运行时函数中的说动词​​添加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的一部分编写起来会更容易。

2 个答案:

答案 0 :(得分:0)

这里是Twilio开发人员的传播者。

say方法(和其他TwiML方法)旨在使编写XML响应变得更容易,而不必亲自编写和编码XML。因此,这些辅助方法将转义输入。当前没有一种方法可以使库不转义输入,我建议使用SSML帮助器。

如果您真的不想使用帮助器,则也可以手动编写<Response><Say>。确保return a Twilio.Response object设置了正确的标题。

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);
}

答案 1 :(得分: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