コード例 #1
0
        public void FunctionHandler(DynamoDBEvent dynamoEvent, ILambdaContext context)
        {
            context.Logger.LogLine($"Beginning to process {dynamoEvent.Records.Count} records...");

            IServiceProvider          sp          = DI.ServiceProvider;
            IBaseRepository <Message> messageRepo = sp.GetService <IBaseRepository <Message> >();
            ISmsWorker smsWorker = sp.GetService <ISmsWorker>();

            foreach (var record in dynamoEvent.Records)
            {
                //because the stream parser strategy seems an overkill
                //to be introduced of all object
                long Id = Convert.ToInt64(record.Dynamodb.Keys.First().Value.N);
                context.Logger.LogLine($"Requesting record Id  : {Id}");

                Message msg = messageRepo.Get(Id);

                context.Logger.LogLine(JsonConvert.SerializeObject(msg));

                if (msg.Phone != null)
                {
                    SmsResponse smsResponse = smsWorker.SendSMS(msg.Phone, msg.Content);
                    string      log         = smsResponse.success ? $"SMS Message send : {msg.Phone}" : "SMS Message was unable to be sent";
                    context.Logger.LogLine(log);
                }
            }

            context.Logger.LogLine("Stream processing complete.");
        }
コード例 #2
0
        public async Task <OTPSendResponse> SendCodeAsync(OTPSendRequest request)
        {
            SmsData smsData = new SmsData()
            {
                MessageBody     = string.Format("کد فعال سازی روزانه: {0}", (object)request.Code),
                MobileNo        = request.UserMobile,
                EntityID        = request.UserId.ToString(),
                EntityName      = "OTPSendRequest",
                RecieverID      = new int?(request.UserId),
                SmsReceiverType = SmsReceiverType.User
            };
            SmsResponse response = await SmsManager.SendSmsAsync(smsData);

            if (response.Status == SmsResponseStatus.Failed)
            {
                return new OTPSendResponse()
                       {
                           Status = OTPSendStatus.Failed
                       }
            }
            ;
            return(new OTPSendResponse()
            {
                Status = OTPSendStatus.Succeed
            });
        }
コード例 #3
0
        private async void btnSendSMS_Click(object sender, RoutedEventArgs e)
        {
            statusProgress.Visibility = Visibility.Visible;
            txtResult.Visibility      = Visibility.Collapsed;
            btnSendSMS.IsEnabled      = false;

            try
            {
                clientId     = "your_att_app_key";
                clientSecret = "your_att_secret_key";
                uriString    = "https://api.att.com";

                SmsService    smsService   = new SmsService(new AttServiceSettings(clientId, clientSecret, new Uri(uriString)));
                List <string> phoneNumbers = txtPhone.Text.Split(';').ToList <string>();
                SmsResponse   response     = await smsService.SendSms(phoneNumbers, txtMessage.Text);

                if (null != response)
                {
                    txtResult.Visibility = Visibility.Visible;
                    txtResult.Text       = "Message has been sent";
                }
            }
            catch (Exception ex)
            {
                txtResult.Visibility = Visibility.Visible;
                txtResult.Text       = ex.Message;
            }

            statusProgress.Visibility = Visibility.Collapsed;
            btnSendSMS.IsEnabled      = true;
        }
コード例 #4
0
        public SmsResponse SendSms(Sms sms)
        {
            if (sms.Addresses.Count == 0 || string.IsNullOrEmpty(sms.Message))
            {
                throw new ArgumentException("Invalid sms format.");
            }

            foreach (var address in sms.Addresses)
            {
                sms.TelAdresses = new List <string>();
                sms.TelAdresses.Add(this.IsValidMSISDN(address));
            }

            var smsForSending = new OutBoundSms {
                Address = sms.TelAdresses, Message = sms.Message
            };
            string body = JsonParser <OutBoundSms> .SerializeToJson(smsForSending);

            string relativeUri = string.Format("{0}{1}", EndPoint.AbsoluteUri, "/rest/sms/2/messaging/outbox");
            var    head        = new StringBuilder();

            this.GetClientCredentials();
            head.Append(string.Format("?Authorization=Bearer {0}", this.ClientCredential.AccessToken));

            return(SmsResponse.Parse(this.Send(relativeUri, head, body)));
        }
