Моя компания использует Twilio Flex в качестве нашей телефонной системы, и недавно мне было поручено настроить функцию, которая позволит нам редактировать голосовое сообщение TwiML, которое воспроизводится перед нашим обычным голосовым сообщением.Это сообщение TwiML будет изменено через бота Twilio, который я опубликовал в наших командах Microsoft.
Причина этого заключается в том, что наша служба поддержки может добавить короткое сообщение в строках «В настоящее время у нас возникают проблемы с X» перед нашим обычным сообщением «Добро пожаловать в [Компания] поддержка».
Если TwiML можно редактировать с использованием HTTP POST / PUT или API Twilio, это должно быть тривиальным вопросом, но до сих пор я не смог выяснить, как.
Я не смог найти ни одногоссылка на это в API doc , поэтому я решил, что HTTP POST будет подходящим вариантом.Используя это как отправную точку, я могу получить свой TwiML, используя HTTP GET:
https://support.twilio.com/hc/en-us/articles/223132187--Not-Authorized-error-when-trying-to-view-TwiML-Bin-URL
const axios = require('axios');
const crypto = require('crypto');
const accountSidFlex = process.env.accountSidFlex;
const authTokenFlex = process.env.authTokenFlex;
var URL = 'https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' + '?AccountSid=' + accountSidFlex
var twilioSig = crypto.createHmac('sha1', authTokenFlex).update(new Buffer(URL, 'utf-8')).digest('Base64')
var config = {
headers:{
'X-TWILIO-SIGNATURE': twilioSig
}
}
axios.get(
URL,config
).catch(error => console.log(error))
.then(response => {
console.log(response.data)
})
response.data показывает текущее XML-содержимое TwiML.
Мои попытки POST дают только тот же результат, что и GET, в то время как PUT дает метод 405. Not Allowed.
var URL = 'https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' + '?AccountSid=' + accountSidFlex
var twilioSig = crypto.createHmac('sha1', authTokenFlex).update(new Buffer(URL, 'utf-8')).digest('Base64')
var config = {
headers:{
'X-TWILIO-SIGNATURE': twilioSig,
'Content-Type': 'text/xml'
}
}
var xml =
'<?xml version="1.0" encoding="UTF-8"?>\
<Response><Play digits="www"/>\
<Say voice="alice">"We are currently experiencing X related issues". </Say>\
</Response>';
axios.post(
URL,xml,config
)
.catch(error => console.log(error))
.then(response => {
console.log(response.data)
})
В идеале я хотел бы иметь возможность изменить определенный TwiML, используя либоHTTP-методы или Twilio-API, чтобы мы могли использовать их в Studio Flow.Мы просто молчим, пока не добавим что-то к нему, и вернемся к молчанию, когда проблемы пройдут.
Любая помощь будет признательна!