public ShortMessages ParseMessages(string input) { ShortMessages messages = new ShortMessages(); try { Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n"); Match m = r.Match(input); while (m.Success) { ShortMessage msg = new ShortMessage(); //msg.Index = int.Parse(m.Groups[1].Value); msg.Index = m.Groups[1].Value; msg.Status = m.Groups[2].Value; msg.Sender = m.Groups[3].Value; msg.Alphabet = m.Groups[4].Value; msg.Sent = m.Groups[5].Value; msg.Message = m.Groups[6].Value; messages.Add(msg); m = m.NextMatch(); } } catch (Exception ex) { throw ex; } return(messages); }
public ShortMessages Get(String consumerkey) { var shortMessages = new ShortMessages(); if (string.IsNullOrEmpty(consumerkey)) { return(shortMessages); } var allShortMessages = valueRepository.GetAll(consumerkey); if (allShortMessages != null) { shortMessages.Messages = allShortMessages .OrderByDescending(value => value.Created).ToList(); } return(shortMessages); }
public ShortMessages ReadSMS(SerialPort port, string command) { // Set up the phone and read the messages ShortMessages messages = null; try { #region Execute Command // Check connection ExecCommand(port, "AT", 300, string.Format(Message.Error.NoModem, port.PortName)); // Use message format "Text mode" ExecCommand(port, "AT+CMGF=1", 300, Message.Error.FailToFormat); // Use character set "GSM" ExecCommand(port, "AT+CSCS=\"GSM\"", 300, Message.Error.FailToCharSet); // Select SIM storage ExecCommand(port, "AT+CPMS=\"SM\"", 300, Message.Error.FailToSIM); // Read the messages string input = ExecCommand(port, command, 5000, Message.Error.FailToRead); #endregion #region Parse messages messages = ParseMessages(input); #endregion } catch (Exception ex) { throw ex; } if (messages != null) { return(messages); } else { return(null); } }
private static LogTableDetails SendMessage(DataTable dt, Guid processLogRowID) { const string sourceTable = "Toko"; int rowsCount = dt.Rows.Count; LogTableDetails logTableDetails = new LogTableDetails(); LogTableDetail logTableDetail = BroadcastLog.LogStart(processLogRowID, rowsCount); logTableDetails.Add(logTableDetail); SerialPort port = new SerialPort(); SMS sms = new SMS(); ShortMessages objShortMessages = new ShortMessages(); int sentCount = 0; int failedCount = 0; try { int responseTimeout = MessageSetting.ResponseTimeout; port = sms.OpenPort(MessageSetting.PortName); logTableDetails.Add(BroadcastLog.LogConnection(processLogRowID, "Akses " + port.PortName, failedCount)); string allMessageSet = MessageSetting.JTMsg; string praMessageSet = MessageSetting.PraJTMsg; string posMessageSet = MessageSetting.PosJTMsg; foreach (DataRow dr in dt.Rows) { string kodeToko = Tools.isNull(dr["KodeToko"], string.Empty).ToString(); string toko = Tools.isNull(dr["NamaToko"], string.Empty).ToString(); string willID = Tools.isNull(dr["WilID"], string.Empty).ToString(); string hp = Tools.isNull(dr["HP"], string.Empty).ToString(); string kategori = Tools.isNull(dr["Kategori"], string.Empty).ToString(); string praHari = Tools.isNull(dr["<PraHari>"], string.Empty).ToString(); string posHari = Tools.isNull(dr["<PosHari>"], string.Empty).ToString(); string praRpSisa = Tools.isNull(dr["<PraRpSisa>"], string.Empty).ToString(); string posRpSisa = Tools.isNull(dr["<PosRpSisa>"], string.Empty).ToString(); string kontakNoHP = Tools.isNull(dr["<KontakNoHP>"], string.Empty).ToString(); if (hp != string.Empty) { string processLocation = "SMS HP: " + hp + ", Toko: " + toko + ", IdWil: " + willID + ", Kode Toko: " + kodeToko; string message = string.Empty; switch (kategori.ToUpper()) { case "ALL": message = MessageSetting.ParseMsg(allMessageSet, dt.Columns, dr); break; case "PRA": message = MessageSetting.ParseMsg(praMessageSet, dt.Columns, dr); break; case "POS": message = MessageSetting.ParseMsg(posMessageSet, dt.Columns, dr); break; default: break; } try { if (sms.SendMsg(port, hp, message, responseTimeout)) { sentCount++; logTableDetails.Add(BroadcastLog.LogSend(processLogRowID, processLocation, message, kategori, sourceTable, kodeToko)); } else { failedCount++; logTableDetails.Add(BroadcastLog.LogSend(processLogRowID, processLocation, message, string.Empty, kategori, sourceTable, kodeToko)); } } catch (Exception ex) { failedCount++; logTableDetails.Add(BroadcastLog.LogSend(processLogRowID, processLocation, message, ex.Message, kategori, sourceTable, kodeToko)); } } } } catch (Exception ex) { failedCount = rowsCount; logTableDetails.Add(BroadcastLog.LogConnection(processLogRowID, ex.Message, failedCount)); } sms.ClosePort(port); logTableDetails.Add(BroadcastLog.LogEnd(processLogRowID, rowsCount, sentCount, failedCount)); return(logTableDetails); }