コード例 #5
0
ファイル: HomeController.cs プロジェクト: Oplug/FCK.Studio
        public JsonResult SendVeryCode(string mobile)
        {
            ResultDto <string> result = new ResultDto <string>();

            try
            {
                Random rnd        = new Random();
                int    veryCode   = rnd.Next(100000, 999999);
                string smsContent = "短信验证码:VeryCode【兴塘荟】";
                smsContent = smsContent.Replace("VeryCode", veryCode.ToString());
                SmsResponse rlt = JisuAPI.SmsSend(mobile, smsContent);
                if (rlt.status == 0 && rlt.msg == "ok")
                {
                    Session["VeryCode"] = veryCode;
                    result.code         = 100;
                }
                else
                {
                    result.code    = 500;
                    result.message = rlt.msg;
                }
            }
            catch (Exception ex)
            {
                result.code    = 100;
                result.message = ex.Message;
            }
            return(Json(result));
        }
コード例 #6
0
        public SmsResponse PingmePleasebySms(SmsRequest smsRequest)
        {
            SmsResponse   smsResponse = new SmsResponse();
            DatabaseStuff databaseStuff = new DatabaseStuff();
            string        request, response, streamResponse;

            try
            {
                #region for wcf basic auth services
                var hostIdentity    = WindowsIdentity.GetCurrent().Name;
                var primaryIdentity = ServiceSecurityContext.Current.PrimaryIdentity.Name;
                var windowsIdentity = ServiceSecurityContext.Current.WindowsIdentity.Name;
                var threadIdentity  = Thread.CurrentPrincipal.Identity.Name;
                //var isAdmin = Thread.CurrentPrincipal.IsInRole("admin");
                #endregion

                //todo: Implement the sms stuff in the wcf service
            }
            catch (Exception ex)
            {
                smsResponse.Success           = false;
                smsResponse.Message           = "An error has occurred: " + ex.Message;
                smsResponse.ApiMessageId      = null;
                smsResponse.SubmittedDateTime = null;
            }

            return(smsResponse);
        }
コード例 #7
0
    /// <summary>
    /// This function is called with user clicks on send SMS
    /// This validates the access token and then calls sendSMS method to invoke send SMS API.
    /// </summary>
    /// <param name="sender">Sender Information</param>
    /// <param name="e">List of Arguments</param>
    protected void BtnSendSMS_Click(object sender, EventArgs e)
    {
        try
        {
            if (string.IsNullOrEmpty(txtmsisdn.Text))
            {
                this.DrawPanelForFailure(sendSMSPanel, "Specify phone number");
                return;
            }

            if (string.IsNullOrEmpty(txtmsg.Text))
            {
                this.DrawPanelForFailure(sendSMSPanel, "Specify message to send");
                return;
            }

            SmsResponse resp = this.requestFactory.SendSms(txtmsisdn.Text.Trim(), txtmsg.Text.Trim());
            txtSmsId.Text = resp.Id;
            this.DrawPanelForSuccess(sendSMSPanel, resp.Id);
        }
        catch (ArgumentException ex)
        {
            this.DrawPanelForFailure(sendSMSPanel, ex.ToString());
        }
        catch (InvalidResponseException ex)
        {
            this.DrawPanelForFailure(sendSMSPanel, ex.Body);
        }
        catch (Exception ex)
        {
            this.DrawPanelForFailure(sendSMSPanel, ex.ToString());
        }
    }
コード例 #8
0
        public SmsResponse SendSMS(string phone, string content)
        {
            SmsResponse smsResponse = default(SmsResponse);

            using (HttpClient client = new HttpClient()) {
                FormUrlEncodedContent encodedContent = new FormUrlEncodedContent(new[] {
                    new KeyValuePair <string, string>("phone", phone),
                    new KeyValuePair <string, string>("message", content),
                    new KeyValuePair <string, string>("key", Key),
                });

                HttpResponseMessage message = client.PostAsync("https://textbelt.com/text", encodedContent).Result;
                if (message.IsSuccessStatusCode)
                {
                    string response = message.Content.ReadAsStringAsync().Result;
                    smsResponse = JsonConvert.DeserializeObject <SmsResponse>(response);
                }
                else
                {
                    smsResponse = new SmsResponse {
                        success = false
                    };
                }

                return(smsResponse);
            }
        }
