Twilio SSML с использованием функций времени выполнения - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь добавить текст SSML, используя Say-глаголы в функциях времени выполнения Twilio.

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;

Мне известны методы ssml в объекте Say, однако они довольно громоздки, и было бы проще просто написать теги как часть Say-String.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

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

0 голосов
/ 29 октября 2018

Разработчик Twilio здесь.

Метод say (и другие методы TwiML) предназначены для упрощения написания XML-ответов без необходимости самостоятельно писать и кодировать XML.Таким образом, эти вспомогательные методы будут избегать ввода.В настоящее время нет способа заставить библиотеку не экранировать ввод, и я рекомендую использовать помощники SSML.

Если вы действительно не хотите использовать помощники, тогда вы можете просто написать <Response>и <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);
}
...