【问题标题】:Editing Twilio TwiML using API or HTTP POST使用 API 或 HTTP POST 编辑 Twilio TwiML
【发布时间】: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:

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 显示 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


    【解决方案1】:

    您目前无法以编程方式更改 TwiML Bins、Studio Flows 或 Twilio Functions 的内容。我相信您正在寻找的关键功能是一种基于某些条件在 Studio 流程中动态更新消息传递(Say/Play Widget)的方法。

    一种方法是使用函数小部件检索消息的 Twilio Sync 文档,将消息作为 JSON 返回,并让 Say/Play 小部件播放该消息。您可以在相关文档中找到用于添加、修改和检索的 Twilio Sync REST API 示例。

    您可以使用此处详述的变量语法检索已解析的响应,https://www.twilio.com/docs/studio/widget-library#run-function

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多