コード例 #9
0
        public HttpResponseMessage Receive(SmsResponse smsResponse)
        {
            var twilioResponse = new TwilioResponse();

            _smsBotService.Receive(smsResponse);
            //twilioResponse.Sms("Test"); // Todo: Reply here
            return(Request.CreateResponse(HttpStatusCode.OK, twilioResponse.Element, new MediaTypeHeaderValue("text/xml")));
        }
コード例 #10
0
        /// <summary>
        /// 短信功能余额不足发送短信提醒
        /// </summary>
        /// <param name="smsResponse"></param>
        public void BalanceInsufficient(SmsResponse smsResponse)
        {
            string sendEmail = "*****@*****.**";

            if (smsResponse.Message == "短信功能余额不足")
            {
                SendEmail(sendEmail, "【短信发送功能】", smsResponse.Message, "");
            }
        }
コード例 #11
0
        public void SmsWorkerWorks()
        {
            IServiceProvider sp        = StartUp.ServiceProvider;
            ISmsWorker       smsWorker = sp.GetService <ISmsWorker>();

            SmsResponse response = smsWorker.SendSMS("4023509079", "test");

            Assert.IsTrue(response.success);
        }
コード例 #12
0
        public JsonResult SendSms(string sms, string format)
        {
            Ctx ctx = Session["ctx"] as Ctx;
            List <SmsHelper> smss   = JsonConvert.DeserializeObject <List <SmsHelper> >(sms);
            SmsModel         model  = new SmsModel(ctx);
            SmsResponse      result = model.Send(smss, format);

            return(Json(JsonConvert.SerializeObject(result), JsonRequestBehavior.AllowGet));
        }
コード例 #13
0
        public ServiceResult <MessageResponse> Send(string originator, List <Message> messages, bool includeSpecialTurkishCharacters = false)
        {
            ServiceResult <MessageResponse> result = new ServiceResult <MessageResponse>();

            if (String.IsNullOrEmpty(originator))
            {
                result = new ServiceResult <MessageResponse>()
                {
                    Success = false,
                    Message = "You need to provider an originator."
                };
            }

            if (messages == null || !messages.Any())
            {
                return(new ServiceResult <MessageResponse>()
                {
                    Success = false,
                    Message = "You need to provide at least 1 Message to send."
                });
            }

            if (_phoneNumberValidator != null)
            {
                messages = GetValidMessages(messages);
            }

            if (messages == null || !messages.Any())
            {
                return(new ServiceResult <MessageResponse>()
                {
                    Success = false,
                    Message = "You need to provide at least 1 valid Message to send. Check your phone numbers and message texts."
                });
            }

            SmsRequest  smsRequest  = new SmsRequest(_userName, _password, originator, messages, includeSpecialTurkishCharacters);
            SmsResponse smsResponse = Post <SmsResponse>("http://api.mesajpaneli.com/json_api/", smsRequest);

            if (smsResponse.Success)
            {
                result.Success = true;
                result.Data    = new MessageResponse()
                {
                    SmsReferenceNo = smsResponse.SmsReferenceNo.ToString()
                };
            }
            else
            {
                result.Success   = false;
                result.Message   = smsResponse.ErrorMessage;
                result.ErrorCode = GetErrorCode(smsResponse);
            }

            return(result);
        }
コード例 #14
0
        private ErrorCodeEnum GetErrorCode(SmsResponse smsResponse)
        {
            // TODO. We don't know error codes yet.
            if (smsResponse.ErrorMessage == "")
            {
                return(ErrorCodeEnum.InsufficientCredits);
            }

            return(ErrorCodeEnum.None);
        }
コード例 #15
0
        /// <summary>
        /// Sends SMS message to multiple recipients.
        /// </summary>
        /// <param name="sms">instance of <see cref="SmsMessage"/> to send</param>
        /// <returns>SMS message sent</returns>
        /// <exception cref="System.ArgumentNullException">sms is null</exception>
        public async Task <SmsMessage> Send(SmsMessage sms)
        {
            Argument.ExpectNotNull(() => sms);

            SmsResponse resp = await _smsServiceWrapper.SendSms(sms.PhoneNumbers.Select(p => p.Number).ToList(), sms.Body);

            sms.MessageId = resp.Id;

            return(sms);
        }
コード例 #16
0
    public void OnGetSmsFinished(SmsResponse smsResponse)
    {
        this.smsCoroutine = null;

        if (smsResponse == null || smsResponse.code != 0)
        {
            Debug.Log("Ошибка смс кода");
        }
        else
        {
            Toolbox.Instance.authToken = smsResponse.token;
            Debug.Log("Смс код принят");
        }
    }
