private List <SlidingWindow> GetSend(SMS sms) { List <SlidingWindow> submits = new List <SlidingWindow>(); //拆分长消息 int pkSize; int pkNum = SMSSplit.GetSplitNumber(sms.Content, sms.Signature, out pkSize); if (pkNum > 1) { for (int j = 0; j < sms.Number.Count; j++) { string content = sms.Content; //发送号码 for (int i = 0; i < pkNum; i++) { Submit submit = new Submit(Sequence.Instance.CreateID()); submit.Pk_total = (uint)pkNum;; submit.Pk_number = (uint)(i + 1);; submit.WapURL = ""; submit.MsgType = 6; // uint 6=MT 消息(SP 发给终端,包括WEB 上发送的点对点短消息); submit.NeedReport = sms.StatusReport == StatusReportType.Disable ? (byte)0 : (byte)1;; // uint 0=不要求返回状态报告; 1=要求返回状态报告; submit.Priority = 1; submit.ServiceID = _setting.ServiceID; submit.FeeType = _setting.FeeType; submit.FeeCode = _setting.FeeCode; submit.FixedFee = "0"; submit.ValidTime = _setting.ValidTime; //Util.Get_MMDDHHMMSS_String(DateTime.Now.AddHours(5)) + "032+"; // 存活有效期,格式遵循SMPP3.3协议。 submit.AtTime = ""; //Util.Get_MMDDHHMMSS_String(DateTime.Now) + "032+"; // 短消息定时发送时间,格式遵循SMPP3.3 以上版本协议。 submit.SrcTermID = _setting.SrcID + sms.SPNumber; submit.ChargeTermID = _setting.ChargeTermID; submit.DestTermID = sms.Number.ToArray(); submit.DestTermIDCount = (uint)submit.DestTermID.Length; submit.Reserve = ""; submit.ProductID = ""; submit.LinkID = sms.LinkID; submit.MsgFormat = 8;//15; submit.WapURL = sms.WapURL; submit.MsgSrc = _setting.MsgSrc; submit.MsgContent = SMSSplit.GetSubString(content, pkSize); content = content.Substring(submit.MsgContent.Length); if (submit.Pk_number == pkNum) { submit.MsgContent = submit.MsgContent + sms.Signature; } submit.SetHeader(); SMS tsms = new SMS(); tsms.Account = sms.Account; tsms.Audit = sms.Audit; tsms.Channel = sms.Channel; tsms.Content = submit.MsgContent; tsms.Filter = sms.Filter; tsms.Level = sms.Level; tsms.Number = sms.Number; tsms.SendTime = sms.SendTime; tsms.SerialNumber = sms.SerialNumber; tsms.StatusReport = sms.StatusReport; tsms.Signature = sms.Signature; tsms.SPNumber = sms.SPNumber; tsms.WapURL = sms.WapURL; SlidingWindow _send = new SlidingWindow(); _send.Report = new SendEventArgs(tsms, "", false, ((ushort)PlatformCode.SMGP + (ushort)SystemCode.SendReady), "", (ushort)submit.Pk_total, (ushort)submit.Pk_number); _send.MSG = submit; _send.SendCount = 0; _send.SendTime = DateTime.Now; _send.Status = WindowStatus.Fill; submits.Add(_send); } } } else { for (int j = 0; j < sms.Number.Count; j++) { Submit submit = new Submit(Sequence.Instance.CreateID()); submit.Pk_total = 1; submit.Pk_number = 1; submit.WapURL = ""; submit.MsgType = 6; // uint 6=MT 消息(SP 发给终端,包括WEB 上发送的点对点短消息); submit.NeedReport = sms.StatusReport == StatusReportType.Disable ? (byte)0 : (byte)1;; // uint 0=不要求返回状态报告; 1=要求返回状态报告; submit.Priority = 1; submit.ServiceID = _setting.ServiceID;; submit.FeeType = _setting.FeeType; submit.FeeCode = _setting.FeeCode; submit.FixedFee = "0"; submit.ValidTime = _setting.ValidTime; //Util.Get_MMDDHHMMSS_String(DateTime.Now.AddHours(5)) + "032+"; // 存活有效期,格式遵循SMPP3.3协议。 submit.AtTime = ""; //Util.Get_MMDDHHMMSS_String(DateTime.Now) + "032+"; // 短消息定时发送时间,格式遵循SMPP3.3 以上版本协议。 submit.SrcTermID = _setting.SrcID + sms.SPNumber; submit.ChargeTermID = _setting.ChargeTermID; submit.DestTermID = sms.Number.ToArray(); submit.DestTermIDCount = (uint)submit.DestTermID.Length; submit.Reserve = ""; submit.ProductID = ""; submit.LinkID = sms.LinkID; submit.MsgFormat = 15; submit.WapURL = sms.WapURL; submit.MsgSrc = _setting.MsgSrc; //信息内容 submit.MsgContent = sms.Content + sms.Signature; submit.SetHeader(); SMS tsms = new SMS(); tsms.Account = sms.Account; tsms.Audit = sms.Audit; tsms.Channel = sms.Channel; tsms.Content = submit.MsgContent; tsms.Filter = sms.Filter; tsms.Level = sms.Level; tsms.Number = sms.Number; tsms.SendTime = sms.SendTime; tsms.SerialNumber = sms.SerialNumber; tsms.StatusReport = sms.StatusReport; tsms.Signature = sms.Signature; tsms.SPNumber = sms.SPNumber; tsms.WapURL = sms.WapURL; SlidingWindow _send = new SlidingWindow(); _send.Report = new SendEventArgs(tsms, "", false, ((ushort)PlatformCode.SMGP + (ushort)SystemCode.SendReady), "", (ushort)1, (ushort)1); _send.MSG = submit; _send.SendCount = 0; _send.SendTime = DateTime.Now; _send.Status = WindowStatus.Fill; submits.Add(_send); } } return(submits); }
public void SendSMS(SMS sms) { //拆分长消息 int pkSize; int pkNum = SMSSplit.GetSplitNumber(sms.Content, sms.Signature, out pkSize); if (pkNum > 1) { for (int j = 0; j < sms.Number.Count; j++) { string content = sms.Content; //发送号码 for (int i = 0; i < pkNum; i++) { string MessageContent = SMSSplit.GetSubString(content, pkSize); content = content.Substring(MessageContent.Length); if (i + 1 == pkNum) { MessageContent = MessageContent + sms.Signature; } SMS tsms = new SMS(); tsms.Number = new List <string> { sms.Number[j] }; tsms.Account = sms.Account; tsms.Audit = sms.Audit; tsms.Channel = sms.Channel; tsms.Content = MessageContent; tsms.Filter = sms.Filter; tsms.Level = sms.Level; tsms.Number = sms.Number; tsms.SendTime = sms.SendTime; tsms.SerialNumber = sms.SerialNumber; tsms.StatusReport = sms.StatusReport; tsms.Signature = sms.Signature; tsms.SPNumber = sms.SPNumber; tsms.WapURL = sms.WapURL; sw = 0; string serial = Guid.NewGuid().ToString(); if (SendEvent != null) { SendEventArgs e = new SendEventArgs(tsms, serial, true, ((ushort)PlatformCode.SYS + (ushort)SystemCode.SendReady), "send", (ushort)pkNum, (ushort)(i + 1)); SendEvent(this, e); Console.WriteLine(serial + " Send --> " + JsonSerialize.Instance.Serialize <SendEventArgs>(e)); sw = 1; } lock (_lock) { _qReport.Enqueue(serial); } Thread.Sleep(_sendSpan); } } } else { sw = 0; string serial = Guid.NewGuid().ToString(); if (SendEvent != null) { SendEventArgs e = new SendEventArgs(sms, serial, true, ((ushort)PlatformCode.SYS + (ushort)SystemCode.SendReady), "send", (ushort)1, (ushort)1); SendEvent(this, e); Console.WriteLine(serial + " Send --> " + JsonSerialize.Instance.Serialize <SendEventArgs>(e)); sw = 1; } lock (_lock) { _qReport.Enqueue(serial); } Thread.Sleep(_sendSpan); } }
private List <SlidingWindow> GetSend(SMS sms) { List <SlidingWindow> submits = new List <SlidingWindow>(); //拆分长消息 int pkSize; int pkNum = SMSSplit.GetSplitNumber(sms.Content, sms.Signature, out pkSize); if (pkNum > 1) { for (int j = 0; j < sms.Number.Count; j++) { string content = sms.Content; //发送号码 for (int i = 0; i < pkNum; i++) { CMPP_SUBMIT submit = new CMPP_SUBMIT(); submit.Head = new CMPP_HEAD(); submit.Head.CommandID = (uint)CMPP_COMMAND.CMD_SUBMIT; submit.Head.SequenceID = Sequence.Instance.CreateID(); submit.MsgID = 0; submit.SrcID = _setting.SrcID + sms.SPNumber; submit.PkTotal = (byte)pkNum; submit.PkNumber = (byte)(i + 1); submit.ServiceID = _setting.ServiceID; submit.FeeUserType = _setting.FeeUserType; submit.FeeTerminalID = _setting.FeeTerminalID; submit.FeeTerminalType = _setting.FeeTerminalType; submit.TPPID = 0; submit.MsgFmt = 8; submit.FeeType = _setting.FeeType; submit.FeeCode = _setting.FeeCode; submit.DestTerminalType = _setting.DestTerminalType; submit.MsgLevel = 1; submit.MsgSrc = _setting.SPID; submit.ValidTime = _setting.ValidTime; submit.AtTime = ""; submit.RegisteredDelivery = sms.StatusReport == StatusReportType.Disable ? (byte)0 : (byte)1; submit.LinkID = ""; //信息内容 submit.MsgContent = SMSSplit.GetSubString(content, pkSize); content = content.Substring(submit.MsgContent.Length); if (submit.PkNumber == pkNum) { submit.MsgContent = submit.MsgContent + sms.Signature; } submit.SetHeader(); //信息内容长度 submit.MsgLength = Convert.Length(submit.MsgContent, submit.MsgFmt); submit.DestTerminalID = new string[] { sms.Number[j] }; submit.DestUsrTl = (byte)1; SMS tsms = new SMS(); tsms.Account = sms.Account; tsms.Audit = sms.Audit; tsms.Channel = sms.Channel; tsms.Content = submit.MsgContent; tsms.Filter = sms.Filter; tsms.Level = sms.Level; tsms.Number = sms.Number; tsms.SendTime = sms.SendTime; tsms.SerialNumber = sms.SerialNumber; tsms.StatusReport = sms.StatusReport; tsms.Signature = sms.Signature; tsms.SPNumber = sms.SPNumber; tsms.WapURL = sms.WapURL; SlidingWindow _send = new SlidingWindow(); _send.Report = new SendEventArgs(tsms, "", false, ((ushort)PlatformCode.CMPP + (ushort)SystemCode.SendReady), "", (ushort)submit.PkTotal, (ushort)submit.PkNumber); _send.MSG = submit; _send.SendCount = 0; _send.SendTime = DateTime.Now; _send.Status = WindowStatus.Fill; submits.Add(_send); } } } else { for (int j = 0; j < sms.Number.Count; j++) { CMPP_SUBMIT submit = new CMPP_SUBMIT(); submit.Head = new CMPP_HEAD(); submit.Head.CommandID = (uint)CMPP_COMMAND.CMD_SUBMIT; submit.Head.SequenceID = Sequence.Instance.CreateID(); submit.MsgID = 0; submit.SrcID = _setting.SrcID + sms.SPNumber; submit.PkTotal = 1; submit.PkNumber = 1; submit.ServiceID = _setting.ServiceID; submit.FeeUserType = _setting.FeeUserType; submit.FeeTerminalID = _setting.FeeTerminalID; submit.FeeTerminalType = _setting.FeeTerminalType; submit.TPPID = 0; submit.TPUdhi = 0; submit.MsgFmt = 15; submit.FeeType = _setting.FeeType; submit.FeeCode = _setting.FeeCode; submit.DestTerminalType = _setting.DestTerminalType; submit.MsgLevel = 1; submit.MsgSrc = _setting.SPID; submit.ValidTime = _setting.ValidTime; submit.AtTime = ""; submit.RegisteredDelivery = sms.StatusReport == StatusReportType.Disable ? (byte)0 : (byte)1; submit.LinkID = ""; //信息内容 submit.MsgContent = sms.Content + sms.Signature; //信息内容长度 submit.MsgLength = Convert.Length(submit.MsgContent, submit.MsgFmt); submit.DestTerminalID = new string[] { sms.Number[j] }; submit.DestUsrTl = (byte)1; SMS tsms = new SMS(); tsms.Account = sms.Account; tsms.Audit = sms.Audit; tsms.Channel = sms.Channel; tsms.Content = submit.MsgContent; tsms.Filter = sms.Filter; tsms.Level = sms.Level; tsms.Number = sms.Number; tsms.SendTime = sms.SendTime; tsms.SerialNumber = sms.SerialNumber; tsms.StatusReport = sms.StatusReport; tsms.Signature = sms.Signature; tsms.SPNumber = sms.SPNumber; tsms.WapURL = sms.WapURL; SlidingWindow _send = new SlidingWindow(); _send.Report = new SendEventArgs(sms, "", false, ((ushort)PlatformCode.CMPP + (ushort)SystemCode.SendReady), "", submit.PkTotal, submit.PkNumber); _send.MSG = submit; _send.SendCount = 0; _send.SendTime = DateTime.Now; _send.Status = WindowStatus.Fill; submits.Add(_send); } } return(submits); }
private List <SlidingWindow> GetSend(SMS sms) { List <SlidingWindow> submits = new List <SlidingWindow>(); //拆分长消息 int pkSize; int pkNum = SMSSplit.GetSplitNumber(sms.Content, sms.Signature, out pkSize); if (pkNum > 1) { for (int j = 0; j < sms.Number.Count; j++) { string content = sms.Content; //发送号码 for (int i = 0; i < pkNum; i++) { SGIP_SUBMIT submit = new SGIP_SUBMIT(Sequence.Instance.CreateID()); submit.Pk_total = (byte)pkNum; submit.Pk_number = (byte)(i + 1); //SPID submit.SPNumber = _setting.SrcID + sms.SPNumber; //被计费用户号码 submit.ChargeNumber = Setting.ChargeNumber; submit.UserCount = 1; submit.CorpId = Setting.CorpId; submit.ServiceType = Setting.ServiceType; submit.FeeType = Setting.FeeType; submit.FeeValue = Setting.FeeValue; //赠送用户的话费 submit.GivenValue = "0"; //代收费标志 submit.AgentFlag = (uint)SubmitAgentFlag.RealIncome; submit.MorelatetoMTFlag = 2; //优先级 submit.Priority = 0; //sms.Level; submit.ExpireTime = ""; // Setting.ExpireTime; submit.ScheduleTime = ""; // sms.SendTime.ToString(); //状态报告 submit.ReportFlag = (byte)1; //sms.StatusReport == StatusReportType.Disable ? (byte)2 : (byte)1; submit.TP_pid = 0; submit.TP_udhi = 1; submit.MessageCoding = 8; submit.MessageType = 0; submit.LinkID = ""; submit.WapURL = sms.WapURL; submit.MessageContent = SMSSplit.GetSubString(content, pkSize); content = content.Substring(submit.MessageContent.Length); if (submit.Pk_number == pkNum) { submit.MessageContent = submit.MessageContent + sms.Signature; } submit.SetHeader(); submit.UserNumber = sms.Number[j]; if (submit.UserNumber.Length == 11) { submit.UserNumber = "86" + submit.UserNumber; } SlidingWindow _send = new SlidingWindow(); string serial = submit.Header.SrcNodeSequence.ToString() + submit.Header.DateSequence.ToString() + submit.Header.Sequence_Id.ToString(); SMS tsms = new SMS(); tsms.Account = sms.Account; tsms.Audit = sms.Audit; tsms.Channel = sms.Channel; tsms.Content = submit.MessageContent; tsms.Filter = sms.Filter; tsms.Level = sms.Level; tsms.Number = sms.Number; tsms.SendTime = sms.SendTime; tsms.SerialNumber = sms.SerialNumber; tsms.StatusReport = sms.StatusReport; tsms.Signature = sms.Signature; tsms.SPNumber = sms.SPNumber; tsms.WapURL = sms.WapURL; _send.Report = new SendEventArgs(tsms, serial, false, ((ushort)PlatformCode.SGIP + (ushort)SystemCode.SendReady), "", (ushort)submit.Pk_total, (ushort)submit.Pk_number); _send.MSG = submit; _send.SendCount = 0; _send.SendTime = DateTime.Now; _send.Status = WindowStatus.Fill; submits.Add(_send); } } } else { for (int j = 0; j < sms.Number.Count; j++) { //发送号码 SGIP_SUBMIT submit = new SGIP_SUBMIT(Sequence.Instance.CreateID()); submit.Pk_total = 1; submit.Pk_number = 1; //SPID submit.SPNumber = _setting.SrcID + sms.SPNumber; //被计费用户号码 submit.ChargeNumber = Setting.ChargeNumber; submit.UserCount = 1; submit.CorpId = Setting.CorpId; submit.ServiceType = Setting.ServiceType; submit.FeeType = Setting.FeeType; submit.FeeValue = Setting.FeeValue; //赠送用户的话费 submit.GivenValue = "0"; //代收费标志 submit.AgentFlag = (uint)SubmitAgentFlag.RealIncome; submit.MorelatetoMTFlag = 2; //优先级 submit.Priority = 0; //sms.Level; submit.ExpireTime = ""; //Setting.ExpireTime; submit.ScheduleTime = ""; //sms.SendTime.ToString(); //状态报告 submit.ReportFlag = sms.StatusReport == StatusReportType.Disable ? (byte)2 : (byte)1; submit.TP_pid = 0; submit.TP_udhi = 0; submit.MessageCoding = 15; submit.MessageType = 0; submit.LinkID = ""; submit.WapURL = sms.WapURL; submit.MessageContent = sms.Content + sms.Signature; submit.SetHeader(); submit.UserNumber = sms.Number[j]; if (submit.UserNumber.Length == 11) { submit.UserNumber = "86" + submit.UserNumber; } SlidingWindow _send = new SlidingWindow(); string serial = submit.Header.SrcNodeSequence.ToString() + submit.Header.DateSequence.ToString() + submit.Header.Sequence_Id.ToString(); SMS tsms = new SMS(); tsms.Account = sms.Account; tsms.Audit = sms.Audit; tsms.Channel = sms.Channel; tsms.Content = submit.MessageContent; tsms.Filter = sms.Filter; tsms.Level = sms.Level; tsms.Number = sms.Number; tsms.SendTime = sms.SendTime; tsms.SerialNumber = sms.SerialNumber; tsms.StatusReport = sms.StatusReport; tsms.Signature = sms.Signature; tsms.SPNumber = sms.SPNumber; tsms.WapURL = sms.WapURL; _send.Report = new SendEventArgs(tsms, serial, false, ((ushort)PlatformCode.SGIP + (ushort)SystemCode.SendReady), "", (ushort)submit.Pk_total, (ushort)submit.Pk_number); _send.MSG = submit; _send.SendCount = 0; _send.SendTime = DateTime.Now; _send.Status = WindowStatus.Fill; submits.Add(_send); } } return(submits); }