当前位置: 首页 > 知识库问答 >
问题:

使用API或HTTP POST编辑Twilio TwiML

扶珂
2023-03-14

我的公司使用Twilio Flex作为我们的电话系统,我最近的任务是设置一个功能,让我们可以编辑TwiML语音信息,在正常语音信息之前播放。这个TwiML消息将通过我在微软团队中发布的Twilio机器人进行更改。

这样做的原因是,我们的支持台可以在正常的“欢迎来到[公司]支持”消息之前添加一条“我们目前遇到X的问题”的短消息。

如果TwiML可以使用HTTP POST/PUT或Twilio的API进行编辑,这应该是一件小事,但到目前为止,我还不知道如何进行编辑。

我在API文档中找不到这方面的任何引用,所以我决定使用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)
})

回答数据显示了TwiML的当前XML内容。

我在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流中使用它。我们会一直保持沉默,直到我们需要添加一些东西,一旦问题过去,我们就会恢复沉默。

任何帮助都将不胜感激!

共有1个答案

羊舌涵涤
2023-03-14

您目前无法以编程方式更改TwiML Bins、Studio Flow或Twilio Functions的内容。我相信您正在寻找的关键功能是一种根据某些条件动态更新Studio流中消息传递(说/播放小部件)的方法。

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

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

 类似资料:
  • 我在Protege4中创建了一个本体。我需要使用owl API4向我的本体的owl个体添加一个数据属性。我对java/owl api是个新手,所以我对它的理解是这样的。我使用了以下代码:- 但是这些代码并没有“更新”已经存在的owl个体“测试”,而是创建一个新的。

  • 问题内容: 如何使用simpleXML在xml文件中编辑值? 我知道如何创建文件,但不知道如何编辑现有文件中的值? 问题答案: 确保可以使用SimpleXML进行编辑: 看一下例子。

  • 实际上,我面临的问题是我使用DocuSign API设置了整个文档视图,并且我不希望发件人对文档进行任何类型的编辑。我希望发件人应该能够以不可编辑的形式查看文档并将其发送给客户进行签名。 关于如何实现这一点有什么建议吗?

  • 我有一个页面,我希望用户能够编辑他们的房间信息。例如房间的名称。我目前的代码是,它显示中的,如果他们单击按钮,则属性将更改为true(这将显示而不是)。 问题是:如果用户按“取消”,我不希望它更新属性。我试图通过重新运行一个计算属性来实现这一点,该属性从存储中获取。但是,我不允许在中调用计算属性。 我使用属性的原因 如何从输入中获取值,或者如何使用此结构创建取消按钮?

  • 在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍。 所以,实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个文件,这样,程序就可以反复运行了。 现在,我们就把上次的'hello, world'程序用文本编辑器写出来,保存下来。 那么问题来了:文本编辑器到底哪家强? 推荐两款文本编辑器: 一个是Sublime Text,

  • 在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍。 所以,实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个文件,这样,程序就可以反复运行了。 现在,我们就把上次的'hello, world'程序用文本编辑器写出来,保存下来。 那么问题来了:文本编辑器到底哪家强? Visual Studio Code! 我们推荐微软出