コード例 #17
0
        //[Authorize(Roles ="SAdmin")]
        public HttpResponseMessage MessageToWhatsapp(Whatsapp whatsapp)
        {
            SmsResponse Response = new SmsResponse();

            try
            {
                var message = Objwhatsapp.SendMessageWithWhatsapp(whatsapp);
                Response.Message = con.MessageSuccess;;
                Response.Status  = con.StatusSuccess;
            }
            catch (Exception ex)
            {
                Response.Status  = con.StatusFailed;
                Response.Message = con.MessageFailed + ", Exception : " + ex.Message;
            }
            return(ConvertToJSON(Response));
        }
コード例 #18
0
        //[Authorize(Roles ="SAdmin")]
        public HttpResponseMessage SendSMS(Sms sms)
        {
            SmsResponse Response = new SmsResponse();

            try
            {
                var message = Objsms.SendSMS(sms);
                Response.Message = $"<Response><Message>{message}</Message></Response>".ToString();
                Response.Status  = con.StatusSuccess;
            }
            catch (Exception ex)
            {
                Response.Status  = con.StatusFailed;
                Response.Message = con.MessageFailed + ", Exception : " + ex.Message;
            }
            return(ConvertToJSON(Response));
        }
コード例 #19
0
        private async void btnSendSMS_Click(object sender, RoutedEventArgs e)
        {
            txtResult.Text = string.Empty;
            if (string.IsNullOrEmpty(txtSpeechOutput.Text))
            {
                txtResult.Text = "Specify message";
                return;
            }

            if (string.IsNullOrEmpty(txtPhoneNumber.Text))
            {
                txtResult.Text = "Specify Phone Number";
                return;
            }

            statusProgress.Visibility = Visibility.Visible;
            txtResult.Visibility      = Visibility.Collapsed;
            btnSendSMS.IsEnabled      = false;
            btnRecord.IsEnabled       = false;

            try
            {
                //clientId = "your client id here";
                //clientSecret = "your client secret";

                SmsService    smsService   = new SmsService(new AttServiceSettings(clientId, clientSecret, new Uri(uriString)));
                List <string> phoneNumbers = txtPhoneNumber.Text.Split(';').ToList <string>();
                SmsResponse   response     = await smsService.SendSms(phoneNumbers, txtSpeechOutput.Text);

                if (null != response)
                {
                    txtResult.Visibility = Visibility.Visible;
                    txtResult.Text       = "Message has been sent";
                }
            }
            catch (Exception ex)
            {
                txtResult.Visibility = Visibility.Visible;
                txtResult.Text       = ex.Message;
            }

            statusProgress.Visibility = Visibility.Collapsed;
            btnSendSMS.IsEnabled      = true;
            btnRecord.IsEnabled       = true;
        }
コード例 #20
0
        private static void SendThroughPrimaryApi(string phoneNumber, string activationCode)
        {
            if (_nexmoApiKey == null)
            {
                _nexmoApiKey = ConfigurationManager.AppSettings[NeeoConstants.NexmoApiKey].ToString();
            }

            if (_nexmoApiSecret == null)
            {
                _nexmoApiSecret = ConfigurationManager.AppSettings[NeeoConstants.NexmoApiSecret].ToString();
            }

            NexmoClient nexmoClient = new NexmoClient(_nexmoApiKey, _nexmoApiSecret);
            SmsResponse smsResponse = nexmoClient.SendMessage(phoneNumber, NeeoConstants.AppName,
                                                              _smsBody.Replace(_activationCodeMask, activationCode));
            MessageStatus messageStatus = (MessageStatus)Convert.ToUInt16(smsResponse.Messages[0].Status);

            switch (messageStatus)
            {
            case MessageStatus.InvalidMessage:
                LogManager.CurrentInstance.ErrorLogger.LogError(
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "Nexmo - Phone # : " + phoneNumber + " Status : " + messageStatus.ToString() + ", Description : " + NexmoDictionaries.MessageStatusDescriptionDictionary[(short)messageStatus]);
                throw new ApplicationException(CustomHttpStatusCode.InvalidNumber.ToString("D"));
                break;

            case MessageStatus.Throttled:
            case MessageStatus.MissingParams:
            case MessageStatus.InvalidParams:
            case MessageStatus.InvalidCredentials:
            case MessageStatus.InternalError:
            case MessageStatus.NumberBarred:
            case MessageStatus.PartnerAccountBarred:
            case MessageStatus.PartnerQuotaExceeded:
            case MessageStatus.CommunicationFailed:
            case MessageStatus.InvalidSignature:
            case MessageStatus.InvalidSenderAddress:
                LogManager.CurrentInstance.ErrorLogger.LogError(
                    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "Nexmo - Status : " + messageStatus.ToString() + ", Description : " + NexmoDictionaries.MessageStatusDescriptionDictionary[(short)messageStatus]);
                SendThroughSecondaryApi(phoneNumber, activationCode);
                break;
            }
        }
