public async Task <ActionResult> ConfrenceRecordingCallback(string callRequest) { var model = new ResponseModel(); if (string.IsNullOrEmpty(HttpContext.Request.Form["RecordingUrl"])) { string recordingUrl = HttpContext.Request.Form["RecordingUrl"].ToString(); PrankCallRequestModel request = JsonConvert.DeserializeObject <PrankCallRequestModel>(callRequest); var callTrackingInfo = new PrankCallTrackingModel { DeviceId = request.DeviceId, PrankId = request.PrankId, PrankCallPoints = request.CostPoint, PrankCallFromId = request.PrankCallFromId, ToPhoneNumberPersonName = request.ToPhoneNumberPersonName, ToPhoneNumber = request.ToPhoneNumber, IsSavePhoneCall = request.IsRecordCall, PlivoRecordCallUrl = recordingUrl + ".mp3", RecordedAudioFile = recordingUrl + ".mp3", AddedDate = DateTime.Now.ToString("yyyy-MM-dd HH:MM:ss"), IsDeleted = false }; var result = await _dataContext.AddPrankCallTracking(callTrackingInfo); if (!result.Status) { model.StatusCode = 404; model.Message = result.Message; } else { model.StatusCode = 200; model.Message = recordingUrl; } } else { model.StatusCode = 404; model.Message = "Call not Answered"; } return(Json(model)); }
// public async Task<ActionResult<ResponseModel>> CallByRequest(PrankCallRequestModel request) public async Task <ActionResult <ResponseModel> > CallByRequest() { int prankId = 4; int deviceId = 12; int prankCallFromId = 1; string toPhoneNumberCountryCodePrefix = "91"; string ToPhoneNo = "7665704988"; var request = new PrankCallRequestModel() { PrankId = prankId, DeviceId = deviceId, PrankCallFromId = prankCallFromId, ToPhoneNumberCountryCodePrefix = toPhoneNumberCountryCodePrefix, ToPhoneNumber = ToPhoneNo, CostPoint = 10, ToPhoneNumberPersonName = "sds" }; var response = new VoiceResponse(); var fromNumber = await _dataContext.PrankCallFromPhoneNumber(request.ToPhoneNumberCountryCodePrefix).ToListAsync(); var objPrankCallFromPhone = new PrankCallFromPhoneNumberModel(); if (fromNumber != null && fromNumber.Any()) { objPrankCallFromPhone = fromNumber.FirstOrDefault(); if (!string.IsNullOrEmpty(objPrankCallFromPhone.CountryCode)) { TwilioClient.Init(_twilioSettings.TwilioAccountSid, _twilioSettings.TwilioAuthToken); StringBuilder str_build = new StringBuilder(); Random random = new Random(); int length = 7; char letter; for (int i = 0; i < length; i++) { double flt = random.NextDouble(); int shift = Convert.ToInt32(Math.Floor(25 * flt)); letter = Convert.ToChar(shift + 65); str_build.Append(letter); } string sessionId = str_build.ToString(); request.PrankCallFromId = objPrankCallFromPhone.PrankCallFromId; // http://960d5976e357.ngrok.io/JoinConfrence/ string joinConfrenceUrl = _twilioSettings.TwilioApiUrl + "JoinConfrence?call_session_id=" + sessionId; string completeCallUrl = _twilioSettings.TwilioApiUrl + "CompleteCall"; var call = CallResource.Create( to: new Twilio.Types.PhoneNumber(objPrankCallFromPhone.CountryCode + request.ToPhoneNumber), from: new Twilio.Types.PhoneNumber(objPrankCallFromPhone.CountryCode + objPrankCallFromPhone.PhoneNumber), //"+918764245892" url: new Uri(joinConfrenceUrl), statusCallbackEvent: new[] { Number.EventEnum.Completed.ToString() }.ToList(), statusCallback: new Uri(completeCallUrl), statusCallbackMethod: Twilio.Http.HttpMethod.Post ); sessionID_to_callsid = call.Sid; // dials the caller (from number) into the conference string confrenceCalleeUrl = _twilioSettings.TwilioApiUrl + "ConfrenceCallee?confrenceFriendlyName=" + sessionId; var CallRequest = JsonConvert.SerializeObject(request); //string confrenceRecordingCallbackUrl = _twilioSettings.TwilioApiUrl + "ConfrenceRecordingCallback?callRequest=" + CallRequest; string confrenceRecordingCallbackUrl = _twilioSettings.TwilioApiUrl + "ConfrenceRecordingCallback?callRequest=d"; var dial = new Dial(); dial.Conference(name: sessionId, waitUrl: new Uri("https://twimlets.com/holdmusic?Bucket=com.twilio.music.electronica"), statusCallbackEvent: new[] { Conference.EventEnum.Join }.ToList(), beep: Conference.BeepEnum.Onenter, statusCallback: new Uri(confrenceCalleeUrl), startConferenceOnEnter: true, endConferenceOnExit: true, record: Conference.RecordEnum.RecordFromStart, trim: Conference.TrimEnum.TrimSilence, muted: true, recordingStatusCallback: new Uri(confrenceRecordingCallbackUrl)); response.Append(dial); } } return(Content(response.ToString())); }