Example #1
0
        public static ISmsProvider GetSmsServiceByChannel(int channel_id, out string error)
        {
            Tsms_Channel daChannel = new Tsms_Channel();

            if (!daChannel.SelectByPk(channel_id))
            {
                error = "短信通道配置错误";
                return(null);
            }
            if (string.IsNullOrEmpty(daChannel.Provider))
            {
                error = "短信通道配置错误";
                return(null);
            }
            SmsChannel channel = MapProvider.Map <SmsChannel>(daChannel.DataRow);

            string[] array = null;
            if (daChannel.Provider.Contains(','))
            {
                array = daChannel.Provider.Split(',');
            }
            else
            {
                array = new string[] {
                    "SmsCenter.Facade",
                    daChannel.Provider
                };
            }
            try
            {
                Assembly ass = null;
                ass = Assembly.Load(array[0]);
                Type   t    = ass.GetType(array[1]);
                object inst = Activator.CreateInstance(t);
                error = null;
                ISmsProvider sms = inst as ISmsProvider;
                if (sms == null)
                {
                    error = "通道配置错误";
                    return(null);
                }
                sms.SetChannel(channel);
                return(sms);
            }
            catch (Exception ex)
            {
                error = "通道配置错误,无法激活提供程序";
                return(null);
            }
        }
        private async Task <SmsFeedback> SendSMS(SmsMessage smsMessage, SmsChannel smsChannel)
        {
            SmsFeedback smsFeedback = new SmsFeedback();

            try
            {
                string apiEndpoint = string.Empty;

                if (smsChannel == SmsChannel.SendAndWaitForFeedback)
                {
                    apiEndpoint = "Messages/SendMessage";
                }
                else if (smsChannel == SmsChannel.SendAndForget)
                {
                    apiEndpoint = "Messages/SendMessageRapid";
                }

                string url      = $"{SmsUrl}{apiEndpoint}";
                var    response = await HttpRequestFactory.Post(url, smsMessage);

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    smsFeedback.MessageStatus = 1;
                    smsFeedback.Message       = "OTPSent";
                    _logger.LogInformation($"SMS sent to {smsMessage.Recipients.ToString()}. Waiting for responses");
                }
                else
                {
                    smsFeedback.MessageStatus = 0;
                    smsFeedback.Message       = "OTPNotSent";
                }
            }
            catch (Exception)
            {
                smsFeedback.MessageStatus = 0;
                smsFeedback.Message       = "OTPSmsError";
            }

            return(smsFeedback);
        }
Example #3
0
        /// <summary>
        /// 更新运营商绑定通道设置
        /// </summary>
        /// <param name="smsChannel"></param>
        /// <returns></returns>
        public bool SetSmsChannelOption(SmsChannel smsChannel)
        {
            bool          bResult = false;
            StringBuilder strSql  = new StringBuilder();

            strSql.Append(" UPDATE T_SysConfig SET Value =@Option, SetTime =GETDATE() where Item='sms_option';");

            try
            {
                int result = HelperForFrontend.Execute(strSql.ToString(),
                                                       new { Option = Helper.JsonSerializeObject(smsChannel).ToString() });
                if (result > 0)
                {
                    bResult = true;
                }
            }
            catch (Exception ex)
            {
                bResult = false;
            }

            return(bResult);
        }
Example #4
0
 public void SetChannel(SmsChannel channel)
 {
     this._channel = channel;
 }
 public void SetChannel(SmsChannel channel)
 {
     _smsChannel = channel;
 }
