Пример #1
0
        /// <summary>
        /// Send a message syncronously
        /// </summary>
        /// <returns>The messages</returns>
        public IEnumerable <SendResponse> SendMessageSync(long notifierId, string sendingNumber, string message, IEnumerable <string> numbers)
        {
            var cleanFailNumber = PhoneNumberHelper.CleanNumber(FailNumber);
            var statusUrl       = _receiver.GetStatusUpdateUrl(notifierId);
            var incommingUrl    = _receiver.GetIncommingUrl(_notifier.Id);

            var reply = $"Reply:{message}";

            var result = new List <SendResponse>();

            foreach (var number in numbers)
            {
                //TODO: Emulate status updating

                bool isFailNumber = number == cleanFailNumber;

                var messageSid = Guid.NewGuid().ToString();

                if (!isFailNumber)
                {
                    var twilioSms = new TwilioSms
                    {
                        MessageSid = messageSid,
                        AccountSid = _notifier.TpAccountSid,
                        From       = PhoneNumberHelper.CleanNumber(number),
                        To         = PhoneNumberHelper.CleanNumber(sendingNumber),
                        Body       = $"TestMode:Reply:{ResponseFromNumber(number)}"
                    };

                    _replies.Add(twilioSms);
                }

                var sendResponse = new SendResponse
                {
                    Number     = number,
                    MessageSid = messageSid,
                    Success    = !isFailNumber,
                    Message    = isFailNumber ? FailMessage : null
                };

                result.Add(sendResponse);
            }

            return(result);
        }
Пример #2
0
        public IEnumerable <SendResponse> SendMessageSync(long notifierId, string accountSid, string authToken, string sendingNumber, string message, IEnumerable <string> numbers)
        {
            var twilioClient = new TwilioRestClient(accountSid, authToken);

            var result = new List <SendResponse>();

            EventLog.Application.WriteTrace($"Twilio sending to {numbers.Count()} numbers");

            foreach (var number in numbers)
            {
                var sendResponse = new SendResponse {
                    Number = number
                };

                var sentMessage = twilioClient.SendMessage(sendingNumber, number, message, _receiver.GetStatusUpdateUrl(notifierId));

                if (sentMessage == null)
                {
                    throw new ApplicationException("Twilio send returned a null. This has only happened when there has been a network outage.");
                }

                sendResponse.MessageSid = sentMessage.Sid;
                sendResponse.Success    = sentMessage.RestException == null;

                if (sendResponse.Success)
                {
                    EventLog.Application.WriteTrace($"Twilio send to {number} suceeded");
                }
                else
                {
                    sendResponse.Success = false;
                    sendResponse.Message = sentMessage.RestException.Message;
                    EventLog.Application.WriteError($"Twilio send to {number} failed with message: {sendResponse.Message}");
                }

                result.Add(sendResponse);
            }

            return(result);
        }