Example #1
0
        public JsonResult SendMessages(List <Message> toSend)
        {
            if (toSend == null)
            {
                return(Json(new SMSResponse()
                {
                    Status = 404, Message = "Nema poruka za poslati!"
                }));
            }
            SMSResponse response = new SMSResponse();
            Dictionary <Message, bool> sendStatus = new Dictionary <Message, bool>();

            try
            {
                foreach (Message msg in toSend)
                {
                    sendStatus.Add(msg, msg.SendMessage());
                }

                BulkInsertStatus   insStatus   = this.msgRep.InsertMessage(toSend.Select(x => x.MapToMessageDB()).ToList());
                BulkDeliveryStatus delivStatus = Message.DetermineMessageDeliveryStatus(sendStatus);
                response = Message.MessageToDeliver(delivStatus, insStatus);
            }
            catch (Exception ex)
            {
                ///TODO log exception
                return(Json(new SMSResponse(500, "Error in saving messages")));
            }

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
Example #2
0
        /// <summary>
        /// <see cref="ISendShortMessageService.SendShortMessage"/>
        /// </summary>
        public SMSResponse SendShortMessage(ShortMessage shortmessage)
        {
            SMSResponse response = new SMSResponse();

            //CCPRestSDK.CCPRestSDK api = new CCPRestSDK.CCPRestSDK();
            ////ip格式如下,不带https://
            //bool isInit = api.init(SMSAccountInfo.Instance.SendAdress,
            //    SMSAccountInfo.Instance.CustomizedInfos[Constants.Port]);
            //api.setAccount(SMSAccountInfo.Instance.AccountSID,
            //    SMSAccountInfo.Instance.AuthToken);
            //api.setAppId(SMSAccountInfo.Instance.CustomizedInfos[Constants.APPID]);
            //if (isInit)
            //{
            //    var paras = shortmessage.Parameters == null ?
            //        new string[1] { shortmessage.Content } : shortmessage.Parameters;
            //    Dictionary<string, object> retData =
            //        api.SendTemplateSMS(shortmessage.ToPhoneNumber,
            //        SMSAccountInfo.Instance.CustomizedInfos[Constants.TemplateId], paras);
            //    if (string.Equals(retData[STatusCode].ToString(), "000000"))
            //    {
            //       response.statusCode = "200";
            //    }
            //    else
            //    {
            //        response.statusCode = "403";
            //    }
            //    response.ResponseData = getDictionaryData(retData);
            //}
            //else
            //{
            //    response.statusCode = "103";
            //    response.ResponseData = "初始化失败";
            //}
            return response;
        }
        private static async Task <string> SendSingleTextualSmsAsync(List <string> to)
        {
            Console.WriteLine("-------------------------------");
            Console.WriteLine("Sending single textual message...");

            SendSingleTextualSms smsClient = new SendSingleTextualSms(BASIC_AUTH_CONFIGURATION);
            SMSTextualRequest    request   = new SMSTextualRequest
            {
                From = FROM,
                To   = to,
                Text = MESSAGE_TEXT
            };
            SMSResponse smsResponse = await smsClient.ExecuteAsync(request);

            Console.WriteLine("Sending single textual message complete.");

            SMSResponseDetails sentMessageInfo = smsResponse.Messages[0];

            Console.WriteLine("-------------------------------");
            Console.WriteLine("Message ID: " + sentMessageInfo.MessageId);
            Console.WriteLine("Receiver: " + sentMessageInfo.To);
            Console.WriteLine("Message status: " + sentMessageInfo.Status.Name);
            Console.WriteLine("-------------------------------");

            return(sentMessageInfo.MessageId);
        }
Example #4
0
        /// <summary>
        /// 发送单条短信
        /// </summary>
        /// <param name="content">短信内容</param>
        /// <param name="mobile">目标手机号</param>
        /// <param name="rid">记录ID, 用于返回结果后的后续处理, 非必填</param>
        /// <param name="filter_nonnumber">是否过滤手机号中包含的非数字字符</param>
        /// <returns>发送结果</returns>
        public override SMSResponse send(string content, string mobile, string rid, bool filter_nonnumber)
        {
            if (service_key.isNull())
            {
                return(SMSResponse.errorNotInitialized());
            }
            if (content.isNull())
            {
                return(SMSResponse.custom(9900, "传入内容不能为空"));
            }
            if (filter_nonnumber)
            {
                mobile = mobile.getOnlyNumber();
            }
            if (!mobile.isPhoneNumber())
            {
                return(SMSResponse.custom(9901, "手机号传入有误"));
            }
            var sb = new StringBuilder();

            sb.Append("apikey=");
            sb.Append(service_key);
            sb.Append("&mobile=");
            sb.Append(mobile);
            sb.Append("&text=");
            sb.Append(HttpUtility.UrlEncode(string.Format("【{0}】{1}", sign, content)));
            if (!rid.isNull())
            {
                sb.Append("&uid=" + rid);
            }
            var response = post(Urls.urlSMSSingle(), sb.ToString());

            return(getResponse(response));
        }
Example #5
0
        /// <summary>
        /// 发送语音验证码
        /// </summary>
        /// <param name="auth_code">验证码, 一般为4~6位数字</param>
        /// <param name="mobile">目标手机号</param>
        /// <param name="rid">记录ID, 用于返回结果后的后续处理, 非必填</param>
        /// <param name="filter_nonnumber">是否过滤手机号中包含的非数字字符</param>
        /// <returns>发送结果</returns>
        public override SMSResponse sendVoiceAuth(string auth_code, string mobile, string rid, bool filter_nonnumber)
        {
            if (service_key.isNull())
            {
                return(SMSResponse.errorNotInitialized());
            }
            if (auth_code.isNull())
            {
                return(SMSResponse.custom(9900, "传入内容不能为空"));
            }
            if (filter_nonnumber)
            {
                mobile = mobile.getOnlyNumber();
            }
            if (!mobile.isPhoneNumber())
            {
                return(SMSResponse.custom(9901, "手机号传入有误"));
            }
            var sb = new StringBuilder();

            sb.Append("apikey=");
            sb.Append(service_key);
            sb.Append("&mobile=");
            sb.Append(mobile);
            sb.Append("&code=");
            sb.Append(auth_code);
            if (!rid.isNull())
            {
                sb.Append("&uid=" + rid);
            }
            var response = post(Urls.urlAuthCodeVoice(), sb.ToString());

            return(getResponse(response));
        }
Example #6
0
        /// <summary>
        /// 发送单条模板短信
        /// </summary>
        /// <param name="template_id">模板ID</param>
        /// <param name="pm">模板参数</param>
        /// <param name="mobile">目标手机号</param>
        /// <param name="rid">记录ID, 用于返回结果后的后续处理, 非必填</param>
        /// <param name="filter_nonnumber">是否过滤手机号中包含的非数字字符</param>
        /// <returns>发送结果</returns>
        public override SMSResponse sendTemplate(long template_id, Dictionary <string, string> pm, string mobile, string rid, bool filter_nonnumber)
        {
            if (service_key.isNull())
            {
                return(SMSResponse.errorNotInitialized());
            }
            if (filter_nonnumber)
            {
                mobile = mobile.getOnlyNumber();
            }
            if (!mobile.isPhoneNumber())
            {
                return(SMSResponse.custom(9901, "手机号传入有误"));
            }
            var sb = new StringBuilder();

            sb.Append("apikey=");
            sb.Append(service_key);
            sb.Append("&mobile=");
            sb.Append(mobile);
            sb.Append("&tpl_id=" + template_id);
            sb.Append("&tpl_value=" + HttpUtility.UrlEncode(serializeTemplateParam(pm)));
            if (!rid.isNull())
            {
                sb.Append("&uid=" + rid);
            }
            var response = post(Urls.urlSMSTemplateSingle(), sb.ToString());

            return(getResponse(response));
        }
Example #7
0
        /// <summary>
        /// 发送单条短信
        /// </summary>
        /// <param name="content">短信内容</param>
        /// <param name="mobile">目标手机号</param>
        /// <param name="rid">记录ID, 用于返回结果后的后续处理, 非必填</param>
        /// <param name="filter_nonnumber">是否过滤手机号中包含的非数字字符</param>
        /// <returns>发送结果</returns>
        public override SMSResponse send(string content, string mobile, string rid, bool filter_nonnumber)
        {
            if (service_key.isNull())
            {
                return(SMSResponse.errorNotInitialized());
            }
            if (content.isNull())
            {
                return(SMSResponse.custom(9900, "传入内容不能为空"));
            }
            if (filter_nonnumber)
            {
                mobile = mobile.getOnlyNumber();
            }
            if (!mobile.isPhoneNumber())
            {
                return(SMSResponse.custom(9901, "手机号传入有误"));
            }
            var send_content = new SMSSendContent(string.Format("【{0}】{1}", sign, content), mobile, service_key, service_secret);
            //var data = string.Format("UserId={0}&Text64={1}", rid, encodeContent(send_content));
            var response = post(textContent(send_content), "");

            //var response = post(Urls.urlSMSEncoded() + "?" + data, "");
            return(getResponse(response));
        }
Example #8
0
        public async Task <ActionResult <SMSResponse> > SendSingleMessage <T>(T rawRequest)
        {
            try
            {
                ValuesService valSvc = new ValuesService();
                IDictionary <string, string> inputParms = valSvc.GetCollectionFromRaw(rawRequest.ToString().Split("\r\n"), ":");
                string service = inputParms["Service"].ToString();

                Compose(service);

                return(await MessageService.SendMessageAsync(inputParms));
            }
            catch (Exception ex)
            {
                SMSResponse resp = new SMSResponse()
                {
                    DiagnosticInformation = string.Empty,
                    ErrorFlag             = true,
                    ErrorID      = 1,
                    ErrorMessage = ex.Message
                };

                return(new ObjectResult(resp));
            }
            finally
            {
                // get rid of the container when done --> tidy up, son
                //compContainer.Dispose();
                GC.Collect();
            }
        }
Example #9
0
        public static SMSResponse custom(int code, string msg)
        {
            var res = new SMSResponse();

            res.code = code;
            res.msg  = msg;
            return(res);
        }
Example #10
0
        /// <summary>
        /// 获取验证码
        /// </summary>
        /// <param name="mobile"></param>
        /// <returns></returns>
        public JsonResult GetSMS(string mobile)
        {
            if (string.IsNullOrEmpty(mobile) || mobile.Trim().Length < 1)
            {
                return(RepReurnError("请输入手机号"));
            }

            System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^1(3|5|7|8)\d{9}$");
            if (!regex.IsMatch(mobile))
            {
                return(RepReurnError("手机号错误"));
            }

            if (mobile.Trim().Length > 15)
            {
                return(RepReurnError("手机号输入错误"));
            }
            if (mobile.Trim() == "4654984351984156")
            {
                return(RepReurnError("兄弟请收手吧!这样不好."));
            }

            string ip;

            if (!GetWebClientIp(out ip))
            {
                return(RepReurnError("错误访问"));
            }

            MembershipBll bll = new MembershipBll();
            SMSResponse   rep = new SMSResponse();
            int           res = bll.GetSMS(mobile.Trim(), ip, ref rep);

            ILog log = LogManager.GetLogger(this.GetType());

            log.Error(string.Format("[{0}-{1}]", rep.error, rep.msg));

            if (res == 1)
            {
                return(RepReurnOK());
            }
            else if (res == -1)
            {
                return(RepReurnError("这个手机号已经被注册"));
            }
            else if (res == -2)
            {
                return(RepReurnError("获取验证码次数太频繁,请于明日再进行"));
            }
            else if (res == -3)
            {
                return(RepReurnError("今日获取验证码次数太频繁,已被限制"));
            }
            else
            {
                return(RepReurnError("获取验证码时出现错误"));
            }
        }
        private static async Task <string> AdvancedSmsAsync()
        {
            Console.WriteLine("-------------------------------");
            Console.WriteLine("Sending fully featured textual message with India DLT regional options...");

            SendMultipleTextualSmsAdvanced smsClient = new SendMultipleTextualSmsAdvanced(BASIC_AUTH_CONFIGURATION);

            Destination destination = new Destination
            {
                To = TO
            };


            IndiaDltOptions indiaDlt = new IndiaDltOptions();

            indiaDlt.ContentTemplateId = "some-content-template-id";
            indiaDlt.PrincipalEntityId = "some-principal-entity-id";

            RegionalOptions regionalOptions = new RegionalOptions();

            regionalOptions.IndiaDlt = indiaDlt;

            Message message = new Message
            {
                From         = FROM,
                Destinations = new List <Destination>(1)
                {
                    destination
                },
                Text     = "Advanced message example with India DLT regional options",
                Regional = regionalOptions
            };

            SMSAdvancedTextualRequest request = new SMSAdvancedTextualRequest
            {
                Messages = new List <Message>(1)
                {
                    message
                }
            };

            SMSResponse smsResponse = await smsClient.ExecuteAsync(request);

            Console.WriteLine("Sending fully featured textual message with India DLT regional options complete.");

            SMSResponseDetails sentMessageInfo = smsResponse.Messages[0];

            Console.WriteLine("-------------------------------");
            Console.WriteLine("Message ID: " + sentMessageInfo.MessageId);
            Console.WriteLine("Receiver: " + sentMessageInfo.To);
            Console.WriteLine("Message status: " + sentMessageInfo.Status.Name);
            Console.WriteLine("-------------------------------");

            return(sentMessageInfo.MessageId);
        }
Example #12
0
 /// <summary>
 /// Validates the SMS Response, throws an exception if status is non-zero
 /// </summary>
 /// <param name="response"></param>
 /// <exception cref="SmsResponseException">thrown if status of SMS response is non-zero</exception>
 public static void ValidateSmsResponse(SMSResponse response)
 {
     if (response?.messages == null)
     {
         throw new SmsResponseException("Unexpected Response from SMS API");
     }
     if (response?.messages[0].status != "0")
     {
         throw new SmsResponseException($"SMS Request Failed with status: {response.messages[0].status} and error message: {response.messages[0].error_text}");
     }
 }
Example #13
0
        private static async Task <string> AdvancedSmsAsync()
        {
            Console.WriteLine("-------------------------------");
            Console.WriteLine("Sending fully featured textual message with language...");

            SendMultipleTextualSmsAdvanced smsClient = new SendMultipleTextualSmsAdvanced(BASIC_AUTH_CONFIGURATION);

            Destination destination = new Destination
            {
                To = TO
            };

            Language language = new Language
            {
                LanguageCode = "TR",
                SingleShift  = true,
                LockingShift = true
            };

            Message message = new Message
            {
                From         = FROM,
                Destinations = new List <Destination>(1)
                {
                    destination
                },
                Text            = "Artık Ulusal Dil Tanımlayıcısı ile Türkçe karakterli smslerinizi rahatlıkla iletebilirsiniz.",
                Language        = language,
                Transliteration = "TURKISH"
            };

            SMSAdvancedTextualRequest request = new SMSAdvancedTextualRequest
            {
                Messages = new List <Message>(1)
                {
                    message
                }
            };

            SMSResponse smsResponse = await smsClient.ExecuteAsync(request);

            Console.WriteLine("Sending fully featured textual message with language complete.");

            SMSResponseDetails sentMessageInfo = smsResponse.Messages[0];

            Console.WriteLine("-------------------------------");
            Console.WriteLine("Message ID: " + sentMessageInfo.MessageId);
            Console.WriteLine("Receiver: " + sentMessageInfo.To);
            Console.WriteLine("Message status: " + sentMessageInfo.Status.Name);
            Console.WriteLine("-------------------------------");

            return(sentMessageInfo.MessageId);
        }
Example #14
0
        public async Task <SMSResponse> MakeSMSRequestAsync(
            DateTime startTimeFilter = default(DateTime))
        {
            var result = await new AndroidSMSAdapter()
                         .GetAllSMS(startTimeFilter)
                         .ConfigureAwait(false);

            var response = new SMSResponse();

            response.AddRange(result);
            return(response);
        }
Example #15
0
        private static async Task <string> AdvancedSmsAsync()
        {
            Console.WriteLine("-------------------------------");
            Console.WriteLine("Sending fully featured textual message with tracking...");

            SendMultipleTextualSmsAdvanced smsClient = new SendMultipleTextualSmsAdvanced(BASIC_AUTH_CONFIGURATION);

            Destination destination = new Destination
            {
                To = TO
            };

            Message message = new Message
            {
                From         = FROM,
                Destinations = new List <Destination>(1)
                {
                    destination
                },
                Text = "Advanced message example with tracking"
            };

            Tracking tracking = new Tracking
            {
                Track = "SMS"
            };

            SMSAdvancedTextualRequest request = new SMSAdvancedTextualRequest
            {
                Messages = new List <Message>(1)
                {
                    message
                },
                Tracking = tracking
            };

            SMSResponse smsResponse = await smsClient.ExecuteAsync(request);

            Console.WriteLine("Sending fully featured textual message with tracking complete.");

            SMSResponseDetails sentMessageInfo = smsResponse.Messages[0];

            Console.WriteLine("-------------------------------");
            Console.WriteLine("Message ID: " + sentMessageInfo.MessageId);
            Console.WriteLine("Receiver: " + sentMessageInfo.To);
            Console.WriteLine("Message status: " + sentMessageInfo.Status.Name);
            Console.WriteLine("-------------------------------");

            return(sentMessageInfo.MessageId);
        }
Example #16
0
        public async Task <IActionResult> UnBindOTP(AccountRequestModel request)
        {
            return(NotFound());

            SMSResponse response = new SMSResponse();

            response = await acc.BindAccount(request, "UnBind");

            if (response.phoneNumber == "")
            {
                return(NotFound(response));
            }
            return(Ok(response));
        }
Example #17
0
        /// <summary>
        /// 用户注册时,生成验证码
        /// </summary>
        /// <param name="mobile"></param>
        /// <returns></returns>
        public int GetSMS(string mobile, string ip, ref SMSResponse rep)
        {
            using (var db = new BFdbContext())
            {
                if (db.tblusers.Any(p => p.Mobile == mobile && p.Status == 0))
                {
                    return(-1);
                }

                DateTime dt   = DateTime.Now.AddDays(-1);
                int      cntt = db.tbluserstime.Count(p => p.RomateIp == ip && p.crtdate >= dt);
                if (cntt > 10)
                {
                    return(-3);
                }
                int cnt = db.tbluserstime.Count(p => p.Mobile == mobile && p.crtdate >= dt);
                if (cnt > 10)
                {
                    return(-2);
                }

                tblusers usr = new tblusers();
                usr.Mobile   = mobile;
                usr.Passwd   = "-";
                usr.mono     = VerifyCode.Get6SzCode();
                usr.Status   = 4;
                usr.Playerid = 0;
                usr.userid   = Guid.NewGuid().ToString();
                usr.Isupt    = "0";
                usr.Type     = "0";

                int res = db.Insert <tblusers>(usr);

                tbluserstime tm = new tbluserstime();
                tm.crtdate  = DateTime.Now;
                tm.Mobile   = mobile;
                tm.tid      = Guid.NewGuid().ToString();
                tm.RomateIp = ip;

                db.Insert <tbluserstime>(tm);

                if (res > 0)
                {
                    rep = SMSHepler.SendRegSms(mobile, usr.mono);
                }
                return(res);
            }
        }
Example #18
0
        public void SendMessage(string type, string mobile, string verifyCode)
        {
            WebUtils webUtils = new WebUtils();
            var      dic      = new Dictionary <string, string>();

            dic["type"]       = type;
            dic["mobile"]     = mobile;
            dic["verifyCode"] = verifyCode;

            SMSResponse result = JsonConvert.DeserializeObject <SMSResponse>(webUtils.DoPost(SystemConfig.SmsServiceUrl, dic));

            if (result.code != "0")
            {
                throw new BaseException(result.cause);
            }
        }
Example #19
0
        public async Task <IActionResult> VerifyOTP(SMSResponse request)
        {
            OTPResultModel response = new OTPResultModel();

            dt = await acc.CheckOTP(request.phoneNumber, request.result);

            if (dt.Rows.Count == 0)
            {
                response.message = "mismatch";
                return(NotFound(response));
            }
            // await acc.DisableCurrentOTP(request.phoneNumber, request.OTP);
            response.message = "match";

            return(Ok(response));
        }
Example #20
0
        public IActionResult generateOTP([FromBody] GenerateOTP otp)
        {
            try
            {
                string OTPValue = Common.GenerateOTP();

                SMSResponse results = new SMSResponse();

                var message = "";

                //otp.emailorPhone = "+14087224019";

                string SaveOtpValue = Data.User.GenerateOTP(OTPValue, otp);

                if (SaveOtpValue == "Success")
                {
                    results = SmsNotification.SendMessage(otp.phone, "Hi User, your OTP is " + OTPValue + " and it's expiry time is 15 minutes.");

                    string status = results.messages[0].status.ToString();

                    if (status == "0")
                    {
                        message = "Message sent successfully.";
                    }
                    else
                    {
                        string err = results.messages[0].error_text.ToString();
                        message = err;
                    }


                    return(StatusCode((int)HttpStatusCode.OK, new { message }));
                }

                else
                {
                    return(StatusCode((int)HttpStatusCode.InternalServerError, new { ErrorMessage = SaveOtpValue }));
                }
            }

            catch (Exception e)
            {
                string SaveErrorLog = Data.Common.SaveErrorLog("generateOTP", e.Message.ToString());

                return(StatusCode((int)HttpStatusCode.InternalServerError, new { ErrorMessage = e.Message.ToString() }));
            }
        }
Example #21
0
 private SMSResponse getResponse(JObject response_object)
 {
     try
     {
         var res = new SMSResponse();
         try
         {
             res.code = Convert.ToInt32(response_object["code"]);
         }
         catch { return(SMSResponse.errorDataFormatError()); }
         try
         {
             res.msg = response_object["msg"].ToString();
         }
         catch { }
         try
         {
             res.count = Convert.ToInt32(response_object["count"]);
         }
         catch { }
         try
         {
             res.fee = Convert.ToDouble(response_object["fee"]);
         }
         catch { }
         try
         {
             res.unit = response_object["unit"].ToString();
         }
         catch { }
         try
         {
             res.mobile = response_object["mobile"].ToString();
         }
         catch { }
         try
         {
             res.sid = response_object["sid"].ToString();
         }
         catch { }
         return(res);
     }
     catch { }
     return(SMSResponse.errorDataFormatError());
 }
Example #22
0
        private static async Task <string> AdvancedSmsAsync(string to)
        {
            Console.WriteLine("-------------------------------");
            Console.WriteLine("Sending fully featured textual message...");

            SendMultipleTextualSmsAdvanced smsClient = new SendMultipleTextualSmsAdvanced(BASIC_AUTH_CONFIGURATION);

            Destination destination = new Destination
            {
                To = to
            };

            Message message = new Message
            {
                From         = FROM,
                Destinations = new List <Destination>(1)
                {
                    destination
                },
                Text = "Congratulations, you've won a PassItOn :-)!"
            };

            SMSAdvancedTextualRequest request = new SMSAdvancedTextualRequest
            {
                Messages = new List <Message>(1)
                {
                    message
                }
            };

            SMSResponse smsResponse = await smsClient.ExecuteAsync(request);

            Console.WriteLine("Sending fully featured textual message complete.");

            SMSResponseDetails sentMessageInfo = smsResponse.Messages[0];

            Console.WriteLine("-------------------------------");
            Console.WriteLine("Message ID: " + sentMessageInfo.MessageId);
            Console.WriteLine("Receiver: " + sentMessageInfo.To);
            Console.WriteLine("Message status: " + sentMessageInfo.Status.Name);
            Console.WriteLine("-------------------------------");

            return(sentMessageInfo.MessageId);
        }
Example #23
0
        public Task <SMSResponse> SendMessageAsync(IDictionary <string, string> inputParms)
        {
            try
            {
                SMSResponse resp = new SMSResponse
                {
                    DiagnosticInformation = "",
                    ErrorMessage          = "In Second Service",
                    ErrorFlag             = false,
                    ErrorID = 0
                };

                var response = new TaskCompletionSource <SMSResponse>();
                response.SetResult(resp);

                return(response.Task);
            }
            catch (Exception ex) { throw new Exception(ex.Message); }
            finally { Dispose(); }
        }
Example #24
0
        public async Task <IActionResult> Bind(AccountRequestModel request)
        {
            acc.REST_KeepLogRequest("", func.JsonSerialize(request));
            try
            {
                SMSResponse response = new SMSResponse();
                response = await acc.BindAccount(request);

                if (response.phoneNumber == "")
                {
                    return(NotFound(response));
                }
                return(Ok(response));
            }
            catch (Exception e)
            {
                acc.REST_KeepLogRequest(e.Message, func.JsonSerialize(request));
                return(BadRequest(e.Message));
            }
        }
        public TwiMLResult Respond(SmsRequest incomingMessage)
        {
            string message_var = incomingMessage.Body;

            if (message_var.Trim() == "")
            {
                var messagingResponse0 = new MessagingResponse();
                messagingResponse0.Message("Invalid Request");

                return(TwiML(messagingResponse0));
            }
            var message = message_var.Trim().Split(' ');

            string code    = "";
            string damaged = "";
            string caked   = "";
            string missing = "";

            int damaged_int = 0;
            int caked_int   = 0;
            int missing_int = 0;

            string complaints = "";

            if (message.Length > 0)
            {
                code = message[0].Trim();
            }

            var messagingResponse_en = new MessagingResponse();

            if (code.ToUpper() == "ORDER")
            {
                if (message.Length < 2)
                {
                    messagingResponse_en.Message("Please enter an Order Number for more information.");

                    return(TwiML(messagingResponse_en));
                }

                string sales_doc_number = message[1].Trim();

                //GET Specific Order Information

                messagingResponse_en.Message("ORDER INFORMATION");

                return(TwiML(messagingResponse_en));
            }
            else if (code.ToUpper() == "ORDERS")
            {
                //GET LAst 5 Orders Information

                messagingResponse_en.Message("Last 5 Orders");

                return(TwiML(messagingResponse_en));
            }


            //CHECK for differenet codes
            for (int i = 1; i < message.Length; i++)
            {
                if (message[i].Trim() != "")
                {
                    string token = message[i].Trim();

                    if (token.Substring(0, 1) == "d")
                    {
                        damaged = token.Substring(1, token.Length - 1);
                    }
                    else if (token.Substring(0, 1) == "c")
                    {
                        caked = token.Substring(1, token.Length - 1);
                    }
                    else if (token.Substring(0, 1) == "m")
                    {
                        missing = token.Substring(1, token.Length - 1);
                    }
                }
            }

            complaints = message_var.Replace(code, "");
            complaints = complaints.Replace("d" + damaged, "");
            complaints = complaints.Replace("c" + caked, "");
            complaints = complaints.Replace("m" + missing, "");
            complaints = complaints.Trim();

            Int32.TryParse(damaged, out damaged_int);
            Int32.TryParse(caked, out caked_int);
            Int32.TryParse(missing, out missing_int);

            using (var db = new ePOD_DBEntities1())
            {
                baseSM previous_sms = db.baseSMS.Where(a => a.code_b == code && a.customer_no == incomingMessage.From).FirstOrDefault();

                if (previous_sms == null)
                {
                    var messagingResponse1 = new MessagingResponse();
                    messagingResponse1.Message("Invalid Code. Please enter the code that is displayed on the waybill.");

                    return(TwiML(messagingResponse1));
                }

                SMSResponse new_response = new SMSResponse()
                {
                    caked          = caked_int,
                    code_b         = code,
                    missing        = missing_int,
                    damaged        = damaged_int,
                    complaints     = complaints,
                    created_on     = DateTime.Now,
                    sms_request_id = previous_sms.Id
                };

                db.SMSResponses.Add(new_response);
                db.SaveChanges();
            }

            var messagingResponse = new MessagingResponse();

            messagingResponse.Message("Thank you for your response. We are happy to serve you.");

            return(TwiML(messagingResponse));
        }
Example #26
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            //if (model.Aviso == false)
            //{
            //    ViewBag.showSuccessAlert = true;
            //    ModelState.AddModelError("", "¡Oops! Aun no has aceptado el aviso de privacidad.");
            //}

            if (string.IsNullOrWhiteSpace(model.Email) && string.IsNullOrWhiteSpace(model.PhoneNumber) || string.IsNullOrEmpty(model.Password) && string.IsNullOrEmpty(model.ConfirmPassword))
            {
                ModelState.AddModelError("", "¡Oops! Aun te queda información por capturar. Inténtalo de nuevo");
            }
            else
            {
                // Validamos estructura del password ingresado.
                var mayus  = model.Password.Any(c => char.IsUpper(c));
                var min    = model.Password.Any(c => char.IsLower(c));
                var num    = model.Password.Any(c => char.IsDigit(c));
                var symbol = model.Password.Any(c => char.IsLetterOrDigit(c));
                if (mayus == false || min == false || num == false || symbol == false)
                {
                    ModelState.AddModelError("", "¡Oops! la contraseña no cumple con los requisitos: Necesitas una minúscula, una mayúscula y un número. Inténtalo de nuevo.");
                }



                if (ModelState.IsValid)
                {
                    //var Correo = from[""];
                    //var correo = Convert.ToInt32(model.Email);


                    if (string.IsNullOrWhiteSpace(model.Email))  // Válidación de usuario por # de telefono.
                    {
                        String NumberPhone = model.PhoneNumber.Substring(0, 10);
                        String Voice       = model.PhoneNumber.Substring(10);
                        String ValidaVoz   = ConfigurationManager.AppSettings["ClaveVoz"];
                        Voice.ToLower();

                        var userphone = new ApplicationUser {
                            UserName = NumberPhone, PhoneNumber = NumberPhone
                        };
                        userphone.PhoneNumberConfirmed = true;
                        userphone.Email = userphone.PhoneNumber + "@p.com";

                        var resultphone = await UserManager.CreateAsync(userphone, model.Password);

                        if (resultphone.Succeeded)
                        {
                            // Generar el token y enviarlo

                            var code = await UserManager.GenerateChangePhoneNumberTokenAsync(userphone.Id, NumberPhone);

                            var phone = userphone.PhoneNumber.ToString();

                            List <string> Destino = new List <string>(1)
                            {
                                ConfigurationManager.AppSettings["Lada"] + phone
                            };

                            if (Voice == ValidaVoz)                      // Indicador de mensaje de voz al candidato.
                            {
                                string[] result = Regex.Split(code, ""); // Separamos los numeros del codigo obtenido para enviarlos al mensaje de voz.
                                string   Codigo = "";
                                for (int i = 0; i < result.Length; i++)
                                {
                                    if (i > 0 && i < 7)
                                    {
                                        Codigo = Codigo + result[i] + "    ";
                                    }
                                }

                                var client       = new RestClient("https://api.infobip.com/tts/3/single");
                                var requestvoice = new RestRequest(Method.POST);
                                requestvoice.AddHeader("accept", "application/json");
                                requestvoice.AddHeader("content-type", "application/json");
                                requestvoice.AddHeader("authorization", "Basic " + ConfigurationManager.AppSettings["InfobipToken"]);
                                requestvoice.AddParameter("application/json", "{\n  \"from\": \"523323053385\",\n  \"to\": \"" + ConfigurationManager.AppSettings["Lada"] + phone + "\",\n  \"text\": \"Tu código es:  " + Codigo + "      Tu código es:  " + Codigo + "\",\n  \"language\": \"" + ConfigurationManager.AppSettings["LanguajeCode"] + "\"\"speechRate\": 0.5,\n}", ParameterType.RequestBody);
                                IRestResponse response = client.Execute(requestvoice);
                            }
                            else
                            {
                                // Msj con SMS.

                                BasicAuthConfiguration BASIC_AUTH_CONFIGURATION = new BasicAuthConfiguration(ConfigurationManager.AppSettings["BaseUrl"], ConfigurationManager.AppSettings["UserInfobip"], ConfigurationManager.AppSettings["PassInfobip"]);

                                SendSingleTextualSms smsClient = new SendSingleTextualSms(BASIC_AUTH_CONFIGURATION);

                                SMSTextualRequest request = new SMSTextualRequest
                                {
                                    From = "Damsa",
                                    To   = Destino,
                                    Text = ConfigurationManager.AppSettings["NameAppMsj"] + " te envia tu código de verificacion: " + code
                                };

                                // Msj de voz.

                                SMSResponse smsResponse = await smsClient.ExecuteAsync(request); // Manda el mensaje con código.

                                SMSResponseDetails sentMessageInfo = smsResponse.Messages[0];
                            }

                            return(RedirectToAction("ConfirmPhone", "Account", new { PhoneNumber = NumberPhone, idtf = userphone.Id }));


                            //if (UserManager.SmsService != null)
                            //{
                            //    var message = new IdentityMessage
                            //    {
                            //        Destination = model.PhoneNumber,
                            //        Body = "Su código de seguridad es: " + code
                            //    };
                            //    await UserManager.SmsService.SendAsync(message);
                            //}

                            //return RedirectToAction("VerifyPhone", "Account");

                            //return RedirectToAction("VerifyPhoneNumber", new { PhoneNumber = model.PhoneNumber });
                            //return RedirectToAction("Confirm", "Account", new { Email = user.Email });
                            //return RedirectToAction("RegistrarNumero", "Account");
                        }
                    }
                    else  // Validación de usuario por e-mail.
                    {
                        var user = new ApplicationUser {
                            UserName = model.Email, Email = model.Email
                        };
                        user.Email       = model.Email;
                        user.PhoneNumber = model.PhoneNumber;

                        //user.EmailConfirmed = true;
                        var result = await UserManager.CreateAsync(user, model.Password);

                        if (result.Succeeded)
                        {
                            System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(
                                new System.Net.Mail.MailAddress("*****@*****.**", "DAMSA Registro"),
                                new System.Net.Mail.MailAddress(user.Email));
                            m.Subject = "Confirmación  Email";

                            //m.Body = string.Format("<BR/>Gracias por su registro, por favor haga clic en el siguiente enlace para completar su registro: <a href=\"{0}\" title=\"User Email Confirm\">{0}</a>", "http://sagainn.com.mx:" + puerto + "/DatosContacto/" + user.Id);
                            m.Body       = string.Format("Para {0}<BR/>Gracias por su registro, por favor haga clic en el siguiente enlace para completar su registro: <a href=\"{1}\" title=\"User Email Confirm\">{1}</a>", user.UserName, Url.Action("ConfirmEmail", "Account", new { Token = user.Id, Email = user.Email }, Request.Url.Scheme));
                            m.IsBodyHtml = true;
                            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(ConfigurationManager.AppSettings["SmtpDamsa"], Convert.ToInt16(ConfigurationManager.AppSettings["SMTPPort"]));
                            smtp.EnableSsl   = true;
                            smtp.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["UserDamsa"], ConfigurationManager.AppSettings["PassDamsa"]);
                            smtp.Send(m);
                            return(RedirectToAction("Confirm", "Account", new { Email = user.Email }));
                        }
                        else
                        {
                            AddErrors(result);
                        }
                    }
                }
            }
            // If we got this far, something failed, redisplay form
            //return RedirectToAction("VerifyPhoneNumber2", "Account");
            return(View(model));

            //return RedirectToAction("AddPhoneNumber", "Account");
        }