コード例 #21
0
ファイル: SmsHelper.cs プロジェクト: AndreaPrestia/zesty
        private static SmsResponse SendSMS(string[] auth, SmsRequest smsRequest)
        {
            using (WebClient wb = new WebClient())
            {
                // Setting the encoding is required when sending UTF8 characters!
                wb.Encoding = System.Text.Encoding.UTF8;

                wb.Headers.Set(HttpRequestHeader.ContentType, "application/json");
                wb.Headers.Add("user_key", auth[0]);
                wb.Headers.Add("session_key", auth[1]);

                string json = JsonHelper.Serialize(smsRequest);

                string responseBody = wb.UploadString(BASEURL + "sms", "POST", json);

                SmsResponse smsResponse = JsonHelper.Deserialize <SmsResponse>(responseBody);

                return(smsResponse);
            }
        }
コード例 #22
0
ファイル: SmsHelper.cs プロジェクト: AndreaPrestia/zesty
        internal static void SendSms(string message, long number)
        {
            string skebbyUsername = Settings.Get("Skebby.Username");

            string skebbyPassword = Settings.Get("Skebby.Password");

            string[] auth = Authenticate(skebbyUsername, skebbyPassword);

            SmsRequest smsRequest = new SmsRequest();

            smsRequest.Message     = message;
            smsRequest.MessageType = MESSAGE_HIGH_QUALITY;
            smsRequest.Recipient   = new string[] { $"+{number}" };

            SmsResponse smsResponse = SendSMS(auth, smsRequest);

            if (!"OK".Equals(smsResponse.Result))
            {
                throw new SmsSendException($"Error sending sms for user {number} \n\r {smsResponse.Result}");
            }
        }
コード例 #23
0
ファイル: TelekomSendSMS.cs プロジェクト: palortoff/hacs
        public void Send(String _targetNumber, String Message, String _sender, ServiceEnvironment SMSType = ServiceEnvironment.Premium)
        {
            targetNumber  = "tel:" + _targetNumber;
            senderAddress = "tel:" + _sender;

            //! [client]
            SendSmsClient client = new SendSmsClient(authentication, SMSType);

            //! [prepare]
            List <String> receiverNumbers = new List <String>();

            receiverNumbers.Add(targetNumber);

            SendSmsRequest request = new SendSmsRequest();

            request.Numbers       = receiverNumbers;
            request.Message       = Message;
            request.SenderAddress = senderAddress;
            request.SMSType       = OutboundSMSType.TEXT;
            request.Account       = subAccountId;
            //! [prepare]

            //Console.Write("Sending SMS...");
            //! [send]
            SmsResponse response = client.SendSms(request);

            if (!response.Success)
            {
                throw new Exception(string.Format("error {0}: {1} - {2}",
                                                  response.requestError.policyException.messageId,
                                                  response.requestError.policyException.text.Substring(0, response.requestError.policyException.text.Length - 2),
                                                  response.requestError.policyException.variables[0]));
            }
            //! [send]

            //Console.WriteLine("ok");

            //Console.WriteLine("End of demo. Press Enter to exit.");
            //Console.ReadLine();
        }
