Esempio n. 1
0
        public void Execute(IJobExecutionContext context)
        {
            TwilioConferenceServices conferenceServices = new TwilioConferenceServices();

            JobDataMap dataMap = context.JobDetail.JobDataMap;

            string twilloAccountSid   = dataMap.GetString("twilloAccountSid");
            string twilloAccountToken = dataMap.GetString("twilloAccountToken");
            string conferenceSid      = dataMap.GetString("conferenceSid");
            int    id             = dataMap.GetInt("id");
            string conferenceName = dataMap.GetString("conferenceName");

            //Make rest request to /HangUpAt10Minutes endpoint
            TwilioClient.Init(twilloAccountSid, twilloAccountToken);

            conferenceServices.LogMessage(string.Format("Step 10 Hangup timer begin: {0}", conferenceSid), 10, id);

            ConferenceResource.Update(conferenceSid,
                                      status: ConferenceResource.UpdateStatusEnum.Completed);
            conferenceServices.LogMessage(string.Format("Step 10 Hangup timer end: {0}", conferenceSid), 10, id);

            Thread.Sleep(2000);

            Environment.Exit(0);
        }
Esempio n. 2
0
        private static void DefineWarningJob(double warningInterval, TwilioConferenceServices conferenceServices, int id)
        {
            //Warning offset depending on ticks elapsed since call
            DateTimeOffset warningOffset = DateTime.Now.AddSeconds(warningInterval);

            conferenceServices.LogMessage(string.Format("Step 7 Warning timer will execute at :{0}", warningOffset), 7, id);

            // Create Warning Job
            IJobDetail warningNotificationJobDetail =
                JobBuilder.Create <CallEndWarningJob>()
                .WithIdentity("CallEndWarningJob", "TwilioGroup")
                .UsingJobData("conferenceSid", conferenceSid)
                .UsingJobData("twilloAccountSid", TWILIO_ACCOUNT_SID)
                .UsingJobData("twilloAccountToken", TWILIO_ACCOUNT_TOKEN)
                .UsingJobData("id", id)
                .UsingJobData("conferenceName", conferenceName)
                .UsingJobData("serviceUserTwilioPhoneNumber", SERVICE_USER_TWILIO_PHONE_NUMBER.Substring(2))
                .UsingJobData("twilioBotNumber", TWILIO_BOT_NUMBER)
                .Build();

            ITrigger warningTrigger = TriggerBuilder.Create()
                                      .StartAt(warningOffset)
                                      .Build();

            sChedule.ScheduleJob(warningNotificationJobDetail, warningTrigger);
        }
Esempio n. 3
0
        private static void DefineHangupJob(double hangupInterval, TwilioConferenceServices conferenceServices, int id)
        {
            //Hangup offset depending on ticks elapsed since call
            DateTimeOffset hangUpOffset = DateTime.Now.AddSeconds(secondParticipantConnected ?  hangupInterval :0);


            conferenceServices.LogMessage(string.Format("Step 7 Hangup timer will execute at :{0}", hangUpOffset), 7, id);

            // Create Hangup Job
            IJobDetail hangUpJobDetail = JobBuilder.Create <HangUpJob>()
                                         .WithIdentity("HangUpJob", "TwilioGroup")
                                         .UsingJobData("twilloAccountSid", TWILIO_ACCOUNT_SID)
                                         .UsingJobData("twilloAccountToken", TWILIO_ACCOUNT_TOKEN)
                                         .UsingJobData("conferenceSid", conferenceSid)
                                         .UsingJobData("id", id)
                                         .UsingJobData("conferenceName", conferenceName)
                                         .Build();

            ITrigger hangUpTrigger = TriggerBuilder.Create()
                                     .StartAt(hangUpOffset)
                                     .Build();

            sChedule.ScheduleJob(hangUpJobDetail, hangUpTrigger);
        }
