Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        //    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()));
        }