コード例 #24
0
        /// <summary>
        /// Sends the SMS message.
        /// </summary>
        /// <param name="phoneNumbers">Phone numbers to send SMS message to.</param>
        /// <param name="message">Message body to send.</param>
        /// <returns>Instance of <see cref="SmsResponse"/> with sent SMS response information.</returns>
        /// <exception cref="System.ArgumentNullException">phoneNumbers is null.</exception>
        /// <exception cref="System.ArgumentException">phoneNumbers count equals zero.</exception>
        public async Task <SmsResponse> SendSms(IEnumerable <string> phoneNumbers, string message)
        {
            Argument.ExpectNotNull(() => phoneNumbers);
            Argument.Expect(() => phoneNumbers.Any(), "phoneNumbers", "at least one phone number required");

            List <string> isdnAddresses = phoneNumbers
                                          .Select(a => PhoneNumberConverter.ConvertToIsdn(a))
                                          .ToList();

            var body = String.Empty;

            if (isdnAddresses.Count == 1)
            {
                var raw = new OutboundSmsRaw(isdnAddresses[0], message);
                body = JsonParser <OutboundSmsRaw> .SerializeToJson(raw);
            }
            else
            {
                var numbers = new OutboundSms(isdnAddresses, message);
                body = JsonParser <OutboundSms> .SerializeToJson(numbers);
            }

            return(SmsResponse.Parse(await SendRawRequest(HttpMethod.Post, SendRelativeUrl, body)));
        }
コード例 #25
0
        public ActionResult <dynamic> Message(SendRequest sendRequest)
        {
            var client  = new RestClient("https://4mmdvn.api.infobip.com/omni/1/advanced");
            var request = new RestRequest(Method.POST);

            request.AddHeader("authorization", "Basic QWRtaW5pc3RyYWRvci5EZXJjbzpXYS4yODkzNCo=");
            request.AddHeader("content-type", "application/json");

            IRestResponse response;

            dynamic data;

            if (sendRequest.Type == 1)
            {
                var WhatSapp = new WhatsappResponse()
                {
                    scenarioKey = "B140C6E021C207FEB2CDE5F1DC874482",
                    whatsApp    = new WhatsApp
                    {
                        text = sendRequest.Message
                    }
                };
                WhatSapp.destinations = new List <Destination>
                {
                    new Destination
                    {
                        to = new To
                        {
                            phoneNumber = sendRequest.Number
                        }
                    }
                };
                string jsonString;
                jsonString = JsonSerializer.Serialize(WhatSapp);

                request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
                request.Method = Method.POST;
                response       = client.Execute(request);

                data = WhatSapp;
            }
            else
            {
                var sms = new SmsResponse()
                {
                    scenarioKey = "B140C6E021C207FEB2CDE5F1DC874482",
                    sms         = new Sms
                    {
                        text = sendRequest.Message
                    }
                };
                sms.destinations = new List <Destination>
                {
                    new Destination
                    {
                        to = new To
                        {
                            phoneNumber = sendRequest.Number
                        }
                    }
                };
                string jsonString;
                jsonString = JsonSerializer.Serialize(sms);

                request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
                request.Method = Method.POST;
                response       = client.Execute(request);
                data           = sms;
            }

            Root myDeserializedClass = JsonSerializer.Deserialize <Root>(response.Content);
            var  r = new
            {
                Data    = data,
                Message = myDeserializedClass.messages,
                Error   = myDeserializedClass.requestError,
                Status  = response.StatusCode,
            };

            return(r);
        }
コード例 #26
0
 internal static extern int SendSmsDeliverReport(IntPtr handle, ref SmsDataPackageStruct info, SmsResponse response, TapiResponseCallback cb, IntPtr userData);
