如何在呼叫任何人之前创建 Twilio 会议?
Posted
技术标签:
【中文标题】如何在呼叫任何人之前创建 Twilio 会议?【英文标题】:How to Create Twilio Conference Before Calling Anyone? 【发布时间】:2021-04-17 16:09:08 【问题描述】:我正在寻找一种在将任何人添加到会议之前在 Twilio 系统中生成会议资源的方法。
official recommended way 开始会议是通过返回 TwilXML 来响应 Twilio 回调。这可以通过响应某人拨打 Twilio 号码来完成,或者以某种间接的方式,通过making a call and returning TwilXML 来完成,一旦他们接听电话,就会将该人连接到会议。所有修改会议的 API 都使用ConferenceSID
作为句柄来决定要更改的会议。这两种方法的问题在于,在您收到回调之前,它们不会给您ConferenceSID
。
不幸的是回调do not contain any identifying information about who generated them。他们确实有一个ConferenceSID
(标识会议)和一个CallSID
(唯一标识将呼叫者连接到会议的呼叫)。当您收到第一个回调时,似乎无法匹配其中任何一个标识符。如果你启动多个会议,得到两个不同的ConferenceSIDs
和不同的CallSIDs
的回调,不方便分辨哪个会议在生成哪个回调。
这就是为什么创建会议资源然后使用通用的add participant 呼叫最简单的原因。这将简化使用会议的整个后端流程,从 ConferenceSID
开始并从那里开始。
附:为了阻止其他建议 - 有办法解决这个问题。您可以为不同的会议指定不同的回调 URL。您可以为可以在后端匹配的不同参与者指定不同的friendlyName
s。完全可以使用它,但我想要更干净的东西,这需要在任何人被调用之前召开会议。
【问题讨论】:
【参考方案1】:这里是 Twilio 开发者宣传员。
无法从 API 创建conference resource。您只能通过使用<Dial><Conference>
TwiML 将呼叫者定向到那里来做到这一点。
此外,当您说“当您收到第一个回调时,似乎无法匹配其中任何一个标识符”时,我不太明白。你想匹配什么?您可以使用CallSid
查找加入会议的呼叫者的From
号码。您还会在回调中收到 FriendlyName
,这是您在 TwiML <Conference>Friendly Name</Conference>
中设置的名称,您可以选择它来帮助确定哪个会议是哪个会议。
这有帮助吗?
【讨论】:
嗨菲尔,感谢您确认我的印象。当然,一旦您收到回调,您可以使用额外的 API 调用来准确识别谁在调用。如果回调具有其他 twilio 请求所做的基本信息(如呼叫者的电话号码),那将很方便。我在帖子中提到了friendlyName
,事实上,这就是我将使用的。如果您可以向 Twilio 提供反馈,请在使用会议资源拨打电话之前转达对创建会议资源的兴趣。
另一种选择是在初始 webhook 请求中存储呼叫者的号码和呼叫 SID,然后当您收到带有呼叫 SID 的会议回调事件时,您可以在自己的系统中查找它们。
我同意菲尔的第二个选项。我们正在做同样的事情,而且效果很好。以上是关于如何在呼叫任何人之前创建 Twilio 会议?的主要内容,如果未能解决你的问题,请参考以下文章
执行 python 程序以从 twilio 服务器获取呼叫者参加电话会议时出错