public TwiMLResult Index() { try { // capture message // Your Account Sid and Token at twilio.com/console string accountSid = UT.Utility.GetAccountSid(); // this is my accountSID string authToken = UT.Utility.GetAuthToken(); // this si my authToken //initialize account TwilioClient.Init(accountSid, authToken); // get a list (collection) of messages var messages = MessageResource.Read(pathAccountSid: accountSid); //based on understanding from documentation first message is always the one that sent from phone and recevied on API end MessageResource mr = messages.FirstOrDefault <MessageResource>(); var message = MessageResource.Fetch(pathAccountSid: accountSid, pathSid: mr.Sid); //message.sid is message unique identifier // reverse the message string. string rvMsg = UT.Utility.StringReversal(message.Body.ToString()); //write to db. WriteMsgToDb(message.Body.ToString(), rvMsg); // response section. var messagingResponse = new MessagingResponse(); messagingResponse.Message(rvMsg); return(TwiML(messagingResponse)); } catch (Exception ex) { EX.ExceptionHandler.HandleException(ex); return(null); } }
public static Enums.OtpStatus VerifyOTP(string Otp, string messageId) { try { TwilioClient.Init(AccountSid, AuthToken); var message = MessageResource.Fetch(messageId.Trim()); bool isValidOTP = false; DateTime?otpSentTime = message.DateSent; double timeDifference = DateTime.Now.Subtract(Convert.ToDateTime(otpSentTime.ToString())).TotalMinutes; if (timeDifference <= 30) { isValidOTP = message.Body.Contains(Otp.Trim()); return(isValidOTP ? Enums.OtpStatus.Valid : Enums.OtpStatus.Invalid); } else { return(Enums.OtpStatus.Expire); } } catch (Exception ex) { return(Enums.OtpStatus.Exception); } }
public void SendScheduledMessage() { try { // Library.WriteErrorLog("Inside Send Scheduled Messages"); TwilioClient.Init(accountSid, authToken); var message = MessageResource.Fetch("SM3fee5df463044d6e1f9edeaab0507327"); using (DevinTwilioEntities dc = new DevinTwilioEntities()) { // var statusList = dc.UserStatus.ToList(); var users = dc.Users.Where(c => c.EnrollmentDate != null).ToList(); // var userEnrollmentList = dc.UserEnrollments.ToList(); //if(users.id) //{ //} var list = (from schMessage in dc.ScheduleMessages join trgEvent in dc.TriggerEvents.Where(c => c.TriggerTypeId == 5) on schMessage.ScheduleMessage_TriggerEventID equals trgEvent.TriggerEvent_ID select new ScheduleViewModels { Message = schMessage.ScheduleMessage_Message, // TriggerEventName = trgEvent.TriggerEvent_Event, TriggerEventDay = trgEvent.TriggerEvent_Day, TriggerEventId = trgEvent.TriggerEvent_ID, ScheduleMessageID = schMessage.ScheduleMessage_ID, Time = schMessage.ScheduleMessage_Time }).ToList(); try { foreach (var item in users) { if (item.StatusId == 1) // 1- Active { // Library.WriteErrorLog("Inside Patient loop"); var to = new PhoneNumber(item.MobileNumber.ToString()); // Library.WriteErrorLog("To Number: " + to); var from = new PhoneNumber("+16467591379"); // Library.WriteErrorLog("From Number: " + from); var EnrollmentDate = item.EnrollmentDate; // Library.WriteErrorLog("EnrollmentDate: " + EnrollmentDate); if (EnrollmentDate != null) { DateTime currentDate = DateTime.Now; // Library.WriteErrorLog("Current Date: " + currentDate); DateTime currentEnrollmentDate = Convert.ToDateTime(item.EnrollmentDate); // Library.WriteErrorLog("Current EnrollmentDate: " + currentEnrollmentDate); int totalDays = Convert.ToInt32((currentDate - currentEnrollmentDate).TotalDays); // Library.WriteErrorLog(" scheduled days: " + totalDays); //if (totalDays >= 0 && totalDays <= 50) //{ // Library.WriteErrorLog("Inside total days comparison"); string Sid = String.Empty; // var messageDetails = list.FirstOrDefault(c => c.TriggerEventName.ToLower() == "day " + totalDays); //var messageDetails = list.FirstOrDefault(c => c.TriggerEventDay == totalDays.ToString()); var messageList = list.Where(c => c.TriggerEventDay == totalDays.ToString()); if (messageList.Count() > 0) { foreach (var msg in messageList) { var userStatusDetails = dc.UserEnrollments.FirstOrDefault(c => c.UserId == item.User_ID && c.TriggerEventId == msg.TriggerEventId); if (userStatusDetails == null) { var calculatedTime = DateTime.Now.ToString("htt"); var timeAfterRemovingSpace = ""; if (!string.IsNullOrEmpty(msg.Time)) { timeAfterRemovingSpace = msg.Time.Trim().Replace(" ", ""); timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":00", ""); timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":30", ""); //string no_start_zeros = s.TrimStart('0'); timeAfterRemovingSpace = timeAfterRemovingSpace.TrimStart('0'); } var setTime = msg.Time == null ? "9am" : timeAfterRemovingSpace; if (calculatedTime.ToLower() == setTime.ToLower()) { var message0 = MessageResource.Create(to: to, from: from, body: msg.Message); Sid = Convert.ToString(message0.Sid); // Library.WriteErrorLog("Schedule Message Sid " + Sid); if (!string.IsNullOrEmpty(Sid)) { SmsReply _smsReply = new SmsReply(); _smsReply.From = Convert.ToString(from); _smsReply.To = Convert.ToString(to); _smsReply.Sid = Convert.ToString(Sid); _smsReply.ParentSid = null; _smsReply.MessageId = msg.ScheduleMessageID; _smsReply.UserId = item.User_ID; _smsReply.SentDate = DateTime.Now; dc.SmsReplies.Add(_smsReply); dc.SaveChanges(); // Library.WriteErrorLog("Schedule Message saved in the SMSReply table"); } //Library.WriteErrorLog("Successfully send message for scheduled"); } } else { //Library.WriteErrorLog("Already user send, skip or pause for days: " + totalDays); } } } //if admin alredy skip, send adn pause message for this this user //var userStatusDetails = userEnrollmentList.FirstOrDefault(c => c.UserId == item.User_ID && c.TriggerEventId == messageDetails.TriggerEventId); //if (userStatusDetails == null) //{ // if (messageDetails != null) // { // // check the time // var calculatedTime = DateTime.Now.ToString("htt"); // var timeAfterRemovingSpace = ""; // if (!string.IsNullOrEmpty(messageDetails.Time)) // { // timeAfterRemovingSpace = messageDetails.Time.Trim().Replace(" ", ""); // timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":00", ""); // timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":30", ""); // //string no_start_zeros = s.TrimStart('0'); // timeAfterRemovingSpace = timeAfterRemovingSpace.TrimStart('0'); // } // var setTime = messageDetails.Time == null ? "9am" : timeAfterRemovingSpace; // if (calculatedTime.ToLower() == setTime.ToLower()) // { // var message0 = MessageResource.Create(to: to, from: from, body: messageDetails.Message); // Sid = Convert.ToString(message0.Sid); // Library.WriteErrorLog("Schedule Message Sid " + Sid); // if (!string.IsNullOrEmpty(Sid)) // { // SmsReply _smsReply = new SmsReply(); // _smsReply.From = Convert.ToString(from); // _smsReply.To = Convert.ToString(to); // _smsReply.Sid = Convert.ToString(Sid); // _smsReply.ParentSid = null; // _smsReply.MessageId = messageDetails.ScheduleMessageID; // _smsReply.UserId = item.User_ID; // _smsReply.SentDate = DateTime.Now; // dc.SmsReplies.Add(_smsReply); // dc.SaveChanges(); // Library.WriteErrorLog("Schedule Message saved in the SMSReply table"); // } // Library.WriteErrorLog("Successfully send message for scheduled"); // } // } // else // { // } //} //else //{ // Library.WriteErrorLog("Already user send, skip or pause for days: " + totalDays); //} } } } } catch (Exception ex) { // Library.WriteErrorLog("Scheduled : " + ex.Message); } } } catch (Exception ex) { // Library.WriteErrorLog(ex.Message); } }