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); }
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); }
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); }
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)); } }
public SMSController() { conferenceServices = new TwilioConferenceServices(); }
public TwilioSMSController() { conferenceServices = new TwilioConferenceServices(); conferenceServices.LogMessage("In constructor"); }
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; } }