我正在尝试使用 Twilio 通过一种对讲机连接工作人员(所有工作人员都获得 JWT 以使用 Javascript SDK 进行浏览器调用),为此,当工作人员按下会议按钮时,我使用 Twiml 动词会议在浏览器中,它发送活动工作人员的列表(除了发起会议的工作人员),我使用 callSid 作为会议的名称以使其唯一,并使用 CallResource 将每个工作人员放入会议中。
但是列表中的工作人员开始听会议室的等待音乐,但是呼叫者一打开就自动结束连接,甚至没有结束会议,我不知道这是怎么回事代码,我正在关注 https://www.twilio.com/docs/voice/twiml/conference
中的会议文档以下是需要创建会议时调用的方法:
public VoiceResponse ConferenceTalk(List<string> recipients, string caller, string callSid)
{
TwilioClient.Init(my_account_sid, my_auth_token);
var confName = $"wt_{callSid}";
foreach (var recipient in recipients)
{
CallResource.Create(
url: new Uri($"{this.publicUrl}/Conference/WtConference/{confName}"),
to: new Twilio.Types.Client($"client:{recipient}"),
from: new Twilio.Types.Client(caller));
}
var response = new VoiceResponse();
var dial = new Dial();
dial.Conference(confName,
startConferenceOnEnter: true,
endConferenceOnExit: true);
response.Append(dial);
return response;
}
这是具有 url 属性的
CallResource
目标的端点:
[HttpPost]
public TwiMLResult WtConference()
{
var confName = Request.Url.Segments[Request.Url.Segments.Length - 1];
var response = new VoiceResponse();
var dial = new Dial();
dial.Conference(confName);
response.Append(dial);
return TwiML(response);
}
我觉得发生这一切所需的时间可能会导致您出现问题。 Twilio Voice SDK 可能不是这方面的最佳产品。我可能需要观看一段展示交互如何工作的视频才能完全致力于此。
与此同时,我可能会尝试通过在 API 调用中发送会议的 TwiML 来加快人们加入会议的速度,而不是等待 Webhook。例如:
public VoiceResponse ConferenceTalk(List<string> recipients, string caller, string callSid)
{
TwilioClient.Init(my_account_sid, my_auth_token);
var confName = $"wt_{callSid}";
var outboundResponse = new VoiceResponse();
var outboundDial = new Dial();
outboundDial.Conference(confName);
outboundResponse.Append(outboudDial);
foreach (var recipient in recipients)
{
CallResource.Create(
twiml: outboundResponse,
to: new Twilio.Types.Client($"client:{recipient}"),
from: new Twilio.Types.Client(caller));
}
var response = new VoiceResponse();
var dial = new Dial();
dial.Conference(confName,
startConferenceOnEnter: true,
endConferenceOnExit: true);
response.Append(dial);
return response;
}
我说 Twilio Voice 可能不是最适合此操作的,因为在 Twilio 后端,这会经历为拨打电话而构建的整个堆栈。出站呼叫的速率为每秒 1 个呼叫,因此这可能会减慢列表中的呼叫速度。
您可以考虑使用 Twilio Video SDK(您可以使用 Twilio Video 产品进行纯音频通话)。为此,您需要能够触发每个工作人员加入一个房间,然后用于分发音频。每秒的通话次数没有限制,工作人员只需要连接到一个房间,您的应用程序就能够控制谁可以在任何时候通话。