public string MakePhoneCall() { TwilioApi twilio = new TwilioApi(DatabasePharmacyService.GetById(1)); twilio.MakePhoneCall(new Notification()); return("Calling"); }
public async Task LookupReturnsNumberTypeIfValidCredentials() { var lookupsMock = new Mock <ITwilioLookupsApi>(MockBehavior.Strict); lookupsMock.Setup(api => api.NumberInfo(It.IsAny <string>(), It.IsAny <string>(), "carrier")) .ReturnsAsync((string phoneNumber, string countryCode, string type) => JObject.Parse($"{{\"url\": \"https://lookups.twilio.com/v1/PhoneNumbers/{phoneNumber}?Type=carrier\",\"carrier\": {{ \"type\": \"mobile\" }},\"phone_number\": \"{phoneNumber}\",\"country_code\": \"{countryCode}\"}}")); var messagingMock = new Mock <ITwilioMessagingApi>(MockBehavior.Strict); var twilioApi = new TwilioApi(lookupsMock.Object, messagingMock.Object, "ACxxxxxxxxxxxxxx", _smsNumber); var connectFunction = new LookupWorkflow(twilioApi); var result = await connectFunction.Process(_connectEvent, _context); Assert.Equal(2, result.Count); var lambdaResult = result["LambdaResult"]; Assert.NotNull(lambdaResult); Assert.True(lambdaResult.Type == JTokenType.Boolean); Assert.True(lambdaResult.Value <bool>()); var numberType = result["NumberType"]; Assert.NotNull(numberType); Assert.True(numberType.Type == JTokenType.String); var typeValue = (string)numberType; Assert.NotNull(typeValue); Assert.Equal("mobile", typeValue); lookupsMock.VerifyAll(); }
public async Task SmsReturnsTrueIfValidCredentialsAndMessageQueued() { var lookupsMock = new Mock <ITwilioLookupsApi>(MockBehavior.Strict); lookupsMock.Setup(api => api.NumberInfo(It.IsAny <string>(), It.IsAny <string>(), "carrier")) .ReturnsAsync((string phoneNumber, string countryCode, string type) => JObject.Parse($"{{\"url\": \"https://lookups.twilio.com/v1/PhoneNumbers/{phoneNumber}?Type=carrier\",\"carrier\": {{ \"type\": \"mobile\" }},\"phone_number\": \"{phoneNumber}\",\"country_code\": \"{countryCode}\"}}")); var smsBodyNumber = IVRWorkflow.SwitchCallerId(_customerNumber); var messagingMock = new Mock <ITwilioMessagingApi>(MockBehavior.Strict); messagingMock.Setup(api => api.SendSMS(It.IsAny <string>(), It.Is <Dictionary <string, string> >( args => args["From"].Equals(_systemNumber) && args["To"].Equals(_customerNumber) && args["Body"].Contains($"={smsBodyNumber}")))) .ReturnsAsync((string accountSid, Dictionary <string, string> args) => JObject.Parse($"{{\"account_sid\": \"{accountSid}\",\"api_version\": \"2010-04-01\",\"body\": \"{args["Body"]}\",\"from\": \"{args["From"]}\",\"status\": \"queued\",\"to\": \"{args["To"]}\"}}")); var twilioApi = new TwilioApi(lookupsMock.Object, messagingMock.Object, "ACxxxxxxxxxxxxxx", _systemNumber); var connectFunction = new SmsWorkflow(twilioApi); var result = await connectFunction.Process(ConnectEventWithMessageEndingWithPhoneParameter, _context); Assert.Single(result); var lambdaResult = result["LambdaResult"]; Assert.NotNull(lambdaResult); Assert.True(lambdaResult.Type == JTokenType.Boolean, "LambdaResult type is not Boolean"); Assert.True(lambdaResult.Value <bool>(), "LambdaResult value is not true"); lookupsMock.VerifyAll(); messagingMock.VerifyAll(); }
public async Task SmsReturnsFalseIfValidButBadCredentials() { var lookupsMock = new Mock <ITwilioLookupsApi>(MockBehavior.Strict); var lookupsException = await TwilioTests.CreateException($"https://lookups.twilio.com/v1/PhoneNumbers/{_customerNumber}?Type=carrier", HttpMethod.Get, HttpStatusCode.Unauthorized); lookupsMock.Setup(api => api.NumberInfo(_customerNumber, It.IsAny <string>(), "carrier")) .ThrowsAsync(lookupsException); var messagingMock = new Mock <ITwilioMessagingApi>(MockBehavior.Strict); var twilioApi = new TwilioApi(lookupsMock.Object, messagingMock.Object, "ACxxxxxxxxxxxxxx", _systemNumber); var connectFunction = new SmsWorkflow(twilioApi); var result = await connectFunction.Process(ConnectEventWithMessageEndingWithPhoneParameter, _context); Assert.Single(result); var lambdaResult = result["LambdaResult"]; Assert.NotNull(lambdaResult); Assert.True(lambdaResult.Type == JTokenType.Boolean); Assert.False(lambdaResult.Value <bool>()); lookupsMock.VerifyAll(); }
// GET: Twilio public ActionResult Index() { var twilio = new TwilioApi(new Models.Pharmacy()); twilio.SendTextMessage(Models.Notification.GetTestNotification()); return(View()); }
public async Task LookupReturnsEmptyNumberTypeIfValidButBadCredentials() { var lookupsMock = new Mock <ITwilioLookupsApi>(MockBehavior.Strict); var lookupsException = await TwilioTests.CreateException($"https://lookups.twilio.com/v1/PhoneNumbers/{_customerNumber}?Type=carrier", HttpMethod.Get, HttpStatusCode.Unauthorized); lookupsMock.Setup(api => api.NumberInfo(_customerNumber, It.IsAny <string>(), "carrier")) .ThrowsAsync(lookupsException); var messagingMock = new Mock <ITwilioMessagingApi>(MockBehavior.Strict); var twilioApi = new TwilioApi(lookupsMock.Object, messagingMock.Object, "ACxxxxxxxxxxxxxx", _smsNumber); var connectFunction = new LookupWorkflow(twilioApi); var result = await connectFunction.Process(_connectEvent, _context); Assert.Equal(2, result.Count); var lambdaResult = result["LambdaResult"]; Assert.NotNull(lambdaResult); Assert.True(lambdaResult.Type == JTokenType.Boolean); Assert.True(lambdaResult.Value <bool>()); var numberType = result["NumberType"]; Assert.NotNull(numberType); Assert.True(numberType.Type == JTokenType.String); var typeValue = (string)numberType; Assert.NotNull(typeValue); Assert.Equal(string.Empty, typeValue); }
public void RegisterUrlForIncomingSms() { var tw = new TwilioApi(new TwilioSmsReceiver()); //tw.RegisterUrlForIncomingSms(TwilioTestHelper.TestAccountSid, TwilioTestHelper.TestAuthToken, TwilioTestHelper.TestFromNumber_Valid, "https://Dummy.com/Dummy"); tw.RegisterUrlForIncomingSms(TwilioTestHelper.TrialAccountSid, TwilioTestHelper.TrialAuthToken, TwilioTestHelper.TrialSendingNumber, 111); }
public static void SendRecalls(List <Notification> notifications) { foreach (var n in notifications) { var twilio = new TwilioApi(Patient.PatientDict[n.PatientId].getPharmacy()); SendNotification(n, twilio); } }
public void ValidIfEnvironmentVariablesSet() { var twilioApi = new TwilioApi(); Assert.NotNull(twilioApi.LookupsApi); Assert.NotNull(twilioApi.MessagingApi); Assert.False(string.IsNullOrEmpty(twilioApi.AccountSid)); Assert.False(string.IsNullOrEmpty(twilioApi.SmsNumber)); }
private void PrepareForSending() { var notifications = getNotifications(); foreach (var n in notifications) { var pat = Patient.PatientDict[n.PatientId]; var twilio = new TwilioApi(pat.getPharmacy()); SendNotification(n, twilio); } }
public async Task SendsSmsAndReturnsQueryUrlWhenCallerStartsSessionWithoutClientUrl() { var smsBodyNumber = connectEventWithoutClientUrl.SelectToken("Details.ContactData.CustomerEndpoint.Address") .Value <string>() .Substring(1); var lookupsMock = new Mock <ITwilioLookupsApi>(MockBehavior.Strict); lookupsMock.Setup(api => api.NumberInfo(It.IsAny <string>(), It.IsAny <string>(), "carrier")) .ReturnsAsync((string phoneNumber, string countryCode, string type) => JObject.Parse($"{{\"url\": \"https://lookups.twilio.com/v1/PhoneNumbers/{phoneNumber}?Type=carrier\",\"carrier\": {{ \"type\": \"mobile\" }},\"phone_number\": \"{phoneNumber}\",\"country_code\": \"{countryCode}\"}}")); var messagingMock = new Mock <ITwilioMessagingApi>(MockBehavior.Strict); messagingMock.Setup(api => api.SendSMS(It.IsAny <string>(), It.Is <Dictionary <string, string> >( args => args["From"].Equals(SmsNumber) && args["Body"].Contains($"={IVRWorkflow.SwitchCallerId(smsBodyNumber)}")))) .ReturnsAsync((string accountSid, Dictionary <string, string> args) => JObject.Parse($"{{\"account_sid\": \"{accountSid}\",\"api_version\": \"2010-04-01\",\"body\": \"{args["Body"]}\",\"from\": \"{args["From"]}\",\"status\": \"sent\",\"to\": \"{args["To"]}\"}}")); var twilioApi = new TwilioApi(lookupsMock.Object, messagingMock.Object, "ACxxxxxxxxxxxxxx", SmsNumber); var smsWorkflow = new SmsWorkflow(twilioApi); using (var testClient = new HttpClient(new SuccessfulCreateSessionImmediateReturn()) { BaseAddress = new Uri("https://cvnet2.radishsystems.com/ivr/api/") }) { try { Environment.SetEnvironmentVariable("TWILIO_PHONENUMBER", SmsNumber); var workflow = new CreateSessionWorkflow(testClient, smsWorkflow); var response = await workflow.Process(connectEventWithoutClientUrl, context); Assert.Equal(JTokenType.Boolean, response["LambdaResult"].Type); Assert.True((bool)response["LambdaResult"]); Assert.Equal(QueryUrl, response["QueryUrl"].Value <string>()); Assert.False(response.TryGetValue("SessionStatus", out var value)); Assert.False(response.TryGetValue("SessionUrl", out value)); Assert.False(response.TryGetValue("PropertiesUrl", out value)); Assert.False(response.TryGetValue("ControlMessageUrl", out value)); Assert.True(response.TryGetValue("ConnectStartTime", out value)); Assert.Equal(JTokenType.Date, value.Type); } finally { Environment.SetEnvironmentVariable("TWILIO_PHONENUMBER", null); } } lookupsMock.VerifyAll(); messagingMock.VerifyAll(); }
public static bool SendFilledNotification(Refill refill) { var n = new Notification(refill, Notification.NotificationType.Ready); var p = DatabasePrescriptionService.GetById(refill.PrescriptionId); n.PatientId = p.PatientId; System.Diagnostics.Debug.WriteLine(n.PatientId); n.NotificationId = DatabaseNotificationService.Insert(n); var pat = Patient.PatientDict[n.PatientId]; var twilio = new TwilioApi(pat.getPharmacy()); SendNotification(n, twilio); return(true); }
public void Send() { var tw = new TwilioApi(new TwilioSmsReceiver()); var taskResult = tw.SendMessage(1111, TwilioTestHelper.TrialAccountSid, TwilioTestHelper.TrialAuthToken, TwilioTestHelper.TestFromNumber_Valid, "Test", TwilioTestHelper.TestToNumber_Valid.ToEnumerable()); taskResult.Wait(); var result = taskResult.Result.First(); Console.WriteLine(result.Message ?? "Success"); Assert.That(result.Success, Is.True); }
public ActionResult EditTicket(Ticket model) { Ticket ticket = context.Tickets.Find(model.ID); ticket.TicketNotes = model.TicketNotes; ticket.Employee = context.Employees.Find(model.EmployeeId); ticket.UpdateNote = model.UpdateNote; ticket.UpdatedDate = DateTime.Now; ticket.EmployeeId = model.EmployeeId; context.SaveChanges(); //ticket.ReceiveUpdate if (true) { TwilioApi.Send(ticket); } return(RedirectToAction("tickets")); }
private static void SendNotification(Notification n, TwilioApi twilio) { System.Diagnostics.Debug.WriteLine("Sending Notification: " + n.NotificationId); var p = Patient.PatientDict[n.PatientId]; if (n.Type == Notification.NotificationType.Recall) { twilio.MakeRecallPhoneCall(n); Notification.MarkSent(n); } else if (((n.Type == Notification.NotificationType.Refill || n.Type == Notification.NotificationType.Ready) && p.SendRefillMessage) || (n.Type == Notification.NotificationType.Birthday && p.SendBirthdayMessage)) { switch (p.ContactMethod) { case Patient.PrimaryContactMethod.Call: twilio.MakePhoneCall(n); break; case Patient.PrimaryContactMethod.Email: EmailService.SendNotification(n); break; case Patient.PrimaryContactMethod.Text: twilio.SendTextMessage(n); break; case Patient.PrimaryContactMethod.OptOut: // Do nothing break; default: break; } Notification.MarkSent(n); } }
public static void SendNotification(Patient p, String message) { var twilio = new TwilioApi(p.getPharmacy()); twilio.SendTextMessage(p, message); }
public static void SendNotification(Notification notification) { var twilio = new TwilioApi(Patient.PatientDict[notification.PatientId].getPharmacy()); SendNotification(notification, twilio); }
public void DeregisterUrlForIncomingSms() { var tw = new TwilioApi(new TwilioSmsReceiver()); tw.DeregisterUrlForIncomingSms(TwilioTestHelper.TrialAccountSid, TwilioTestHelper.TrialAuthToken, TwilioTestHelper.TrialSendingNumber); }