我的公司使用Twilio Flex作为我们的电话系统,我最近的任务是设置一个功能,让我们可以编辑在正常语音消息之前播放的TwiML语音消息。这条TwiML消息将通过我在微软团队中发布的Twilio机器人进行更改。
这样做的原因是,我们的支持台可以在正常的“欢迎使用公司支持”消息之前添加一条短消息,即“我们当前遇到X的问题”。
如果可以使用HTTP POST/PUT或Twilio的API编辑TwiML,这应该是一件微不足道的事情,但到目前为止我还不能弄清楚如何编辑。
我在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的当前内容。
我在POST中的尝试只给出了与GET相同的输出,而PUT给出了不允许的405方法。
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,这样我们就可以在out Studio Flow中使用它。我们只是让它保持静默,直到我们需要向它添加一些东西,一旦问题过去,我们就会恢复静默。
任何帮助都将不胜感激!
发布于 2019-05-27 23:01:45
您当前不能以编程方式更改Twilio、Studio Flows或TwiML函数的内容。我相信您正在寻找的关键功能是一种基于某种条件动态更新Studio flow中的消息传递(比如/播放Widget)的方法。
一种方法是使用函数Widget来检索消息的Twilio Sync文档,将消息作为JSON返回,并让Say/Play小部件播放该消息。您可以在相关文档中找到添加、修改和检索的Twilio Sync REST API示例。
您可以使用这里详细介绍的变量语法https://www.twilio.com/docs/studio/widget-library#run-function来检索解析后的响应。
https://stackoverflow.com/questions/56325959
复制相似问题