コード例 #27
0
        /// <summary>
        /// 返回短信状态
        /// </summary>
        /// <param name="text"></param>
        /// <returns></returns>
        private static SmsResponse ResultStatus(string text)
        {
            var result = new SmsResponse
            {
                Success = false,
                Message = "发送失败"
            };

            switch (text)
            {
            case "-00":
                result.Message = "发送失败";
                break;

            case "-01":
                result.Message = "短信功能余额不足";
                break;

            case "-02":
                result.Message = "用户错误";
                break;

            case "-03":
                result.Message = "密码错误";
                break;

            case "-04":
                result.Message = "传入参数不合法、超长、类型错误";
                break;

            case "-09":
                result.Message = "暂停服务";
                break;

            case "-12":
                result.Message = "接口错误";
                break;

            case "-13":
                result.Message = "装载错误";
                break;

            case "-19":
                result.Message = "由于预算数据没有配置,预算返回失败,提示主叫“被叫无法接通";
                break;

            case "-25":
                result.Message = "参数不合法";
                break;

            case "-26":
                result.Message = "会议人数大于系统级配置值";
                break;

            case "-29":
                result.Message = "呼叫不存在";
                break;

            case "-30":
                result.Message = "会议不存在";
                break;

            case "-31":
                result.Message = "UC号码非指定会场主持人";
                break;

            case "-33":
                result.Message = "UC号码非发起CTD号码";
                break;

            case "-34":
                result.Message = "主持人UC号码不存在";
                break;

            case "-35":
                result.Message = "该与会者号码不在会议中";
                break;

            case "-36":
                result.Message = "事务正忙,不允许进行该操作";
                break;

            case "-37":
                result.Message = "会议不存在或会议尚未结束";
                break;

            case "-38":
                result.Message = "已经在录音,无需再启动";
                break;

            case "-39":
                result.Message = "已经停止录音,无需再停止";
                break;

            case "-40":
                result.Message = "该用户没有会议列表";
                break;

            case "-41":
                result.Message = "已经在播放背景音,无需再启动";
                break;

            case "-42":
                result.Message = "已经在停止背景音,无需再停止";
                break;

            case "-45":
                result.Message = "随机数字段长度不合法,或随机字符串无法转成Long型";
                break;

            case "-43":
                result.Message = "无需修改听说权";
                break;

            case "-44":
                result.Message = "主持人不能修改听说权";
                break;

            case "-46":
                result.Message = "CTC主持人类型不正确";
                break;

            case "-47":
                result.Message = "用户状态不正确(非激活状态)";
                break;

            case "-48":
                result.Message = "主持人不能被踢出";
                break;

            case "-49":
                result.Message = "主叫号码或UC号码输入过长";
                break;

            case "-50":
                result.Message = "被叫号码或目的号码输入过长";
                break;

            case "-78":
                result.Message = "该UC号码无权Web接入(未用)";
                break;

            case "-84":
                result.Message = "短信群发超过群发允许的上限";
                break;

            case "-85":
                result.Message = "超过短信群发的日最大条数限制";
                break;

            case "-86":
                result.Message = "超过短信群发的月最大条数限制";
                break;

            case "-99":
                result.Message = "操作频繁";
                break;

            case "-103":
                result.Message = "没有订阅传真功能";
                break;

            default:
                result.Success = true;
                result.Message = "发送成功";
                break;
            }
            return(result);
        }
コード例 #28
0
 private static void TestObject(SmsResponse smsResponse)
 {
     Assert.AreEqual(smsResponse.Messages[0].Status, "0");
     Assert.AreEqual(smsResponse.Messages[0].Receiver, "60123456789");
     Assert.AreEqual(smsResponse.Messages[0].MsgId, "CPASS_restapi_C0000002737000000.0001");
 }
コード例 #29
0
        /// <summary>
        /// 发送不同短信内容
        /// </summary>
        /// <param name="messages">短信数组</param>
        /// <returns></returns>
        public static SubmitResult SendDiffContentMessages(IEnumerable <SingleReceiverMessage> messages)
        {
            SubmitResult submitResult = new SubmitResult
            {
                Success = true
            };

            if (messages.Count() > 100)
            {
                throw new  Exception("号码个数超过100个");
            }


            HuaWeiShortMessageSetting msgSetting = HuaWeiShortMessageSetting.Default;

            var    gatewayUrl = msgSetting.RootUrl;
            string username   = msgSetting.Channel;//存储通道

            if (string.IsNullOrWhiteSpace(username))
            {
                throw new Exception("短信网关通道不存在");
            }

            //必填,请参考"开发准备"获取如下数据,替换为实际值
            string apiAddress = gatewayUrl + msgSetting.SendDiffUrl; //APP接入地址+接口访问URI
            string appKey     = msgSetting.AppKey;                   //APP_Key
            string appSecret  = msgSetting.AppSecret;                //APP_Secret



            ArrayList smsContent = new ArrayList();


            foreach (SingleReceiverMessage item in messages)
            {
                string[] receiver = { item.Mobile };

                smsContent.Add(InitDiffSms(receiver, item.templateId, item.templateParas, username));
            }


            try
            {
                string statusCallBack = "";
                ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
                //使用Tls1.2 = 3072
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | (SecurityProtocolType)3072;

                HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(apiAddress);
                //请求方法
                myReq.Method = "POST";
                //请求Headers
                myReq.ContentType = "application/json";
                myReq.Headers.Add("Authorization", "WSSE realm=\"SDP\",profile=\"UsernameToken\",type=\"Appkey\"");
                myReq.Headers.Add("X-WSSE", BuildWSSEHeader(appKey, appSecret));
                //请求Body
                var body = new Dictionary <string, object>()
                {
                    { "from", username },
                    { "statusCallback", statusCallBack },
                    { "smsContent", smsContent }
                };

                string jsonData = JsonConvert.SerializeObject(body);

                //发送请求数据
                StreamWriter req = new StreamWriter(myReq.GetRequestStream(), Encoding.GetEncoding("utf-8"));
                req.Write(jsonData);
                req.Close();

                //获取响应数据
                HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();
                StreamReader    resp   = new StreamReader(myResp.GetResponseStream(), Encoding.GetEncoding("utf-8"));
                string          result = resp.ReadToEnd();
                myResp.Close();
                resp.Close();

                SmsResponse res = JsonConvert.DeserializeObject <SmsResponse>(result);

                if (res.code != "000000")
                {
                    submitResult.MessageNo = res.code;
                    submitResult.Success   = false;
                    if (res.code == "E200037")
                    {
                        submitResult.ErrorMsg = SmsErrors.GetStatusErrorMessage(res.result[0].status);
                    }
                    else
                    {
                        submitResult.ErrorMsg = SmsErrors.GetCodeErrorMessage(res.code);
                    }
                }

                return(submitResult);
            }
            catch (Exception ex)
            {
                throw new Exception("短信通道连接失败,请稍后重试!");
            }
        }