Example #27
0
 private void Main_Load(object sender, EventArgs e)
 {
     smsResponseDelegate  = new SMSResponse(BindResponse);
     chkBrokenConDelegate = new CheckConnection(ConnectBrokenConnection);
 }
Example #28
0
        public IActionResult SmsOTP(string PhoneNumber)
        {
            try
            {
                string OTPValue = Common.GenerateOTP();

                SMSResponse results = new SMSResponse();
                //results = SmsNotification.SendMessage(PhoneNumber, "Hi User, your OTP is" + OTPValue + "and it's expiry time is 5 minutes.").ToString();
                //// results = SmsNotification.SendMessage(userlogin.PhoneNumber, "Hi User, your OTP is" + OTPValue + "and it's expiry time is 5 minutes.").Status.ToString();

                var SmsStatus = "";
                //if (results == "RanToCompletion")
                //{
                //    string SaveOtpValue = Data.Common.SaveOTP("4560123045", OTPValue, "Phone");
                //    SmsStatus = "Message sent successfully.";
                //}
                //else
                //{
                //    SmsStatus = "Message not sent..";
                //}
                PhoneNumber = "+14087224019";

                string SaveOtpValue = Data.Common.SaveOTP(PhoneNumber, OTPValue, "Phone");

                if (SaveOtpValue == "Success")
                {
                    //SMSResponse results = SmsNotification.SendMessage(PhoneNumber, "Hi User, your OTP is " + OTPValue + " and it's expiry time is 5 minutes.");

                    results = SmsNotification.SendMessage(PhoneNumber, "Hi User, your OTP is " + OTPValue + " and it's expiry time is 5 minutes.");

                    string status = results.messages[0].status.ToString();

                    if (status == "0")
                    {
                        SmsStatus = "Message sent successfully.";
                    }
                    else
                    {
                        string err = results.messages[0].error_text.ToString();
                        SmsStatus = err;
                    }


                    // results = SmsNotification.SendMessage(PhoneNumber, "Hi User, your OTP is " + OTPValue + " and it's expiry time is 5 minutes.");
                    //var res = new List<SMSResponseDetail>();
                    //res = results.messages;



                    return(StatusCode((int)HttpStatusCode.OK, new { SmsStatus }));       //results.messages,
                }

                else
                {
                    return(StatusCode((int)HttpStatusCode.Forbidden, new { error = new { message = "Phone number not available" } }));
                }
            }

            catch (Exception e)
            {
                string SaveErrorLog = Data.Common.SaveErrorLog("SmsOTP", e.Message.ToString());

                return(StatusCode((int)HttpStatusCode.InternalServerError, new { error = new { message = e.Message.ToString() } }));
            }
        }
        public async override Task RunExampleAsync()
        {
            Console.WriteLine("-------------------------------");
            Console.WriteLine("Sending scheduled fully featured textual message...");

            SMSResponse smsResponse = await SendScheduledMessageAsync();

            String             bulkId          = smsResponse.BulkId;
            SMSResponseDetails sentMessageInfo = smsResponse.Messages[0];

            Console.WriteLine("Sending scheduled fully featured textual message complete.");

            Console.WriteLine("-------------------------------");
            Console.WriteLine("Scheduled SMS");
            Console.WriteLine("Message ID: " + sentMessageInfo.MessageId);
            Console.WriteLine("Bulk ID: " + bulkId);
            Console.WriteLine("Receiver: " + sentMessageInfo.To);
            Console.WriteLine("Message status: " + sentMessageInfo.Status.Name);
            Console.WriteLine("-------------------------------");

            System.Threading.Thread.Sleep(1000);

            BulkResponse bulkResponse = await GetBulkAsync(bulkId);

            Console.WriteLine("Fetched scheduling date.");
            Console.WriteLine("Bulk ID: " + bulkResponse.BulkId);
            Console.WriteLine("SendAt: " + bulkResponse.SendAt);
            Console.WriteLine("-------------------------------");

            RescheduleMessageAsync(bulkId);
            Console.WriteLine("Rescheduling message.");
            Console.WriteLine("-------------------------------");

            System.Threading.Thread.Sleep(1000);

            bulkResponse = await GetBulkAsync(bulkId);

            Console.WriteLine("Fetched scheduling date after rescheduling.");
            Console.WriteLine("Bulk ID: " + bulkResponse.BulkId);
            Console.WriteLine("SendAt: " + bulkResponse.SendAt);
            Console.WriteLine("-------------------------------");

            System.Threading.Thread.Sleep(1000);

            BulkStatusResponse statusResponse = await GetBulkStatusAsync(bulkId);

            Console.WriteLine("Fetched bulk status.");
            Console.WriteLine("Bulk status: " + statusResponse.Status);
            Console.WriteLine("-------------------------------");

            if (statusResponse.Status == BulkStatus.PENDING)
            {
                Console.WriteLine("Fetched bulk is in PENDING status, attempting to cancel bulk.");
                Console.WriteLine("-------------------------------");

                CancelBulkStatusAsync(bulkId);

                statusResponse = await GetBulkStatusAsync(bulkId);

                Console.WriteLine("Fetched bulk status after cancelation.");
                Console.WriteLine("Bulk status: " + statusResponse.Status);
            }
            else
            {
                Console.WriteLine("Fetched bulk is not in PENDING status, aborting update.");
            }

            Console.WriteLine("-------------------------------");
        }
