将来自twilio客户端的拨出电话置于保留的电话(获取电话端呼叫Sid)
问题描述:
我正试图在系统中实现“保持呼叫”功能。我查看了this question和一些twilio文档,推荐这样做的方法是将呼叫出列,这将自动播放保留音乐,然后在保持完成(取消保留)时从队列中检索。将来自twilio客户端的拨出电话置于保留的电话(获取电话端呼叫Sid)
当我有来自移动电话的来电时,这对我的twilio客户端来说非常好,我可以将电话出列,并且所有工作都正常。
但是,当我从twilio客户端向移动设备发出呼叫时,如果我更新呼叫以发出出队指令,我会听到客户端本身持有音乐,并且手机会断开连接。我想这是因为我已将呼叫的客户端设置为保留。所以问题是如何获得呼叫的移动分支的呼叫sid。
我试着通过ParentCallId查询CallResource,但是在传出调用时不会返回任何东西。有任何想法吗?
调用客户端上发起了:
var params = {
To: num
};
console.log('Calling ' + num + '...');
Twilio.Device.connect(params);
的连接API回调使用一个简单的拨号动词。对连接节省CallId的
客户端代码:
$scope.hold = function() {
$scope.status = 'Hold';
$scope.message = 'Putting on hold...';
if ($scope.outgoing_call_sid) {
return $http.get(serviceBase + 'api/twilio/hold?callid=' + $scope.outgoing_call_sid);
}
};
服务器端保持API调用:
public IHttpActionResult Hold(string callid) {/
//callid = GetLegCallId(callid); //Try to replace with child call
CallResource.Update(new UpdateCallOptions(callid) { Url = ConfigurationManager.AppSettings["ngrokUrl"] + "/api/twilio/enqueue", Method = HttpMethod.Get });
return Ok();
}
代码得到任何暂停按钮点击
Twilio.Device.connect(function (conn) {
if (conn._direction === 'OUTGOING') {
$scope.outgoing_call_sid = conn.parameters.CallSid;
$scope.number = conn.message.To;
} else {
$scope.incoming_call_sid = conn.parameters.CallSid;
$scope.number = conn.parameters.From;
}
$scope.message = 'In call with ' + $scope.number;
$scope.status = 'InCall';
});
客户端代码儿童电话:
public string GetLegCallId(string callId)
{
var calls = CallResource.Read(new ReadCallOptions() { ParentCallSid = callId });
if (calls.GetEnumerator().Current != null)
return calls.GetEnumerator().Current.Sid;
}
答
我的不好。 Twilio不是问题。问题是使用了call.GetEnumerator()。当前!= null。
应该在枚举器上执行MoveNext,然后才会有Current值。通过这样解决。愚蠢的:(
当你说你试图通过parentCallId查询通话资源时,你使用了哪些代码?你可以与我们分享吗? – philnash
增加了原始文章的代码。我正在使用C#.net,但认为应该即使你已经习惯了PHP/node/etc。 – Shailesh
嗯,那看起来很好。你什么时候运行这个代码?在调用开始时是否正确? – philnash