Exemplo n.º 1
0
        public HttpResponseMessage Receive(FormDataCollection formData)
        {
            // DEBUG
            App.logger.Log("SMSController.Receive(): receiving message from Twilio");

            IncomingTwilioMessage msgIn = new IncomingTwilioMessage()
            {
                Timestamp   = DateTime.Now,
                AccountSid  = formData["AccountSid"] ?? "",
                ApiVersion  = formData["ApiVersion"] ?? "",
                Body        = formData["Body"] ?? "",
                From        = formData["From"] ?? "",
                FromCity    = formData["FromCity"] ?? "",
                FromCountry = formData["FromCountry"] ?? "",
                FromState   = formData["FromState"] ?? "",
                FromZip     = formData["FromZip"] ?? "",
                MessageSid  = formData["MessageSid"] ?? "",
                NumMedia    = formData["NumMedia"] ?? "",
                NumSegments = formData["NumSegments"] ?? "",
                SmsSid      = formData["SmsSid"] ?? "",
                SmsStatus   = formData["SmsStatus"] ?? "",
                To          = formData["To"] ?? "",
                ToCity      = formData["ToCity"] ?? "",
                ToCountry   = formData["ToCountry"] ?? "",
                ToState     = formData["ToState"] ?? "",
                ToZip       = formData["ToZip"] ?? "",
                MediaURLs   = ""
            };

            // DEBUG
            App.logger.Log("SMSController.Receive(): new message received via Twilio from " + msgIn.From + " to " + msgIn.To);

            App.messageRepository.StoreIncomingMessageFromTwilio(msgIn);

            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
Exemplo n.º 2
0
 public void StoreIncomingMessageFromTwilio(IncomingTwilioMessage msg)
 {
     App.dbstore.StoreInboxMessage(msg);
 }
Exemplo n.º 3
0
        public List <IncomingTwilioMessage> GetAllInboxMessages()
        {
            List <IncomingTwilioMessage> inboxMsgs = new List <IncomingTwilioMessage>();

            SqlCeCommand cmd = dbConnection.CreateCommand();

            cmd.CommandText = "SELECT COUNT(*) FROM " + TableInbox;

            Int32 count = (Int32)cmd.ExecuteScalar();

            if (count == 0)
            {
                App.logger.Log("DBStore.GetAllInboxMessages(): no messages to offload");
                return(inboxMsgs);
            }

            App.logger.Log("DBStore.GetAllInboxMessages(): offloading " + count + " inbox message(s)");

            try
            {
                //cmd.CommandText = "SELECT TOP (" + maxBatchLoad + ") * FROM " + TableActivations;
                cmd.CommandText = "SELECT * FROM " + TableInbox;
                SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable);

                while (rs.Read())
                {
                    IncomingTwilioMessage inMsg = new IncomingTwilioMessage
                    {
                        id          = rs.GetInt32(0),
                        Timestamp   = rs.GetDateTime(1),
                        AccountSid  = rs.GetString(2),
                        ApiVersion  = rs.GetString(3),
                        Body        = rs.GetString(4),
                        From        = rs.GetString(5),
                        FromCity    = rs.GetString(6),
                        FromCountry = rs.GetString(7),
                        FromState   = rs.GetString(8),
                        FromZip     = rs.GetString(9),
                        MessageSid  = rs.GetString(10),
                        NumMedia    = rs.GetString(11),
                        NumSegments = rs.GetString(12),
                        SmsSid      = rs.GetString(13),
                        SmsStatus   = rs.GetString(14),
                        ToState     = rs.GetString(15),
                        To          = rs.GetString(16),
                        ToCity      = rs.GetString(17),
                        ToCountry   = rs.GetString(18),
                        ToZip       = rs.GetString(19),
                        MediaURLs   = rs.GetString(20)
                    };

                    // DEBUG
                    App.logger.Log("DBStore.GetAllInboxMessages(): message = " + inMsg.ToString());

                    inboxMsgs.Add(inMsg);
                }
            }
            catch (Exception ex)
            {
                var message = "! Error in DBStore.GetAllInboxMessages(): " + ex.Message + "\n" + ex.TargetSite;
                App.logger.Log(message);
            }

            return(inboxMsgs);
        }
Exemplo n.º 4
0
        public bool StoreInboxMessage(IncomingTwilioMessage msgin)
        {
            bool retVal = true;

            int id = 0; // ID of the inserted SQL CE record

            // This results to
            // INSERT INTO User (FirstName, LastName) VALUES ('test','test'),('test','test'),... ;
            SqlCeCommand cmd = dbConnection.CreateCommand();

            cmd.CommandText = TableInbox;
            cmd.CommandType = CommandType.TableDirect;
            SqlCeResultSet       rs  = cmd.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable);
            SqlCeUpdatableRecord rec = rs.CreateRecord();

            try
            {
                // DEBUG

                /*
                 * App.logger.Log("DBStore.StoreDataEntries(): Storing new entry:\n" +
                 *          "\ttimestamp: " + qlmActivation.Timestamp +
                 *          "\tkey: " + qlmActivation.LicenseKey +
                 *          "\texpiration: " + qlmActivation.ExpirationDateTime);
                 */

                rec.SetSqlDateTime(1, msgin.Timestamp);
                rec.SetString(2, msgin.AccountSid);
                rec.SetString(3, msgin.ApiVersion);
                rec.SetString(4, msgin.Body);
                rec.SetString(5, msgin.From);
                rec.SetString(6, msgin.FromCity);
                rec.SetString(7, msgin.FromCountry);
                rec.SetString(8, msgin.FromState);
                rec.SetString(9, msgin.FromZip);
                rec.SetString(10, msgin.MessageSid);
                rec.SetString(11, msgin.NumMedia);
                rec.SetString(12, msgin.NumSegments);
                rec.SetString(13, msgin.SmsSid);
                rec.SetString(14, msgin.SmsStatus);
                rec.SetString(15, msgin.ToState);
                rec.SetString(16, msgin.To);
                rec.SetString(17, msgin.ToCity);
                rec.SetString(18, msgin.ToCountry);
                rec.SetString(19, msgin.ToZip);
                rec.SetString(20, msgin.MediaURLs);
                rs.Insert(rec);

                // Get this inserter record ID
                cmd.CommandText = "SELECT @@IDENTITY";
                cmd.CommandType = CommandType.Text;
                id = Convert.ToInt32(cmd.ExecuteScalar());

                // DEBUG
                App.logger.Log("DBStore.StoreInboxMessage() storing inbox message from '" + msgin.From + "' to '" + msgin.To + "', ID=" + id);
            }
            catch (Exception ex)
            {
                var message = "! Error in DBStore.StoreInboxMessage(): " + ex.Message + "\n" + ex.TargetSite;
                App.logger.Log(message);

                retVal = false;
            }

            cmd.Dispose();

            return(retVal);
        }