Example #30
0
        public int DichVu(DatabaseConstant.Action action, ref DICHVU objDichVu,
                          ref List <ClientResponseDetail> listClientResponseDetail)
        {
            SMSServiceClient client   = null;
            SMSRequest       request  = null;
            SMSResponse      response = null;
            int iret = 1;

            try
            {
                // Kiểm tra kết nối, server, service trước khi request
                Common.Utilities.IsRequestAllow(ApplicationConstant.SystemService.SMSService.layGiaTri());

                client   = SMSServiceClient(ApplicationConstant.SystemService.SMSService);
                request  = Common.Utilities.PrepareRequest(new SMSRequest());
                response = new SMSResponse();

                //Khởi tạo request
                request.Function  = DatabaseConstant.Function.SMS_DANG_KY_DVU;
                request.Action    = action;
                request.objDichVu = objDichVu;

                // make a call to service client here
                response = client.SMS(request);

                //Kiểm tra kết quả trả về
                Common.Utilities.ValidResponse(request, response);

                if (response == null)
                {
                    iret = 0;
                }
                else
                {
                    listClientResponseDetail = Common.Utilities.convertToClientResponseDetail(response);
                    objDichVu = response.objDichVu;
                    if (response.ResponseStatus.Equals(ApplicationConstant.ResponseStatus.THANH_CONG))
                    {
                        iret = 1;
                    }
                    else
                    {
                        iret = 0;
                    }
                }
            }
            catch (Exception ex)
            {
                iret = 0;
                LLogging.WriteLog(System.Reflection.MethodInfo.GetCurrentMethod().ToString(), LLogging.LogType.ERR, ex);
                throw ex;
            }
            finally
            {
                if (client.State == CommunicationState.Faulted)
                {
                    client.Abort();
                }
                else
                {
                    client.Close();
                }

                client   = null;
                request  = null;
                response = null;
            }
            return(iret);
        }
