AutomatedCaseworker.Data.TwilioMessageSender.Send C# (CSharp) Method

Send() public method

public Send ( OutgoingMessage outgoingMessage ) : void
outgoingMessage AutomatedCaseworker.Domain.DTOs.OutgoingMessage
return void
        public void Send(OutgoingMessage outgoingMessage)
        {
            var client = new RestClient(TwilioBaseUrl);
            client.Authenticator = new HttpBasicAuthenticator(AccountSid, AuthToken);
            const string sendResource = "/SMS/Messages.json";
            var request = new RestRequest(sendResource, Method.POST);
            request.AddParameter("From", From);
            request.AddParameter("To", outgoingMessage.To);
            request.AddParameter("Body", outgoingMessage.Body);
            var response = client.Post<TwilioResponse>(request);
            if (response.ErrorException != null)
            {
                throw response.ErrorException;
            }            
            if(response.Data.Status!="queued")
            {
                throw new Exception(response.Data.Message);
            }

            _repository.Create(new LoggedOutgoingMessage
                                   {
                                       Body = outgoingMessage.Body,
                                       Sent = SystemDateTime.Now(),
                                       ToNumber = outgoingMessage.To
                                   });
        }

Usage Example

Exemplo n.º 1
0
        static void Main(string[] args)
        {
            MsSqlConfiguration databaseConfiguration = MsSqlConfiguration.MsSql2008.ShowSql().
                ConnectionString(x => x.FromConnectionStringWithKey("AutomatedCaseWorker"));

            ISessionFactory sessionFactory =
                new SessionFactoryBuilder(new MappingScheme(), databaseConfiguration).Build();
            
            ISession session = sessionFactory.OpenSession();

            _caseRepository = new CaseRepository(session);
            _cases = _caseRepository.GetAllActive().ToList();
            _repository = new Repository(session);
            _twilioMessageSender = new TwilioMessageSender(_repository);
            foreach (var @case in _cases)
            {
                TimeSpan ts = DateTime.Now.Subtract(@case.LastActivity);
                if(ts.TotalMinutes>=15)
                {
                    _twilioMessageSender.Send(new OutgoingMessage(@case.CellPhoneNumber,
                                                                  String.Format("Su número de caso es {0}",
                                                                                @case.CaseNumber())));
                    _caseRepository.MarkCaseAsInactive(@case);   
                }
            }
            session.Close();
            sessionFactory.Close();
        }
TwilioMessageSender