コード例 #30
0
 public async Task<SmsResponse> GetSmsPaymentInfo(CancellationToken cancellationToken)
 {
     if (smsResponse == null) smsResponse = await _client.GetSmsPaymentInfo(null, cancellationToken);
     return smsResponse;
 }
コード例 #31
0
        /// <summary>
        /// Sms receive
        /// </summary>
        /// <param name="smsResponse">Sms response</param>
        async public void Receive(SmsResponse smsResponse)
        {
            var familyMember = _familyService.GetMemberByPhone(smsResponse.From);

            if (familyMember == null)
            {
                return;
            }

            var isChild = familyMember.MemberType == MemberType.Child;

            smsResponse.Body = smsResponse.Body.ToLower().TrimStart(' ');
            var commandType = ProcessMessage(smsResponse.From, smsResponse.Body, isChild);
            var message     = string.Empty;

            switch (commandType.Item1)
            {
            case SmsCommandType.KidStatus:
                message = GetKidStatus(familyMember.User.FamilyID, commandType.Item2);
                break;

            case SmsCommandType.KidBalance:
                if (isChild)
                {
                    message = GetKidBalance(familyMember.Id);
                }
                else
                {
                    message = GetKidBalance(familyMember.User.FamilyID, commandType.Item2);
                }
                break;

            case SmsCommandType.MyChoreStatus:
                message = GetKidStatus(familyMember.Id);
                break;

            case SmsCommandType.Yes:
                message = await _smsApprovalService.Approve(familyMember);

                break;

            case SmsCommandType.No:
                message = _smsApprovalService.Disapprove(familyMember);
                break;

            case SmsCommandType.AddChore:
                message = AddChoreWorkflow(familyMember, commandType.Item2, commandType.Item1);
                break;

            case SmsCommandType.Joke:
                message = GetJoke();
                break;

            case SmsCommandType.Help:
                message = GetHelp(isChild);
                break;

            case SmsCommandType.Bonus:
                decimal amount;
                var     result = decimal.TryParse(commandType.Item3, out amount);
                if (!result)
                {
                    message = _errMsg;
                }
                else
                {
                    message = SendBonus(commandType.Item2, familyMember, decimal.Parse(commandType.Item3));
                }
                break;

            case SmsCommandType.Wrong:
                if (!isChild)
                {
                    message = AddChoreWorkflow(familyMember, smsResponse.Body, commandType.Item1);
                }
                else
                {
                    message = _errMsg;
                }
                break;

            case SmsCommandType.Always:
                _familyService.MarkAsPayDayAutoApproval(familyMember);
                message = _smsApprovalService.ApproveChores(familyMember);
                break;
            }

            // Skip, If message is empty
            if (string.IsNullOrEmpty(message))
            {
                return;
            }

            _textMessageService.Send(smsResponse.From, message);
        }