Example #31
0
 private SMSResponse getResponse(JObject response_object)
 {
     try
     {
         var res = new SMSResponse();
         try
         {
             res.code = Convert.ToInt32(response_object["returnstatus"]);
         }
         catch { res.code = -1; }
         try
         {
             res.code = Convert.ToInt32(response_object["StatusCode"]);
         }
         catch { res.code = -1; }
         if (res.code == -1)
         {
             return(SMSResponse.errorDataFormatError());
         }
         try
         {
             res.msg = response_object["message"].ToString();
         }
         catch { }
         try
         {
             res.msg = response_object["Description"].ToString();
         }
         catch { }
         try
         {
             res.count = Convert.ToInt32(response_object["successCounts"]);
         }
         catch { }
         try
         {
             res.count = Convert.ToInt32(response_object["SuccessCounts"]);
         }
         catch { }
         try
         {
             res.balance = Convert.ToDouble(response_object["remainpoint"]);
         }
         catch { }
         try
         {
             res.balance = Convert.ToDouble(response_object["Amount"]);
         }
         catch { }
         try
         {
             res.sid = response_object["taskID"].ToString();
         }
         catch { }
         try
         {
             res.sid = response_object["MsgId"].ToString();
         }
         catch { }
         return(res);
     }
     catch { }
     return(SMSResponse.errorDataFormatError());
 }