/// <summary> /// THis Method is used to update the call status from remote server /// </summary> /// <param name="sConnString"></param> /// <param name="methodType"></param> /// <param name="callBackIpAddr"></param> /// <param name="callBackReqObj"></param> /// <param name="pusherAppId"></param> /// <param name="pusherAppKey"></param> /// <param name="pusherAppsecret"></param> /// <param name="HangupCauses"></param> /// <param name="respContext"></param> /// <param name="callBackUrl"></param> /// <returns></returns> public string UpdateCallBacks(string sConnString, string methodType, string callBackIpAddr, JObject callBackReqObj, string pusherAppId, string pusherAppKey, string pusherAppsecret, string HangupCauses, HttpContext respContext, string callBackUrl) { //Parsing The Data ParseResponse(methodType, callBackReqObj, respContext); string pusherCallStatus = callBackPropObj.CallStatus; string eventName = "call_status"; string[] hangupCasuesForRetry = null; hangupCasuesForRetry = HangupCauses.Split(",".ToCharArray()); try { //Updating GroupCall Status Method calling globalDs = UpdateCallBacksCallDb(sConnString, callBackPropObj, callBackIpAddr); Pusher pusherObj = new Pusher(pusherAppId, pusherAppKey, pusherAppsecret); JObject retryResponse = new JObject(); if (hangupCasuesForRetry.Contains(callBackPropObj.EndReason)) { BusinessLogicLayer.V_1_5.GroupCall groupcallObj = new BusinessLogicLayer.V_1_5.GroupCall(); retryResponse = groupcallObj.GrpCallRetryBLL(sConnString, callBackPropObj.CallUUID, callBackPropObj.RequestUUID, callBackUrl, 0); callBackResponse.Append("Retry Response : " + retryResponse.ToString()); if (Convert.ToBoolean(retryResponse.SelectToken("Success").ToString()) == true) { pusherCallStatus = "redial"; } } if (globalDs.Tables.Count > 0 && globalDs.Tables[0].Rows.Count > 0) { var _with1 = globalDs.Tables[0]; if (Convert.ToInt32(globalDs.Tables[0].Rows[0]["IsInterConnect"]) == 0) { ITriggerResult PusherResponse = null; PusherResponse = pusherObj.Trigger(globalDs.Tables[0].Rows[0]["ConferenceName"].ToString(), eventName, new { direction = "outbound", plivo_event = callBackPropObj.Event, plivo_conferene_action = callBackPropObj.GrpCallAction, to_num = globalDs.Tables[0].Rows[0]["MobileNumber"], conf_room = grpCallName, call_status = pusherCallStatus, mute = globalDs.Tables[0].Rows[0]["Mute"], deaf = globalDs.Tables[0].Rows[0]["Deaf"], member = globalDs.Tables[0].Rows[0]["Member"], conf_type = globalDs.Tables[0].Rows[0]["ConferenceType"], conf_digits = callBackPropObj.Digits, conf_id = globalDs.Tables[0].Rows[0]["ConferenceId"], record_status = globalDs.Tables[0].Rows[0]["RecordStatus"], record_count = globalDs.Tables[0].Rows[0]["RecordCount"], dig_prs_count = globalDs.Tables[0].Rows[0]["DigitPressCount"], inpro_count = globalDs.Tables[0].Rows[0]["InprogressCount"], unmute_count = globalDs.Tables[0].Rows[0]["UnmuteCount"], mute_count = globalDs.Tables[0].Rows[0]["MuteCount"], end_reason = globalDs.Tables[0].Rows[0]["end_reason"], isinprogress = isInProgress }); } callBackResponse.Append("CurrentMemberDetails ==> "); foreach (DataRow _Row in globalDs.Tables[0].Rows) { foreach (DataColumn _Column in _Row.Table.Columns) { if (_Row[_Column.ColumnName] == DBNull.Value) { callBackResponse.Append(_Column.ColumnName + " : NULL"); } else { callBackResponse.Append(_Column.ColumnName + " : " + _Row[_Column.ColumnName]); } callBackResponse.Append(" | "); } callBackResponse.Append(" @@@ "); } //If isRecording = 0 AndAlso globalglobalDs.Tables(0).Rows.Item(0)("InprogressCount") > 1 Then // logclass.LogRequest("Enters Into Conference Recording block --" & globalDs.Tables(0).Rows.Item(0)("ConferenceId").Tostring()) // ConferenceRecord(globalDs.Tables(0).Rows.Item(0)("ConferenceId"), 1) //End If } else { callBackResponse.Append("No Member Data Returned From Database"); } if (globalDs.Tables.Count > 1 && globalDs.Tables[1].Rows.Count > 0) { callBackResponse.Append("AloneMemberDetails ==> "); foreach (DataRow _Row in globalDs.Tables[1].Rows) { foreach (DataColumn _Column in _Row.Table.Columns) { if (_Row[_Column.ColumnName] == DBNull.Value) { callBackResponse.Append(_Column.ColumnName + " : NULL"); } else { callBackResponse.Append(_Column.ColumnName + " : " + _Row[_Column.ColumnName]); } callBackResponse.Append(" | "); } callBackResponse.Append(" @@@ "); } JObject aloneHangupResponse = new JObject(); JObject alonePlayResponse = new JObject(); var _with2 = globalDs.Tables[1]; V_1_5.GroupCall GrpcallObj = new V_1_5.GroupCall(); alonePlayResponse = GrpcallObj.PlayToAConferenceCall(globalDs.Tables[1].Rows[0]["ConferenceRoom"].ToString(), Convert.ToInt32(globalDs.Tables[1].Rows[0]["MemberId"]), globalDs.Tables[1].Rows[0]["HttpUrl"].ToString(), "http://new.grpTalk.com/DefaultClips/thank_you.mp3"); System.Threading.Thread.Sleep(6000); //ConferenceObject.ConferenceRecording(globalDs.Tables(0).Rows.Item(0)("ConferenceId"), 2) grpcall callObj = new grpcall(); callObj.ConferenceId = Convert.ToInt32(globalDs.Tables[1].Rows[0]["ConferenceId"]); callObj.ConferenceRoom = globalDs.Tables[1].Rows[0]["ConferenceRoom"].ToString(); callObj.CallUUID = globalDs.Tables[1].Rows[0]["CallUUID"].ToString(); callObj.ConferenceAction = "HANGUP_ALL"; callObj.IsAll = true; callObj.HttpConferenceApiUrl = globalDs.Tables[1].Rows[0]["HttpUrl"].ToString(); aloneHangupResponse = GrpcallObj.GrpCallHanUp(sConnString, callObj); //Send Notification to App PusherNotifier mobileNotifierObj = new PusherNotifier(); mobileNotifierObj.IsStarted = 0; mobileNotifierObj.GrpCallID = Convert.ToInt32(globalDs.Tables[1].Rows[0]["ConferenceId"]); GrpcallObj.MobileNotifier(sConnString, mobileNotifierObj); callBackResponse.Append("Alone Play Response Is : " + alonePlayResponse.ToString()); callBackResponse.Append("Alone Hangup Response Is : " + aloneHangupResponse.ToString()); } else { callBackResponse.Append("No Alone Member"); } } catch (Exception ex) { Logger.ExceptionLog("exception at callBackresponseBLL : " + ex.ToString()); callBackResponse.Append("Exception : " + ex.ToString()).ToString(); } return(callBackResponse.ToString()); }
public string UpdateCallBacks(string sConnString, string methodType, string callBackIpAddr, JObject callBackReqObj, string pusherAppId, string pusherAppKey, string pusherAppsecret, string HangupCauses, HttpContext respContext, string callBackUrl) { //Parsing The Data ParseResponse(methodType, callBackReqObj, respContext); string pusherCallStatus = callBackPropObj.CallStatus; string eventName = "call_status"; string[] hangupCasuesForRetry = null; int hangUpCount = 0; int callDrop = 0; hangupCasuesForRetry = HangupCauses.Split(",".ToCharArray()); try { //Updating GroupCall Status Method calling globalDs = UpdateCallBacksCallDb(sConnString, callBackPropObj, callBackIpAddr); Pusher pusherObj = new Pusher(pusherAppId, pusherAppKey, pusherAppsecret); JObject retryResponse = new JObject(); if (hangupCasuesForRetry.Contains(callBackPropObj.EndReason)) { if (callBackPropObj.StartTime > 0 && (callBackPropObj.EndTime - callBackPropObj.StartTime) > 0) { callDrop = 1; } BusinessLogicLayer.V_1_5.GroupCall groupcallObj = new BusinessLogicLayer.V_1_5.GroupCall(); retryResponse = groupcallObj.GrpCallRetryBLL(sConnString, callBackPropObj.CallUUID, callBackPropObj.RequestUUID, callBackUrl, callDrop); callBackResponse.Append("Retry Response : " + retryResponse.ToString()); if (string.IsNullOrEmpty(retryResponse.SelectToken("Success").ToString()) == false) { if (Convert.ToBoolean(retryResponse.SelectToken("Success").ToString()) == true) { pusherCallStatus = "redial"; } } } if (globalDs.Tables.Count > 0 && globalDs.Tables[0].Rows.Count > 0) { var _with1 = globalDs.Tables[0]; Logger.TraceLog("Pusher REsponse for outbound Main"); if (Convert.ToInt32(globalDs.Tables[0].Rows[0]["IsInterConnect"]) == 0) { if (pusherCallStatus == "redial") { hangUpCount = Convert.ToInt32(globalDs.Tables[0].Rows[0]["HangUpCount"]) - 1; } else { hangUpCount = Convert.ToInt32(globalDs.Tables[0].Rows[0]["HangUpCount"]); } Logger.TraceLog("Pusher REsponse for outbound"); ITriggerResult PusherResponse = null; PusherResponse = pusherObj.Trigger(globalDs.Tables[0].Rows[0]["ConferenceName"].ToString(), eventName, new { direction = "outbound", plivo_event = callBackPropObj.Event, plivo_conferene_action = callBackPropObj.GrpCallAction, to_num = globalDs.Tables[0].Rows[0]["MobileNumber"], conf_room = grpCallName, call_status = pusherCallStatus, mute = globalDs.Tables[0].Rows[0]["Mute"], deaf = globalDs.Tables[0].Rows[0]["Deaf"], isprivate = globalDs.Tables[0].Rows[0]["IsPrivate"], member = globalDs.Tables[0].Rows[0]["Member"], MemberJoinTime = Convert.ToString(globalDs.Tables[0].Rows[0]["MemberJoinTime"]), conf_type = globalDs.Tables[0].Rows[0]["ConferenceType"], conf_digits = callBackPropObj.Digits, IsMember = globalDs.Tables[0].Rows[0]["IsMember"], conf_id = globalDs.Tables[0].Rows[0]["ConferenceId"], record_status = globalDs.Tables[0].Rows[0]["RecordStatus"], record_count = globalDs.Tables[0].Rows[0]["RecordCount"], dig_prs_count = globalDs.Tables[0].Rows[0]["DigitPressCount"], inpro_count = globalDs.Tables[0].Rows[0]["InprogressCount"], unmute_count = globalDs.Tables[0].Rows[0]["UnmuteCount"], mute_count = globalDs.Tables[0].Rows[0]["MuteCount"], end_reason = globalDs.Tables[0].Rows[0]["end_reason"], isinprogress = isInProgress, AllMembersCount = globalDs.Tables[0].Rows[0]["AllMembersCount"], OnCallCount = globalDs.Tables[0].Rows[0]["OnCallCount"], HangUpCount = hangUpCount, MuteCount = globalDs.Tables[0].Rows[0]["MuteMemCount"], HandRaiseCount = globalDs.Tables[0].Rows[0]["HandRaiseCount"], MembersCount = globalDs.Tables[0].Rows[0]["AllMembersCount"], PrivateCount = globalDs.Tables[0].Rows[0]["PrivateCount"] }); } callBackResponse.Append("CurrentMemberDetails ==> "); foreach (DataRow _Row in globalDs.Tables[0].Rows) { foreach (DataColumn _Column in _Row.Table.Columns) { if (_Row[_Column.ColumnName] == DBNull.Value) { callBackResponse.Append(_Column.ColumnName + " : NULL"); } else { callBackResponse.Append(_Column.ColumnName + " : " + _Row[_Column.ColumnName]); } callBackResponse.Append(" | "); } callBackResponse.Append(" @@@ "); } } else { callBackResponse.Append("No Member Data Returned From Database"); } if (globalDs.Tables.Count > 1 && globalDs.Tables[1].Rows.Count > 0) { if (Convert.ToInt32(globalDs.Tables[0].Rows[0]["PrivateCount"]) == 0) { callBackResponse.Append("AloneMemberDetails ==> "); foreach (DataRow _Row in globalDs.Tables[1].Rows) { foreach (DataColumn _Column in _Row.Table.Columns) { if (_Row[_Column.ColumnName] == DBNull.Value) { callBackResponse.Append(_Column.ColumnName + " : NULL"); } else { callBackResponse.Append(_Column.ColumnName + " : " + _Row[_Column.ColumnName]); } callBackResponse.Append(" | "); } callBackResponse.Append(" @@@ "); } JObject aloneHangupResponse = new JObject(); JObject alonePlayResponse = new JObject(); var _with2 = globalDs.Tables[1]; BusinessLogicLayer.V_1_4.GroupCall_V140 GrpcallObj = new BusinessLogicLayer.V_1_4.GroupCall_V140(); alonePlayResponse = GrpcallObj.PlayToAConferenceCall(globalDs.Tables[1].Rows[0]["ConferenceRoom"].ToString(), Convert.ToString(globalDs.Tables[1].Rows[0]["MemberId"]), globalDs.Tables[1].Rows[0]["HttpUrl"].ToString(), "https://new.grpTalk.com/DefaultClips/thank_you.mp3"); System.Threading.Thread.Sleep(6000); //ConferenceObject.ConferenceRecording(globalDs.Tables(0).Rows.Item(0)("ConferenceId"), 2) grpcall callObj = new grpcall(); callObj.ConferenceId = Convert.ToInt32(globalDs.Tables[1].Rows[0]["ConferenceId"]); callObj.ConferenceRoom = globalDs.Tables[1].Rows[0]["ConferenceRoom"].ToString(); callObj.CallUUID = globalDs.Tables[1].Rows[0]["CallUUID"].ToString(); callObj.ConferenceAction = "HANGUP_ALL"; callObj.IsAll = true; callObj.HttpConferenceApiUrl = globalDs.Tables[1].Rows[0]["HttpUrl"].ToString(); aloneHangupResponse = GrpcallObj.GrpCallHanUp(sConnString, callObj); //Send Notification to App PusherNotifier mobileNotifierObj = new PusherNotifier(); mobileNotifierObj.IsStarted = 0; mobileNotifierObj.GrpCallID = Convert.ToInt32(globalDs.Tables[1].Rows[0]["ConferenceId"]); GrpcallObj.MobileNotifier(sConnString, mobileNotifierObj); callBackResponse.Append("Alone Play Response Is : " + alonePlayResponse.ToString()); callBackResponse.Append("Alone Hangup Response Is : " + aloneHangupResponse.ToString()); } } else { callBackResponse.Append("No Alone Member"); } if (globalDs.Tables.Count > 2) { JObject privateResponse = new JObject(); if (globalDs.Tables[2].Rows.Count > 0) { Logger.TraceLog("Private Membs" + globalDs.Tables[2].Rows.Count); V_1_4.GroupCall_V140 grpCallObj = new V_1_4.GroupCall_V140(); for (int row = 0; row < globalDs.Tables[2].Rows.Count; row++) { privateResponse = grpCallObj.PrivatePublicApi(Convert.ToString(globalDs.Tables[2].Rows[row]["Conferenceroom"]), Convert.ToString(globalDs.Tables[2].Rows[row]["member_id"]), false, Convert.ToString(globalDs.Tables[2].Rows[row]["HttpUrl"]), Convert.ToBoolean(globalDs.Tables[2].Rows[row]["Mute"])); } } } } catch (Exception ex) { Logger.ExceptionLog("exception at callBackresponseBLL : " + ex.ToString()); callBackResponse.Append("Exception : " + ex.ToString()); } return(callBackResponse.ToString()); }