Esempio n. 4
0
        public void Execute(IJobExecutionContext context)
        {
            TwilioConferenceServices conferenceServices = new TwilioConferenceServices();
            JobDataMap dataMap = context.JobDetail.JobDataMap;

            string twilloAccountSid   = dataMap.GetString("twilloAccountSid");
            string twilloAccountToken = dataMap.GetString("twilloAccountToken");
            string conferenceSid      = dataMap.GetString("conferenceSid");
            string SERVICE_USER_TWILIO_PHONE_NUMBER = dataMap.GetString("serviceUserTwilioPhoneNumber");
            string TWILIO_BOT_NUMBER = dataMap.GetString("twilioBotNumber");

            int    id             = dataMap.GetInt("id");
            string conferenceName = dataMap.GetString("conferenceName");

            ////string dataMapValues =
            ////    string.Format("1. {0}|2. {1}|3. {2}|4. {3}|5. {4}|6. {5}||7. {6}|"
            ////   , twilloAccountSid
            ////   , twilloAccountToken
            ////   , callSid
            ////   , id
            ////   , conferenceName
            ////   , SERVICE_USER_TWILIO_PHONE_NUMBER
            ////   , TWILIO_BOT_NUMBER);
            ////conferenceServices.LogMessage(dataMapValues, id);
            conferenceServices.LogMessage(string.Format("Step 8 Message Job  begin: {0}", conferenceSid), 8, id);
            string connectUrl = string.Format("https://callingserviceproduction.azurewebsites.net//twilioconference/ConnectTwilioBotMessage?id={0}", id);

            try
            {
                string postUrl =
                    string.Format("https://api.twilio.com/2010-04-01/Accounts/{0}/Calls.json", twilloAccountSid);
                WebRequest myReq       = WebRequest.Create(postUrl);
                string     credentials = string.Format("{0}:{1}", twilloAccountSid, twilloAccountToken);
                myReq.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(credentials));
                string formencodeddata = string.Format("To=+1{0}&From=+1{1}&Url={2}"
                                                       , SERVICE_USER_TWILIO_PHONE_NUMBER
                                                       , TWILIO_BOT_NUMBER
                                                       , connectUrl);
                byte[] formbytes = System.Text.ASCIIEncoding.Default.GetBytes(formencodeddata);
                myReq.Method      = "POST";
                myReq.ContentType = "application/x-www-form-urlencoded";
                //conferenceServices.LogMessage("credentials " + credentials.ToString(), 8,id);
                //conferenceServices.LogMessage("get request stream " + myReq.GetRequestStream(), 8, id);
                //conferenceServices.LogMessage("formencodeddata " + formencodeddata.ToString(), 8, id);
                using (Stream postStream = myReq.GetRequestStream())
                {
                    postStream.Write(formbytes, 0, formbytes.Length);
                }

                conferenceServices.LogMessage(string.Format("Step 8 Message Job  End: {0}", conferenceSid), 8, id);
                WebResponse  webResponse   = myReq.GetResponse();
                Stream       receiveStream = webResponse.GetResponseStream();
                StreamReader reader        = new StreamReader(receiveStream, Encoding.UTF8);
                //string content = reader.ReadToEnd();
                //conferenceServices.LogMessage(content, id);
                reader.Close();
                reader.Dispose();
                receiveStream.Close();
                receiveStream.Dispose();
                webResponse.Close();
                webResponse.Dispose();

                //CallResource.CreateAsync(
                //    to: new PhoneNumber(Constants.TWILIO_CONFERENCE_NUMBER)
                //    , from: new PhoneNumber("4159656328")
                //    , url: new Uri(connectUrl)
                //    , method: HttpMethod.Post).Wait();
            }
            catch (Exception ex)
            {
                conferenceServices.ErrorMessage(string.Format("|Error Message - {0}| 1.Source {1} | 2.Trace {2} |3.Inner Exception {3} |",
                                                              ex.Message,
                                                              ex.Source,
                                                              ex.StackTrace,
                                                              ex.InnerException));
            }
        }
Esempio n. 5
0
 public SMSController()
 {
     conferenceServices = new TwilioConferenceServices();
 }
 public TwilioSMSController()
 {
     conferenceServices = new TwilioConferenceServices();
     conferenceServices.LogMessage("In constructor");
 }
Esempio n. 7
0
        static void Main(string[] args)
        {
            TwilioConferenceServices conferenceServices = new TwilioConferenceServices();

            try
            {
                secondParticipantConnected = bool.Parse(args[0]);
                id = int.Parse(args[1]);
                SERVICE_USER_TWILIO_PHONE_NUMBER = args[2];
                messageInterval = double.Parse(args[3]);
                warningInterval = double.Parse(args[4]);
                hangupInterval  = double.Parse(args[5]);

                conferenceServices.LogMessage("Step 7 Entered Scheduled Timer at " + DateTime.Now.ToString(), 7, id);
                TWILIO_ACCOUNT_SID   = ConfigurationManager.AppSettings["TWILIO_ACCOUNT_SID"];
                TWILIO_ACCOUNT_TOKEN = ConfigurationManager.AppSettings["TWILIO_ACCOUNT_TOKEN"];

                TWILIO_BOT_NUMBER = ConfigurationManager.AppSettings["TWILIO_BOT_NUMBER"];

                conferenceSid = conferenceServices.GetConferenceRecord(id).ConferenceSID;

                // construct a scheduler factory
                sChedFactory = new StdSchedulerFactory();

                // get a scheduler
                sChedule = sChedFactory.GetScheduler();
                sChedule.Start();

                conferenceName = new TwilioConferenceServices().GetConferenceRecord(id).ConferenceName;

                switch (secondParticipantConnected)
                {
                case true:
                    DefineMessageJob(messageInterval, conferenceServices, id);
                    DefineWarningJob(warningInterval, conferenceServices, id);
                    DefineHangupJob(hangupInterval, conferenceServices, id);
                    break;


                case false:
                    DefineHangupJob(hangupInterval, conferenceServices, id);
                    break;


                default:
                    break;
                }


                conferenceServices.LogMessage(string.Format("Step 7 Successfuly completed Scheduled Timer - " +
                                                            "|Twilio Phone Number-{0}| " +
                                                            "|Bot Number-{1}| " +
                                                            "|Conference Name-{2}| " +
                                                            "|Conference SID-{3} |" +
                                                            "|ID-{4} |" +
                                                            "|Number of seconds to message-{5}|" +
                                                            "|Number of seconds to warning-{6}|" +
                                                            "|Number of seconds to hangup-{7}|",
                                                            SERVICE_USER_TWILIO_PHONE_NUMBER,
                                                            TWILIO_BOT_NUMBER,
                                                            conferenceName,
                                                            conferenceSid,
                                                            id,
                                                            messageInterval,
                                                            warningInterval,
                                                            hangupInterval)
                                              , 7, id);
            }
            catch (ArgumentException ex)
            {
                conferenceServices.ErrorMessage(string.Format(
                                                    "|Error Message - {0}" +
                                                    "| 1.Source {1} " +
                                                    "| 2.Trace {2} " +
                                                    "| 3.Inner Exception {3} |",
                                                    ex.Message,
                                                    ex.Source,
                                                    ex.StackTrace,
                                                    ex.InnerException));
                throw;
            }
        }