Example #1
0
 public static string ResultMessage(TwilioMessageResult result, string to)
 {
     if (IsSmsSent(result))
     {
         return($"Message to {to} succeeded with status {result.Status}");
     }
     else if (IsSmsFailed(result))
     {
         return($"Message to {to} failed with status {result.Status} Err:({result.ErrorCode}) {result.ErrorMessage}");
     }
     // Accepted || Queued || Sending
     return($"Message to {to} is queued with status {result.Status}");
 }
Example #2
0
        private static TwilioMessageResult SendSmsInternal(string sSID, string sToken, string sFrom, string sTo, string sBody, string callbackUrl = null)
        {
            // Needs API keys. Removed to keep private

            TwilioClient.Init(sSID, sToken);
            Uri callbackUri = callbackUrl.HasValue() ? new Uri(callbackUrl) : null;

            //For testing numbers outside of U.S.
            //sTo = string.Format("+{0}", sTo);

            Func <PhoneNumber, PhoneNumber, string, Uri, TwilioMessageResult> delegateMethod =
                (to, from, body, statusCallback) => new TwilioMessageResult(MessageResource.Create(to, from: from, body: body, statusCallback: statusCallback));
            TwilioMessageResult response = (MockSender ?? delegateMethod).Invoke(new PhoneNumber(sTo), new PhoneNumber(sFrom), sBody, callbackUri);

            Console.WriteLine(ResultMessage(response, sTo));
            return(response);
        }
Example #3
0
        /// <summary>
        /// This checks that the Twilio web hook didn't already update the status
        /// If so, we update just the Sent flag
        /// </summary>
        public static void UpdateSMSItemStatus(CMSDataContext db, SMSItem item, TwilioMessageResult response)
        {
            if (IsSmsFailed(response))
            {
                item.ErrorMessage = $"({response.ErrorCode}) {response.ErrorMessage}".MaxString(150);
            }

            bool failed = true;

            item.ResultStatus = $"{response.Status}";
            do
            {
                try
                {
                    item.Sent = true;
                    db.SubmitChanges(ConflictMode.FailOnFirstConflict);
                    failed = false;
                }
                catch (ChangeConflictException)
                {
                    db.Refresh(RefreshMode.OverwriteCurrentValues, item);
                }
            } while (failed);
        }
Example #4
0
 public static bool IsSmsSent(TwilioMessageResult result)
 {
     return(MessageResource.StatusEnum.Sent.Equals(result.Status) || MessageResource.StatusEnum.Delivered.Equals(result.Status));
 }
Example #5
0
 public static bool IsSmsFailed(TwilioMessageResult result)
 {
     return(MessageResource.StatusEnum.Undelivered.Equals(result.Status) || MessageResource.StatusEnum.Failed.Equals(result.Status));
 }