首页 文章

从twilio客户端拨打电话到保持电话(获取电话侧呼叫Sid)

提问于
浏览
0

我正在尝试将'hold call'功能实现到我的系统中 . 我查看了this question和一些twilio文档,推荐的方法是将呼叫出列,这将自动播放保持音乐,然后在保持完成时从队列中检索(取消保持) .

当我有一个来自手机的来电,我的twilio客户端,并且我可以将呼叫出列,这一切都很好 .

然而,当我从twilio客户端到移动设备的拨出呼叫时,如果我更新呼叫以发出出列指令,我会听到客户端本身的保持音乐,并且电话断开连接 . 我想这是因为我已将呼叫的客户端设置为暂停 . 所以问题是如何获得呼叫移动支路的呼叫sid .

我试过通过ParentCallId查询CallResource,但是在传出调用的情况下它不会返回任何内容 . 有任何想法吗?

通过以下方式在客户端上启动呼叫:

var params = {
        To: num
    };

    console.log('Calling ' + num + '...');
    Twilio.Device.connect(params);

connect API回调使用简单的Dial动词 .

用于在connect上保存callid的客户端代码:

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';
            });

客户端代码保持按钮单击:

$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);
    }
};

服务器端Hold 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(); 
}

接听任何儿童电话的代码:

public string GetLegCallId(string callId)
{
    var calls = CallResource.Read(new ReadCallOptions() { ParentCallSid = callId });
    if (calls.GetEnumerator().Current != null)
        return calls.GetEnumerator().Current.Sid;
}

1 回答

  • 0

    我的错 . Twilio不是问题 . 问题是使用calls.GetEnumerator() . Current!= null .

    在Current将有一个值之前,应该在Enumerator上执行MoveNext . 通过这样做解决 . 笨:(

相关问题