Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }