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}"); }
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); }
/// <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); }
public static bool IsSmsSent(TwilioMessageResult result) { return(MessageResource.StatusEnum.Sent.Equals(result.Status) || MessageResource.StatusEnum.Delivered.Equals(result.Status)); }
public static bool IsSmsFailed(TwilioMessageResult result) { return(MessageResource.StatusEnum.Undelivered.Equals(result.Status) || MessageResource.StatusEnum.Failed.Equals(result.Status)); }