【发布时间】:2019-05-28 01:54:47
【问题描述】:
我的公司使用 Twilio Flex 作为我们的电话系统,我最近的任务是设置一项功能,让我们可以编辑在正常语音消息之前播放的 TwiML 语音消息。此 TwiML 消息将通过我在 Microsoft Teams 中发布的 Twilio 机器人进行更改。
这样做的原因是,我们的支持中心可以在正常的“欢迎使用 [公司] 支持”消息之前,在“我们目前遇到 X 问题”行中添加一条短消息。
如果 TwiML 可以使用 HTTP POST/PUT 或 Twilio 的 API 进行编辑,这应该是一件小事,但到目前为止我还无法弄清楚如何。
我在API doc 中找不到对此的任何引用,因此我决定采用 HTTP POST。以此为起点,我可以使用 HTTP GET 检索我的 TwiML:
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 显示 TwiML 当前的 XML 内容。
我的 POST 尝试只给出与 GET 相同的输出,而 PUT 给出 405 Method 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)
})
理想情况下,我希望能够使用 HTTP 方法或 Twilio-API 更改特定的 TwiML,以便我们可以在 Studio Flow 中使用它。我们只会让它保持沉默,直到我们需要向它添加一些东西并在问题过去后恢复为沉默。
任何帮助将不胜感激!
【问题讨论】:
标签: twilio twilio-api twilio-twiml