Exemplo n.º 1
0
        private void SetHangUpComplete(string CallSid, string call_uuid, string reason, Event ev, string hangup_url)
        {
            long   answer_seconds_since_epoch = long.Parse(ev.GetHeader("Caller-Channel-Answered-Time"));
            long   hangup_seconds_since_epoch = long.Parse(ev.GetHeader("Caller-Channel-Hangup-Time"));
            string called_num = ev.GetHeader("Caller-Destination-Number");
            string caller_num = ev.GetHeader("Caller-Caller-ID-Number");
            string direction  = ev.GetHeader("variable_agbara_call_direction");
            //get call details
            Call call = callSrvc.GetCallDetail(CallSid);

            call.Status      = CallStatus.completed;
            call.CallerId    = caller_num;
            call.CallTo      = called_num;
            call.DateUpdated = DateTime.Now;
            call.StartTime   = EpochTimeConverter.ConvertFromEpochTime(answer_seconds_since_epoch);
            call.EndTime     = EpochTimeConverter.ConvertFromEpochTime(hangup_seconds_since_epoch);
            call.Duration    = EpochTimeConverter.GetEpochTimeDifferent(hangup_seconds_since_epoch, answer_seconds_since_epoch);
            call.Direction   = direction;

            try
            {
                CallRequest.Remove(CallSid);
                CallElapsedTime.Remove(CallSid);
            }
            catch (Exception ex)
            {
            }

            try
            {
                callSrvc.UpdateCallLog(call);
            }
            catch (Exception ex)
            {
            }
        }