Twilio(TwiML):拨打另一个电话部分II
问题描述:
我试图使用Twilio
会议连接两个呼叫。Twilio(TwiML):拨打另一个电话部分II
我下面,我从得到的指示:link
这是我想要的东西来实现:
的第一人接听电话,他可以拨打#1后,系统会创建与第二人开会。
我的问题:
第一通话结束,而不是开始的会议。
这是我到目前为止有:
// the first user is online and click #1.
// now he redirects to StartConferenceCall()
public ActionResult StartConferenceCall(int userNumber)
{
var digits = Request["Digits"]; // twilio send the dial number as"Ditits"
if (digits == "1")
{
var twilService = new TwiMlService();
var client = new TwilioRestClient(accountSid, authToken);
var options = new CallOptions
{
To = userNumber,
From = twilioNumber,
};
client.InitiateOutboundCall(options);
var twiml = new TwilioResponse();
twiml.DialConference("Room1",
new { muted = true, beep = false, waitMethod = "GET" },
new { timeLimit = 30 }
);
}
if (digits == "hangup") // when the call finished twilio send "hangup" as "Digits"
{
// do something when the conference ended.
}
return View();
}
我创建了一个空的观点,因为没有它,我从twilio得到一个错误:这里
An upstream server returned an invalid response.
答
Twilio布道者。
夫妇的建议:
-
首先,它并不像你实际上是恢复你的操作方法创建TwiML。当您在浏览器中加载
StartConferenceCall
路由时,应该会看到TwiML (which is really just XML)返回。其次,由于看起来你使用的是ASP.NET MVC,所以我建议安装Twilio.Mvc nuget包,然后更改你的控制器以从TwilioController
派生。这样做可以让你使用TwiML方法是这样的:public ActionMethod StartConferenceCall(string Digits) { var response = new TwilioResponse(); response.DialConference(...); return TwiML(response); }
的TwiML
方法TwilioResponse对象转换为XML 和设置为XML HTTP响应的Content-Type头。此TwiML将使您的第一个来电者进入电话会议。
这也可以让你删除空的cshtml文件视图。
现在要让第二个调用者进入同一个会议,您需要更改CallOptions对象以指定Url参数。
var options = new CallOptions
{
To = userNumber,
From = twilioNumber,
Url = "http://example.com/connectSecondCaller"
};
当第二个呼叫应答,Twilio会让一个HTTP请求到这个网址,让你返回一些TwiML那滴第二呼叫者到同一个会议室。
所以你可能会问,你怎么知道哪个会议室放第二个呼叫者?当第二个主叫方的答案viathe URL的一种方法是通过你的第一个来电的TwiML执行创建会议室的名称:
var options = new CallOptions
{
To = userNumber,
From = twilioNumber,
Url = "http://example.com/connectSecondCaller?name=myconferenceroom"
};
希望有所帮助。
我不认为我需要返回twiML XML,因为在创建会议后我不需要告诉Twilio做些什么 - 我只是想创建它。为什么我需要在这种情况下返回TwiML?谢谢。 – Eyal
所有调用DialConference方法的做法是在您的应用程序中生成一些XML。它实际上并没有传达给Twilio。您仍然必须通过返回TwiML作为操作方法的响应,将这些指令返回给Twilio。这有帮助吗? –
那么在TwiML中我需要做什么来连接呼叫?你有代码示例吗?谢谢。 – Eyal