Example #6
0
        /// <summary>
        /// 获得短信通道设置信息
        /// </summary>
        /// <returns></returns>
        public SmsChannelInfo GetChannelInfo()
        {
            SmsConfigInfoTmp tmpResult      = new SmsConfigInfoTmp();
            SmsChannelInfo   smsChannelInfo = new SmsChannelInfo();
            StringBuilder    strSql         = new StringBuilder();

            strSql.Append("declare @SendMode int;");
            strSql.Append(" select @SendMode=Value from T_SysConfig where Item='sms_SendMode';");
            strSql.Append(" if(@SendMode=1)");
            strSql.Append(" begin");
            strSql.Append("   SELECT @SendMode as sendmode,max(case when Item='sms_channel_sys' then Value end) as sms_channel_sys,max(case when Item='sms_channel_f' then Value end) as sms_channel_f,max(case when Item='sms_channel_s' then Value end) as sms_channel_s FROM T_SysConfig where Item='sms_channel_f' or Item='sms_channel_s' or Item='sms_channel_sys';");
            strSql.Append(" end");
            strSql.Append(" else");
            strSql.Append(" begin");
            strSql.Append("  SELECT @SendMode as sendmode,Value from T_SysConfig where Item='sms_option';");
            strSql.Append(" end");


            try
            {
                tmpResult = HelperForFrontend.Query <SmsConfigInfoTmp>(strSql.ToString()).ToList()[0];
            }
            catch (Exception ex)
            {
                tmpResult = null;
            }

            if (tmpResult != null)
            {
                if (tmpResult.sendmode != null)
                {
                    smsChannelInfo.SendMode = tmpResult.sendmode;

                    if (smsChannelInfo.SendMode == 2)
                    {
                        //运营商绑定模式
                        if (tmpResult.Value != null)
                        {
                            string     objVal     = tmpResult.Value.ToString();
                            SmsChannel smsChannel = new SmsChannel();
                            smsChannel = Helper.JsonDeserializeObject <SmsChannel>(objVal.Trim());
                            smsChannelInfo.SmsOperator = smsChannel;
                        }
                    }
                    else
                    {
                        //通道绑定模式

                        SmsPriorityItem smsPriorityItem     = new SmsPriorityItem();
                        SmsChannelUnit  smsChannelUnitSys   = new SmsChannelUnit();
                        SmsChannelUnit  smsChannelUnitFast  = new SmsChannelUnit();
                        SmsChannelUnit  smsChannelUnitGroup = new SmsChannelUnit();
                        smsPriorityItem.SysPriority   = smsChannelUnitSys;
                        smsPriorityItem.FastPriority  = smsChannelUnitFast;
                        smsPriorityItem.GroupPriority = smsChannelUnitGroup;

                        smsPriorityItem.SysPriority.ChannelId   = tmpResult.sms_channel_sys;
                        smsPriorityItem.FastPriority.ChannelId  = tmpResult.sms_channel_f;
                        smsPriorityItem.GroupPriority.ChannelId = tmpResult.sms_channel_s;

                        smsChannelInfo.SmsPriority = smsPriorityItem;
                    }
                }
            }

            return(smsChannelInfo);
        }
Example #7
0
        /// <summary>
        /// 更新运营商绑定通道设置
        /// </summary>
        /// <param name="typeName">通道名称</param>
        /// <param name="channelId">通道ID</param>
        /// <returns></returns>
        public bool SetSmsChannelOption(string typeName, int channelId)
        {
            bool           bResult        = false;
            SmsChannelDal  dal            = new SmsChannelDal();
            SmsChannelInfo smsChannelInfo = GetChannelInfo();

            switch (typeName)
            {
            case "sys_mobile":
                //系统_移动
                smsChannelInfo.SmsOperator.SmsSystem.ChinaMobile.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsSystem.ChinaMobile.ChannelName = null;
                break;

            case "sys_unicom":
                //系统_联通
                smsChannelInfo.SmsOperator.SmsSystem.ChinaUnicom.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsSystem.ChinaUnicom.ChannelName = null;
                break;

            case "sys_telecom":
                //系统_电信
                smsChannelInfo.SmsOperator.SmsSystem.ChinaTelecom.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsSystem.ChinaTelecom.ChannelName = null;
                break;

            case "fast_mobile":
                //普通_移动
                smsChannelInfo.SmsOperator.SmsFast.ChinaMobile.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsFast.ChinaMobile.ChannelName = null;
                break;

            case "fast_unicom":
                //普通_移动
                smsChannelInfo.SmsOperator.SmsFast.ChinaUnicom.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsFast.ChinaUnicom.ChannelName = null;
                break;

            case "fast_telecom":
                //普通_电信
                smsChannelInfo.SmsOperator.SmsFast.ChinaTelecom.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsFast.ChinaTelecom.ChannelName = null;
                break;

            case "group_mobile":
                //广告_移动
                smsChannelInfo.SmsOperator.SmsGroup.ChinaMobile.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsGroup.ChinaMobile.ChannelName = null;
                break;

            case "group_unicom":
                //广告_联通
                smsChannelInfo.SmsOperator.SmsGroup.ChinaUnicom.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsGroup.ChinaUnicom.ChannelName = null;
                break;

            case "group_telecom":
                //广告_电信
                smsChannelInfo.SmsOperator.SmsGroup.ChinaTelecom.ChannelId   = channelId;
                smsChannelInfo.SmsOperator.SmsGroup.ChinaTelecom.ChannelName = null;
                break;
            }

            SmsChannel smsChannel = smsChannelInfo.SmsOperator;

            return(dal.SetSmsChannelOption(smsChannel));
        }
Example #8
0
 /// <summary>
 ///     Get the notification's delivery channels.
 /// </summary>
 /// <param name="channel"></param>
 /// <returns></returns>
 public Notifiable <T> Channel(SmsChannel channel)
 {
     _SmsChannel = channel;
     return(this);
 }