private bool ParseMessages(string input, out ShortMessageCollection messages) { messages = new ShortMessageCollection(); try { Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n"); Match m = r.Match(input); while (m.Success) { ShortMessage msg = new ShortMessage(m.Groups[1].Value, m.Groups[2].Value, m.Groups[3].Value, m.Groups[4].Value, m.Groups[5].Value, m.Groups[6].Value); messages.Add(msg); m = m.NextMatch(); } } catch (Exception ex) { messages = null; return(false); } return(true); }
public ShortMessageCollection ParseMessages(string input) { ShortMessageCollection messages = new ShortMessageCollection(); 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 ShortMessageCollection CheckForNewMessage(bool readSIM) { ShortMessageCollection result = new ShortMessageCollection(); ShortMessageCollection messages; if (ReadTextMessage(out messages, readSIM)) { foreach (ShortMessage item in messages) { if (item.Status == "REC UNREAD") { result.Add(item); } } } return(result); }
public ShortMessageCollection ParseMessages(string input) { ShortMessageCollection messages = new ShortMessageCollection(); Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n"); Match m = r.Match(input); while (m.Success) { ShortMessage msg = new ShortMessage(); msg.Index = m.Groups[1].Value; // Disable - temp pa 25/09/15 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(); } return(messages); }
public ShortMessageCollection ParseMessages(string input) { ShortMessageCollection messages = new ShortMessageCollection(); 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 ShortMessageCollection ParseMessages(string input) { ShortMessageCollection messages = new ShortMessageCollection(); try { //Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n"); String inputAux = input; inputAux = inputAux.Replace("\r\n", @"\x"); inputAux = inputAux.Replace("\n", ""); inputAux = inputAux.Replace(@"\x", "\r\n"); Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n"); ; Match m = r.Match(inputAux); 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) { //_logger.Error("ParseMessages", ex); _causa = ex.Message; Console.WriteLine("ParseMessages " + ex.Message); } return messages; }
private ShortMessageCollection ParseMessages(string input) { ShortMessageCollection messages = new ShortMessageCollection(); Regex r = new Regex(@"\+CMGL: (\d+),""(.+)"",""(.+)"",(.*),""(.+)""\r\n(.+)\r\n"); Match m = r.Match(input); string[] mySplit = input.Split(new string[] { "+CMGL:" }, StringSplitOptions.None); int num = mySplit.Length - 1; for (int i = 1; i <= num; i++) { string sms = mySplit[i].Replace("\r\nOK\r", ""); sms = sms.Replace("\r\n", ""); sms = sms.Replace(",\"", ","); sms = sms.Replace("\"", ","); sms = sms.Replace("\r\n", ","); string[] mess = sms.Split(','); if (mess.Length > 4) { for (int y = 5; y < mess.Length; y++) mess[4] += ","+mess[y]; } ShortMessage msg = new ShortMessage(); msg.Index = int.Parse(mess[0]); msg.Status = mess[1]; msg.Sender = mess[3]; msg.Alphabet = ""; msg.Sent = DateTime.Now.ToString(); if (mess[4].IndexOf("\n") > -1) mess[4].Replace("\n", ""); msg.Message = mess[4]; messages.Add(msg); } return messages; }
public ShortMessageCollection ParseMessages(string input) { ShortMessageCollection messages = new ShortMessageCollection(); 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 = m.Groups[1].Value; msg.Status = m.Groups[2].Value; msg.Sender = ConvertRusFromUCS2(m.Groups[3].Value); msg.Alphabet = m.Groups[4].Value; DateTime sourceDate = DateTime.ParseExact(m.Groups[5].Value, "dd/M/yy,HH:mm:ss+ff", CultureInfo.InvariantCulture); msg.SentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, sourceDate.Hour, sourceDate.Minute, sourceDate.Second, sourceDate.Millisecond); msg.Text = ConvertRusFromUCS2(m.Groups[6].Value); messages.Add(msg); m = m.NextMatch(); } } catch (Exception ex) { throw new Exception("Ошибка парсинга сообщений: " + ex.Message); } return messages; }
public ShortMessageCollection ProcessingNewIncomeSMSMessages(ShortMessageCollection messages, GsmModem modem) { IncomeSMSSaveMutex.WaitOne(); ShortMessageCollection notSend = new ShortMessageCollection(); try { using (SMSContext context = new SMSContext()) { ServicePhone ServicePhone = GetServicePhoneById(modem.ServicePhone.ServicePhoneId, context); foreach (ShortMessage message in messages) { bool NotSaved = true; bool isGarbage = true; try { int firstWordLength = message.Text.Contains(" ") ? message.Text.Substring(0, message.Text.IndexOf(" ")).Length : 0; string firstWord = message.Text.Contains(" ") ? message.Text.Substring(0, message.Text.IndexOf(" ")).Replace("\n", "").Replace("\r", "") : null; Client client = GetClientByPhone(message.Sender, context); bool haveFirstWord = !String.IsNullOrEmpty(firstWord); bool ClientSMSAndNotAnswer = false; if (client != null && haveFirstWord) { isGarbage = false; IncomeSMS incomeSMS = GetIncomeSMS(firstWord, client.ClientId, context); if (incomeSMS == null) ClientSMSAndNotAnswer = true; else { message.Recipient = incomeSMS.SenderNumber; message.Sender = ServicePhone.PhoneNumber; message.Text = message.Text.Substring(firstWordLength + 1); message.IsRead = true; if (ClientIsNotBlocked(client)) { IncomeClientSMS incomeClientSMS = SaveIncomeClientSMS(message, ServicePhone, incomeSMS, client, context); if (incomeClientSMS != null) NotSaved = false; int answerId = AddAnswer(incomeSMS.MessageId, incomeClientSMS.IncomeClientSMSId, Answer.AnswerSource.SMS); } } } if ((client == null || ClientSMSAndNotAnswer) && message.Sender != null && message.Sender.Length > 10) { isGarbage = false; client = haveFirstWord ? GetClientByShortKey(firstWord, ServicePhone, context) : null; string text; if (ServicePhone.Type == ServicePhone.PhoneType.Private) { client = GetClientByServicePhone(ServicePhone, context); text = message.Text; } else { text = message.Text.Substring(firstWord.Length + 1); } IncomeSMS incomeSMS = null; incomeSMS = context.IncomeSMS.FirstOrDefault(x => x.SenderNumber.Equals(message.Sender) && x.RecipientNumber.Equals(ServicePhone.PhoneNumber) && DbFunctions.DiffSeconds(x.DateTime, message.SentDate) <= 30 && x.Status != IncomeSMS.IncomeSMSStatus.Sent); if (incomeSMS != null) { incomeSMS.Text += message.Text; context.SaveChanges(); NotSaved = false; message.IsRead = true; } else if (incomeSMS == null && client != null) { if (ClientIsNotBlocked(client)) { incomeSMS = SaveIncomeSMS(client, text, message.Sender, ServicePhone.PhoneNumber, message.SentDate, firstWord, context); if (incomeSMS != null) NotSaved = false; } message.IsRead = true; } } if (NotSaved & !isGarbage) { notSend.Add(message); message.IsRead = true; } } catch { if (NotSaved & !isGarbage) { notSend.Add(message); message.IsRead = true; } } } foreach (ShortMessage message in messages.Where(x => x.IsRead == false)) { bool Saved = false; try { Client client = GetClientByPhone(message.Sender, context); if (client != null) { IncomeClientSMS incomeClientSMS = null; incomeClientSMS = context.IncomeClientSMS.FirstOrDefault(x => x.Client.ClientId == client.ClientId && DbFunctions.DiffSeconds(x.DateTime, message.SentDate) <= 15 && x.Status != IncomeClientSMS.IncomeClientSMSStatus.Sent); if (incomeClientSMS != null) { incomeClientSMS.Text += message.Text; context.Entry(incomeClientSMS).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); Saved = true; } } else { IncomeSMS incomeSMS = null; incomeSMS = context.IncomeSMS.FirstOrDefault(x => x.SenderNumber.Equals(message.Sender) && x.RecipientNumber.Equals(ServicePhone.PhoneNumber) && DbFunctions.DiffSeconds(x.DateTime, message.SentDate) <= 30 && x.Status != IncomeSMS.IncomeSMSStatus.Sent); if (incomeSMS != null) { incomeSMS.Text += message.Text; context.Entry(incomeSMS).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); Saved = true; } } } catch { if (!Saved) notSend.Add(message); } } } return notSend; } catch (Exception e) { notSend = messages; return notSend; } finally { IncomeSMSSaveMutex.ReleaseMutex(); } }