コード例 #1
0
        public void WhenSettingPayloadShouldThenReturnExpected()
        {
            var batchMessage = new BatchMessage(12, new Uri("http://post.com"), "PAYLOAD");

            Assert.Equal("PAYLOAD", batchMessage.Payload);
            Assert.Equal(12, batchMessage.ReynaId);
        }
コード例 #2
0
        public void WhenCallingToJsonShouldReturnExpected()
        {
            var payload = "{\"Version Incremental\":\"20150514.093204\",\"User\":\"user\",\"Brand\":\"os\",\"device\":\"device\",\"Network Operator Name\":\"unknown\",\"Manufacturer\":\"MM\",\"updated\":1448534970738,\"list\":[{\"name\":\"System\",\"version\":\"4.1.1\",\"flag\":true},{\"name\":\"backupcon\",\"version\":\"4.1.1\",\"flag\":false}],\"Version Release\":\"4.1.1\",\"MAC\":\"MAC\"}";
            var batchMessage = new BatchMessage(12, new Uri("http://post.com"), payload);

            var expected = "{\"url\":\"http://post.com/\", \"reynaId\":12, \"payload\":{\"Version Incremental\":\"20150514.093204\",\"User\":\"user\",\"Brand\":\"os\",\"device\":\"device\",\"Network Operator Name\":\"unknown\",\"Manufacturer\":\"MM\",\"updated\":1448534970738,\"list\":[{\"name\":\"System\",\"version\":\"4.1.1\",\"flag\":true},{\"name\":\"backupcon\",\"version\":\"4.1.1\",\"flag\":false}],\"Version Release\":\"4.1.1\",\"MAC\":\"MAC\"}}";
            var actual = batchMessage.ToJson();
            Assert.Equal(expected, actual);
        }
コード例 #3
0
        public void WhenSettingUrlShouldThenReturnExpected()
        {
            var builder = new UriBuilder();
            builder.Host = "host";
            builder.Port = 8080;
            builder.Path = "path";

            var batchMessage = new BatchMessage(1, builder.Uri, "payload");

            Assert.Equal("http://host:8080/path", batchMessage.Url.ToString());
        }
コード例 #4
0
ファイル: APIThread.cs プロジェクト: LavoTP/Arad.SMS.Gateway
        private void Save(List <Message> messages)
        {
            Common.ScheduledSms scheduledSms;
            List <string>       lstReceivers;
            BatchMessage        batchMessage;

            foreach (Message msg in messages)
            {
                batchMessage = new BatchMessage();
                batchMessage = (BatchMessage)msg.Body;
                scheduledSms = new Common.ScheduledSms();
                lstReceivers = new List <string>();

                LogController <ServiceLogs> .LogInFile(ServiceLogs.APIProcessRequest, string.Format("\r\n-------------------------------------------------------------------------"));

                scheduledSms.ScheduledSmsGuid  = batchMessage.Guid;
                scheduledSms.PrivateNumberGuid = batchMessage.PrivateNumberGuid;
                scheduledSms.SmsText           = batchMessage.SmsText;
                scheduledSms.SmsLen            = batchMessage.SmsLen;
                scheduledSms.PresentType       = batchMessage.IsFlash ? (int)Messageclass.Flash : (int)Messageclass.Normal;
                scheduledSms.Encoding          = batchMessage.IsUnicode ? (int)Encoding.Utf8 : (int)Encoding.Default;
                scheduledSms.UserGuid          = batchMessage.UserGuid;
                scheduledSms.Status            = (int)ScheduledSmsStatus.Stored;
                scheduledSms.DateTimeFuture    = DateTime.Now;
                scheduledSms.TypeSend          = batchMessage.SmsSendType;

                LogController <ServiceLogs> .LogInFile(ServiceLogs.APIProcessRequest, string.Format(@"batchMessage.ServiceId : {0},ScheduledSmsGuid : {1},PrivateNumberGuid: {2}", batchMessage.ServiceId, scheduledSms.ScheduledSmsGuid, scheduledSms.PrivateNumberGuid));

                if (batchMessage.ServiceId == null)
                {
                    LogController <ServiceLogs> .LogInFile(ServiceLogs.APIProcessRequest, string.Format("batchMessage.sendernumber : {0},batchMessage.UserGuid:{1}", batchMessage.SenderNumber, batchMessage.UserGuid));

                    scheduledSms.PrivateNumberGuid = Facade.PrivateNumber.GetUserNumberGuid(batchMessage.SenderNumber, batchMessage.UserGuid);

                    LogController <ServiceLogs> .LogInFile(ServiceLogs.APIProcessRequest, string.Format("scheduledSms.PrivateNumberGuid : {0} SendType : {1}", scheduledSms.PrivateNumberGuid, (SmsSendType)batchMessage.SmsSendType));

                    if (batchMessage.SmsSendType == (int)SmsSendType.SendSmsFromAPI)
                    {
                        lstReceivers = batchMessage.Receivers.Select <InProgressSms, string>(receiver => receiver.RecipientNumber).DefaultIfEmpty().ToList();
                        if (Facade.ScheduledSms.InsertSms(scheduledSms, lstReceivers))
                        {
                            ReceiveMessageFromQueue(msg.Id);
                        }
                    }
                    else if (batchMessage.SmsSendType == (int)SmsSendType.SendGroupSmsFromAPI)
                    {
                        scheduledSms.ReferenceGuid = string.Join(",", batchMessage.ReferenceGuid);
                        if (Facade.ScheduledSms.InsertGroupSms(scheduledSms))
                        {
                            ReceiveMessageFromQueue(msg.Id);
                        }
                    }
                }
                else
                {
                    if (batchMessage.Receivers.Count > 0)
                    {
                        lstReceivers = batchMessage.Receivers.Select <InProgressSms, string>(receiver => receiver.RecipientNumber).ToList();
                        if (Facade.ScheduledSms.InsertSms(scheduledSms, lstReceivers))
                        {
                            ReceiveMessageFromQueue(msg.Id);
                        }
                    }
                    else
                    {
                        scheduledSms.ReferenceGuid = batchMessage.ReferenceGuid.ToString();
                        scheduledSms.TypeSend      = (int)SmsSendType.SendGroupSmsFromAPI;
                        if (Facade.ScheduledSms.InsertGroupSms(scheduledSms))
                        {
                            ReceiveMessageFromQueue(msg.Id);
                        }
                    }
                }
            }
        }
コード例 #5
0
ファイル: Batch.cs プロジェクト: fernandodsanjos/AtomAdapter
        // IBTBatchCallBack
        public void BatchComplete(Int32 hrStatus, Int16 nOpCount, BTBatchOperationStatus[] pOperationStatus, System.Object vCallbackCookie)
        {
            //BT.Trace.Tracer.TraceMessage(BT.TraceLevel.SegmentLifeTime, "CoreAdapter: Entering Batch.BatchComplete");

            if (0 != hrStatus)
            {
                //BT.Trace.Tracer.TraceMessage(BT.TraceLevel.Error, "CoreAdapter: Batch.BatchComplete hrStatus: {0}", hrStatus);
            }

            this.hrStatus = hrStatus;

            StartBatchComplete(hrStatus);

            //  nothing at all failed in this batch so we are done
            if (hrStatus < 0 || this.makeSuccessCall)
            {
                //BT.Trace.Tracer.TraceMessage(BT.TraceLevel.Info, "CoreAdapter: Batch.BatchComplete (hrStatus < 0 || this.makeSuccessCall)");

                StartProcessFailures();

                foreach (BTBatchOperationStatus status in pOperationStatus)
                {
                    //  is this the correct behavior?
                    if (status.Status >= 0 && !this.makeSuccessCall)
                    {
                        continue;
                    }

                    switch (status.OperationType)
                    {
                    case BatchOperationType.Submit:
                    {
                        for (int i = 0; i < status.MessageCount; i++)
                        {
                            BatchMessage batchMessage = null;
                            if (submitIsForSubmitResponse)
                            {
                                batchMessage = (BatchMessage)this.submitResponseMessageArray[i];
                            }
                            else
                            {
                                batchMessage = (BatchMessage)this.submitArray[i];
                            }

                            if (status.MessageStatus[i] < 0)
                            {
                                SubmitFailure(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                            else if (this.makeSuccessCall)
                            {
                                SubmitSuccess(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                        }
                        break;
                    }

                    case BatchOperationType.Delete:
                    {
                        for (int i = 0; i < status.MessageCount; i++)
                        {
                            BatchMessage batchMessage = (BatchMessage)this.deleteArray[i];
                            if (status.MessageStatus[i] < 0)
                            {
                                DeleteFailure(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                            else if (this.makeSuccessCall)
                            {
                                DeleteSuccess(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                        }
                        break;
                    }

                    case BatchOperationType.Resubmit:
                    {
                        for (int i = 0; i < status.MessageCount; i++)
                        {
                            BatchMessage batchMessage = (BatchMessage)this.resubmitArray[i];
                            if (status.MessageStatus[i] < 0)
                            {
                                ResubmitFailure(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                            else if (this.makeSuccessCall)
                            {
                                ResubmitSuccess(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                        }
                        break;
                    }

                    case BatchOperationType.MoveToSuspendQ:
                    {
                        for (int i = 0; i < status.MessageCount; i++)
                        {
                            BatchMessage batchMessage = (BatchMessage)this.moveToSuspendQArray[i];
                            if (status.MessageStatus[i] < 0)
                            {
                                MoveToSuspendQFailure(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                            else if (this.makeSuccessCall)
                            {
                                MoveToSuspendQSuccess(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                        }
                        break;
                    }

                    case BatchOperationType.MoveToNextTransport:
                    {
                        for (int i = 0; i < status.MessageCount; i++)
                        {
                            BatchMessage batchMessage = (BatchMessage)this.moveToNextTransportArray[i];
                            if (status.MessageStatus[i] < 0)
                            {
                                MoveToNextTransportFailure(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                            else if (this.makeSuccessCall)
                            {
                                MoveToNextTransportSuccess(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                        }
                        break;
                    }

                    case BatchOperationType.SubmitRequest:
                    {
                        for (int i = 0; i < status.MessageCount; i++)
                        {
                            BatchMessage batchMessage = (BatchMessage)this.submitRequestArray[i];
                            if (status.MessageStatus[i] < 0)
                            {
                                SubmitRequestFailure(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                            else if (this.makeSuccessCall)
                            {
                                SubmitRequestSuccess(batchMessage.message, status.MessageStatus[i], batchMessage.userData);
                            }
                        }
                        break;
                    }

                    case BatchOperationType.CancelRequestForResponse:
                    {
                        for (int i = 0; i < status.MessageCount; i++)
                        {
                            BatchMessage batchMessage = (BatchMessage)this.cancelResponseMessageArray[i];
                            if (status.MessageStatus[i] < 0)
                            {
                                CancelResponseMessageFailure(batchMessage.correlationToken, status.MessageStatus[i], batchMessage.userData);
                            }
                            else if (this.makeSuccessCall)
                            {
                                CancelResponseMessageSuccess(batchMessage.correlationToken, status.MessageStatus[i], batchMessage.userData);
                            }
                        }
                        break;
                    }
                    } // end switch
                }     // end foreach

                EndProcessFailures();
            } // end if

            EndBatchComplete();

            //BT.Trace.Tracer.TraceMessage(BT.TraceLevel.SegmentLifeTime, "CoreAdapter: Leaving Batch.BatchComplete");
        }
コード例 #6
0
        public void SendSms(BatchMessage batchMessage)
        {
            try
            {
                string          logFile = string.Format(@"{0}\{1}", ConfigurationManager.GetSetting("RecipientAddress"), batchMessage.Id);
                string          sendStatus = "", batchId = "", amount = "", chargingAmount = "";
                Cls_SMS.ClsSend sms_Batch = new Cls_SMS.ClsSend();
                ArrayList       ret2      = new ArrayList();
                try
                {
                    LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, " /" + batchMessage.Guid.ToString() + " / " + " receiver Count : " + batchMessage.Receivers.Select(reciever => reciever.RecipientNumber).Count()
                                                           + " SenderNumber : " + batchMessage.SenderNumber + " Username : "******" Password : "******" SendLink : " + batchMessage.SendLink + " Domain : " + batchMessage.Domain
                                                           + " IsFlash : " + batchMessage.IsFlash + " SmsText : " + batchMessage.SmsText);

                    ret2 = sms_Batch.SendSMS_Batch_Full(batchMessage.SmsText,
                                                        batchMessage.Receivers.Select(reciever => reciever.RecipientNumber).ToArray(),
                                                        batchMessage.SenderNumber,
                                                        batchMessage.Username,
                                                        batchMessage.Password,
                                                        batchMessage.SendLink,
                                                        batchMessage.Domain,
                                                        batchMessage.IsFlash,
                                                        ref sendStatus,
                                                        ref batchId,
                                                        ref amount,
                                                        ref chargingAmount);

                    LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, " /" + batchMessage.Guid.ToString() + " / " + " ret2 Count : " + ret2.Count + " sendStatus : " + sendStatus
                                                           + " batchId : " + batchId + " amount : " + amount + "\\ chargingAmount : " + chargingAmount);

                    try
                    {
                        LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, "Try : 1 | Date : " + DateTime.Now.ToString().Replace(':', '-') + " | Guid : " + batchMessage.Guid.ToString() + " | ret2 Count : " + ret2.Count + " | sendStatus : " + sendStatus
                                                               + " | batchId : " + batchId + " | amount : " + amount + "| chargingAmount : " + chargingAmount);
                    }
                    catch (Exception ex)
                    {
                        LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, "Error : " + ex.Message);
                    }

                    if (sendStatus.Contains("Uknown Error"))
                    {
                        ret2       = new ArrayList();
                        sendStatus = ""; batchId = ""; amount = ""; chargingAmount = "";
                        ret2       = sms_Batch.SendSMS_Batch_Full(batchMessage.SmsText,
                                                                  batchMessage.Receivers.Select(reciever => reciever.RecipientNumber).ToArray(),
                                                                  batchMessage.SenderNumber,
                                                                  batchMessage.Username,
                                                                  batchMessage.Password,
                                                                  batchMessage.SendLink,
                                                                  batchMessage.Domain,
                                                                  batchMessage.IsFlash,
                                                                  ref sendStatus,
                                                                  ref batchId,
                                                                  ref amount,
                                                                  ref chargingAmount);

                        LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, "Try 2 /" + batchMessage.Guid.ToString() + " / " + " ret2 Count : " + ret2.Count + " sendStatus : " + sendStatus
                                                               + " batchId : " + batchId + " amount : " + amount + "\\ chargingAmount : " + chargingAmount);

                        try
                        {
                            LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, "Try : 2 | Date : " + DateTime.Now.ToString().Replace(':', '-') + " | Guid : " + batchMessage.Guid.ToString() + " | ret2 Count : " + ret2.Count + " | sendStatus : " + sendStatus
                                                                   + " | batchId : " + batchId + " | amount : " + amount + "| chargingAmount : " + chargingAmount);
                        }
                        catch (Exception ex)
                        {
                            LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, "Error : " + ex.Message);
                        }

                        if (sendStatus.Contains("Uknown Error"))
                        {
                            ret2       = new ArrayList();
                            sendStatus = ""; batchId = ""; amount = ""; chargingAmount = "";
                            ret2       = sms_Batch.SendSMS_Batch_Full(batchMessage.SmsText,
                                                                      batchMessage.Receivers.Select(reciever => reciever.RecipientNumber).ToArray(),
                                                                      batchMessage.SenderNumber,
                                                                      batchMessage.Username,
                                                                      batchMessage.Password,
                                                                      batchMessage.SendLink,
                                                                      batchMessage.Domain,
                                                                      batchMessage.IsFlash,
                                                                      ref sendStatus,
                                                                      ref batchId,
                                                                      ref amount,
                                                                      ref chargingAmount);

                            LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, "Try 3 /" + batchMessage.Guid.ToString() + " / " + " ret2 Count : " + ret2.Count + " sendStatus : " + sendStatus
                                                                   + " batchId : " + batchId + " amount : " + amount + "\\ chargingAmount : " + chargingAmount);

                            try
                            {
                                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, "Try : 3 | Date : " + DateTime.Now.ToString().Replace(':', '-') + " | Guid : " + batchMessage.Guid.ToString() + " | ret2 Count : " + ret2.Count + " | sendStatus : " + sendStatus
                                                                       + " | batchId : " + batchId + " | amount : " + amount + "| chargingAmount : " + chargingAmount);
                            }
                            catch (Exception ex)
                            {
                                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, "Error : " + ex.Message);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    foreach (InProgressSms sms in batchMessage.Receivers)
                    {
                        sms.SendStatus     = (int)SendStatus.ErrorInSending;
                        sms.DeliveryStatus = (int)DeliveryStatus.NotSent;
                        sms.SendTryCount  += 1;
                    }

                    throw ex;
                }

                switch (sendStatus.ToLower())
                {
                case "true":
                case "check_ok":
                    // foreach (InProgressSms sms in batchMessage.Receivers)
                    // {
                    foreach (InProgressSms sms in batchMessage.Receivers)
                    {
                        sms.ReturnID       = batchId.Split('+')[1];
                        sms.SendStatus     = (int)SendStatus.Sent;
                        sms.DeliveryStatus = (int)DeliveryStatus.ReceivedByItc;
                    }
                    for (int i = 0; i < ret2.Count; i++)
                    {
                        CheckErrorSms((Cls_SMS.ClsSend.STC_SMSSend)ret2[i], batchMessage.Receivers.Where(_ => _.RecipientNumber == (ret2[i] as Cls_SMS.ClsSend.STC_SMSSend).DestAddress).FirstOrDefault(), batchId);
                    }
                    // }
                    break;

                case "false":
                case "check_error":
                    foreach (InProgressSms sms in batchMessage.Receivers)
                    {
                        sms.ReturnID       = batchId.Split('+')[1];
                        sms.SendStatus     = (int)SendStatus.ErrorInSending;
                        sms.DeliveryStatus = (int)DeliveryStatus.ErrorInSending;
                    }
                    for (int i = 0; i < ret2.Count; i++)
                    {
                        CheckErrorSms((Cls_SMS.ClsSend.STC_SMSSend)ret2[i], batchMessage.Receivers.Where(_ => _.RecipientNumber == (ret2[i] as Cls_SMS.ClsSend.STC_SMSSend).DestAddress).FirstOrDefault(), batchId);
                    }
                    break;

                default:
                    foreach (InProgressSms sms in batchMessage.Receivers)
                    {
                        sms.SendStatus     = (int)SendStatus.ErrorInSending;
                        sms.DeliveryStatus = (int)DeliveryStatus.NotSent;
                        sms.SendTryCount  += 1;
                    }
                    break;
                }

                LogController <ServiceLogs> .LogInFile(logFile,
                                                       string.Format("Id={0}Guid={1}Sms={2}Receivers={3}{4}",
                                                                     batchMessage.Id,
                                                                     batchMessage.Guid,
                                                                     batchMessage.SmsText,
                                                                     string.Join(";", batchMessage.Receivers.Select <InProgressSms, string>(sms => string.Format("{0}-{1}-{2}", sms.RecipientNumber, sms.ReturnID, batchMessage.PageNo))),
                                                                     Environment.NewLine));
            }
            catch (Exception ex)
            {
                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, string.Format("\r\n-------------------------------------------------------------------------"));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, string.Format("\r\n{0} : Message : {1}", "send sms method", ex.Message));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, string.Format("\r\n{0} : OutboxGuid : {1}", "send sms method", batchMessage.Guid.ToString()));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, string.Format("\r\n{0} : StackTrace : {1}", "send sms method", ex.StackTrace));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabRG, string.Format("\r\n-------------------------------------------------------------------------"));
            }
        }
コード例 #7
0
        /// <summary>
        /// 解析 公众号 群发消息
        /// </summary>
        /// <param name="jsonText"></param>
        /// <param name="encryp"></param>
        /// <returns></returns>
        protected List <BatchMessage> _ResolveBatchMessageFromJson(string jsonText, EncryptArgs encryp)
        {
            var    messages = new List <BatchMessage>();
            string biz      = encryp.biz;
            string uin      = encryp.uin;
            string key      = encryp.key;

            var root = JsonConvert.DeserializeObject <MsgRoot>(jsonText);

            var msgs = HandleHtmlCode(root.list);

            msgs.ForEach(m =>
            {
                var message = new BatchMessage()
                {
                    Author    = m.app_msg_ext_info.author,
                    Meaasgeid = m.comm_msg_info.id,
                    SendDate  = m.comm_msg_info.datetime.ToString(),
                    Type      = m.comm_msg_info.type.ToString()
                };

                switch (message.Type)
                {
                case "1":     //文字
                    message.Content = m.comm_msg_info.content;
                    break;

                case "3":     //图片
                    message.ImageUrl =
                        $"https://mp.weixin.qq.com/mp/getmediadata?biz={biz}&type=img&mode=small&msgid={message.Meaasgeid}&uin=uin&key={key}";
                    break;

                case "34":     //音频
                    message.PlayLength = m.voice_msg_ext_info.play_length;
                    message.FileId     = m.voice_msg_ext_info.fileid;
                    message.AudioSrc   =
                        $"https://mp.weixin.qq.com/mp/getmediadata?biz={biz}&type=voice&msgid={message.Meaasgeid}&uin={uin}&key={key}";
                    break;

                case "49":     //图文
                    message.ContentUrl = m.app_msg_ext_info.content_url.Contains("http://mp.weixin.qq.com")
                            ? m.app_msg_ext_info.content_url
                            : "http://mp.weixin.qq.com" + m.app_msg_ext_info.content_url;
                    message.Main          = 1;
                    message.Title         = m.app_msg_ext_info.title;
                    message.Digest        = m.app_msg_ext_info.digest;
                    message.FileId        = m.app_msg_ext_info.fileid;
                    message.SourceUrl     = m.app_msg_ext_info.source_url;
                    message.Cover         = m.app_msg_ext_info.cover;
                    message.Author        = m.app_msg_ext_info.author;
                    message.CopyrightStat = m.app_msg_ext_info.copyright_stat.ToString();
                    messages.Add(message);
                    if (m.app_msg_ext_info.is_multi == 1)     //源群发消息文章还包含多个副文章
                    {
                        var subMsgs = ParseSubArticle(m.app_msg_ext_info.multi_app_msg_item_list);
                        subMsgs.ForEach(subMsg => subMsg.SendDate = message.SendDate);
                        messages.AddRange(subMsgs);
                    }

                    break;

                case "62":     //视频
                    message.CdnVideoId = m.video_msg_ext_info.cdn_videoid;
                    message.Thumb      = m.video_msg_ext_info.thumb;
                    message.VideoSrc   =
                        $"https://mp.weixin.qq.com/mp/getcdnvideourl?biz={biz}&cdn_videoid={message.CdnVideoId}&thumb={message.Thumb}&uin=&key={key}";
                    break;
                }
            });


            // 删除搜狗本身携带的空数据,(type=49以及contentUrl为空的是无效数据)
            var finalMessages = messages.Where(msg => !(msg.Type == "49" &&
                                                        string.IsNullOrEmpty(msg.ContentUrl))).ToList();

            return(finalMessages);
        }
コード例 #8
0
        /// <summary>
        ///  Schedules a batch of SMS messages to be sent at the date time you specify
        /// </summary>
        /// <exception cref="IO.Swagger.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body">Message properties</param>
        /// <returns>Task of ApiResponse (ScheduledBatchResponse)</returns>
        public async System.Threading.Tasks.Task <ApiResponse <ScheduledBatchResponse> > ScheduleBatchAsyncWithHttpInfo(BatchMessage body)
        {
            // verify the required parameter 'body' is set
            if (body == null)
            {
                throw new ApiException(400, "Missing required parameter 'body' when calling BatchMessagesApi->ScheduleBatch");
            }

            var    localVarPath         = "/batch/schedule";
            var    localVarPathParams   = new Dictionary <String, String>();
            var    localVarQueryParams  = new List <KeyValuePair <String, String> >();
            var    localVarHeaderParams = new Dictionary <String, String>(this.Configuration.DefaultHeader);
            var    localVarFormParams   = new Dictionary <String, String>();
            var    localVarFileParams   = new Dictionary <String, FileParameter>();
            Object localVarPostBody     = null;

            // to determine the Content-Type header
            String[] localVarHttpContentTypes = new String[] {
                "application/json"
            };
            String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes);

            // to determine the Accept header
            String[] localVarHttpHeaderAccepts = new String[] {
                "application/json;charset=UTF-8"
            };
            String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts);

            if (localVarHttpHeaderAccept != null)
            {
                localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept);
            }

            if (body != null && body.GetType() != typeof(byte[]))
            {
                localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter
            }
            else
            {
                localVarPostBody = body; // byte array
            }
            // authentication (JWT) required
            if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("Authorization")))
            {
                localVarHeaderParams["Authorization"] = this.Configuration.GetApiKeyWithPrefix("Authorization");
            }

            // make the HTTP request
            IRestResponse localVarResponse = (IRestResponse)await this.Configuration.ApiClient.CallApiAsync(localVarPath,
                                                                                                            Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams,
                                                                                                            localVarPathParams, localVarHttpContentType);

            int localVarStatusCode = (int)localVarResponse.StatusCode;

            if (ExceptionFactory != null)
            {
                Exception exception = ExceptionFactory("ScheduleBatch", localVarResponse);
                if (exception != null)
                {
                    throw exception;
                }
            }

            return(new ApiResponse <ScheduledBatchResponse>(localVarStatusCode,
                                                            localVarResponse.Headers.ToDictionary(x => x.Name, x => string.Join(",", x.Value)),
                                                            (ScheduledBatchResponse)this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ScheduledBatchResponse))));
        }
コード例 #9
0
        public HttpResponseMessage SendViaURL([FromUri] GetSendSmsModel sms)
        {
            if (!ModelState.IsValid)
            {
                ResponseMessage rm = new ResponseMessage();
                rm.IsSuccessful = false;
                rm.StatusCode   = (int)ErrorCode.ValidationNotValid;
                foreach (ModelState modelState in ModelState.Values)
                {
                    foreach (ModelError error in modelState.Errors)
                    {
                        rm.Message += string.Format("{0}", error.ErrorMessage);
                    }
                }
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.ValidationNotValid, rm.Message);
            }

            if (sms.ReceiverList.Count == 0)
            {
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.ReceiversIsEmpty, Language.GetString("ReceiversIsEmpty"));
            }

            if ((200 / sms.SmsLen) < sms.ReceiverList.Count)
            {
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.ReceiverCountNotValid, Language.GetString("ReceiverCountNotValid"));
            }

            var principal = Thread.CurrentPrincipal;

            if (principal.Identity.IsAuthenticated)
            {
                Common.User userInfo = ((MyPrincipal)principal).UserDetails;

                BatchMessage batchMessage = new BatchMessage();
                batchMessage.UserGuid          = userInfo.UserGuid;
                batchMessage.Guid              = sms.BatchId;
                batchMessage.CheckId           = sms.CheckId.ToString();
                batchMessage.SmsText           = sms.SmsText;
                batchMessage.SmsLen            = sms.SmsLen;
                batchMessage.SenderNumber      = sms.SenderId;
                batchMessage.PrivateNumberGuid = Facade.PrivateNumber.GetUserNumberGuid(batchMessage.SenderNumber, batchMessage.UserGuid);
                batchMessage.Receivers         = sms.InProgressSmsList;
                batchMessage.IsUnicode         = sms.IsUnicode;
                batchMessage.IsFlash           = sms.IsFlash;
                batchMessage.ReferenceGuid     = null;
                batchMessage.SmsSendType       = (int)SmsSendType.SendSmsFromAPI;

                if (batchMessage.PrivateNumberGuid == Guid.Empty)
                {
                    throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.SenderIsInvalid, Language.GetString("SenderIsInvalid"));
                }

                string messageLabel = (batchMessage.SenderNumber == null ? batchMessage.Guid.ToString() : batchMessage.SenderNumber);
                if (int.Parse(ConfigurationManager.GetSetting("ActiveQ")) == 0)
                {
                    if (!ManageQueue.SendMessage(Queues.ApiSendMessage, batchMessage, messageLabel))
                    {
                        throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.InternalServerError, Language.GetString("InternalServerError"));
                    }
                }
                else if (int.Parse(ConfigurationManager.GetSetting("ActiveQ")) == 1)
                {
                    SaveToDB(batchMessage);
                }

                SendSmsResponse sendsms = new SendSmsResponse();
                sendsms.IsSuccessful = true;
                sendsms.BatchId      = batchMessage.Guid;

                return(Request.CreateResponse <SendSmsResponse>(HttpStatusCode.Created, sendsms));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.Accepted));
            }
        }
コード例 #10
0
        public HttpResponseMessage GetBulkMessages()
        {
            MessageQueue queue;
            BatchMessage batchMessage = new BatchMessage();
            BulkSmsModel bulkInfo     = new BulkSmsModel();

            string queuePath = string.Format(@".\private$\SocialNetworks-bulk");

            var principal = Thread.CurrentPrincipal;

            if (!principal.Identity.IsAuthenticated)
            {
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.AccountIsInvalid, Language.GetString("AccountIsInvalid"));
            }

            User userInfo = ((MyPrincipal)principal).UserDetails;

            if (!SecurityManager.HasServicePermission(userInfo.UserGuid, (int)Business.Services.GetBulkMessagesFromAPI))
            {
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.AccessDenied, Language.GetString("AccessDenied"));
            }

            if (!MessageQueue.Exists(queuePath))
            {
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.InternalServerError, Language.GetString("InternalServerError"));
            }

            queue           = new MessageQueue(queuePath);
            queue.Formatter = new BinaryMessageFormatter();

            BulkSmsResponse response = new BulkSmsResponse();

            response.IsSuccessful = true;

            var msgEnumerator = queue.GetMessageEnumerator2();

            while (msgEnumerator.MoveNext(new TimeSpan(0, 0, 1)))
            {
                using (var msg = msgEnumerator.Current)
                {
                    msg.Formatter = new BinaryMessageFormatter();
                    batchMessage  = (BatchMessage)msg.Body;

                    bulkInfo.Id         = batchMessage.Id;
                    bulkInfo.IsUnicode  = batchMessage.IsUnicode;
                    bulkInfo.SmsLen     = batchMessage.SmsLen;
                    bulkInfo.SmsText    = batchMessage.SmsText;
                    bulkInfo.TotalCount = batchMessage.TotalCount;
                    bulkInfo.Status     = SendStatus.IsBeingSent;
                    bulkInfo.Receivers  = string.Join(",", batchMessage.Receivers.Where(receiver => !Helper.GetBool(receiver.IsBlackList)).Select(receiver => receiver.RecipientNumber).ToList());

                    response.BulkInfo = bulkInfo;

                    Parallel.ForEach <InProgressSms>(batchMessage.Receivers, (receiver) =>
                    {
                        if (!Helper.GetBool(receiver.IsBlackList))
                        {
                            receiver.ReturnID       = random.Next().ToString();
                            receiver.SendStatus     = (int)SendStatus.Sent;
                            receiver.DeliveryStatus = (int)DeliveryStatus.SentToItc;
                            receiver.SendTryCount  += 1;
                        }
                        else
                        {
                            receiver.SendStatus     = (int)SendStatus.BlackList;
                            receiver.DeliveryStatus = (int)DeliveryStatus.BlackListTable;
                            receiver.SendTryCount  += 1;
                        }
                    });

                    SqlLibrary.ManageQueue.SendMessage(ConfigurationManager.GetSetting("SentMessageQueue"), batchMessage, string.Format("{0}-{1}", batchMessage.Id, batchMessage.PageNo));
                    queue.ReceiveById(msg.Id);
                    break;
                }
            }

            return(Request.CreateResponse <BulkSmsResponse>(HttpStatusCode.Accepted, response));
        }
コード例 #11
0
ファイル: Basic.cs プロジェクト: jeason0813/WeGouSharp
        /// <summary>
        /// 解析 公众号 群发消息
        /// </summary>
        /// <param name="text"></param>
        /// <param name="encryp"></param>
        /// <returns></returns>
        protected List <BatchMessage> _ResolveBatchMessageFromJson(string jsonText, EncryptArgs encryp)
        {
            List <BatchMessage> messages = new List <BatchMessage>();
            string biz = encryp.biz;
            string uin = encryp.uin;
            string key = encryp.key;

            JObject jo      = JObject.Parse(jsonText);//把json字符串转化为json对象
            JArray  msgList = (JArray)jo.GetValue("list");

            foreach (JObject msg in msgList)
            {
                BatchMessage aMessage    = new BatchMessage();
                JObject      commMsgInfo = (JObject)msg.GetValue("comm_msg_info");
                aMessage.Meaasgeid = (int)commMsgInfo.GetValue("id");
                aMessage.SendDate  = (string)commMsgInfo.GetValue("datetime");
                aMessage.Type      = (string)commMsgInfo.GetValue("type");
                switch (aMessage.Type)
                {
                case "1":     //文字
                    aMessage.Content = (string)commMsgInfo.GetValue("");
                    break;

                case "3":     //图片
                    aMessage.ImageUrl = "https://mp.weixin.qq.com/mp/getmediadata?__biz=" + biz + "&type=img&mode=small&msgid=" + aMessage.Meaasgeid + "&uin=" + uin + "&key=" + key;
                    break;

                case "34":     //音频
                    aMessage.PlayLength = (string)msg.SelectToken("voice_msg_ext_info.play_length");
                    aMessage.FileId     = (int)msg.SelectToken("voice_msg_ext_info.fileid");
                    aMessage.AudioSrc   = "https://mp.weixin.qq.com/mp/getmediadata?biz=" + biz + "&type=voice&msgid=" + aMessage.Meaasgeid + "&uin=" + uin + "&key=" + key;
                    break;

                case "49":     //图文
                    JObject AppMsgExtInfo = (JObject)msg.GetValue("app_msg_ext_info");
                    string  url           = (string)AppMsgExtInfo.GetValue("content_url");
                    if (!String.IsNullOrEmpty(url))
                    {
                        if (!url.Contains("http://mp.weixin.qq.com"))
                        {
                            url = "http://mp.weixin.qq.com" + url;
                        }
                    }
                    else
                    {
                        url = "";
                    }
                    aMessage.Main          = 1;
                    aMessage.Title         = (string)AppMsgExtInfo.GetValue("title");
                    aMessage.Digest        = (string)AppMsgExtInfo.GetValue("digest");
                    aMessage.FileId        = (int)AppMsgExtInfo.GetValue("fileid");
                    aMessage.ContentUrl    = url;
                    aMessage.SourceUrl     = (string)AppMsgExtInfo.GetValue("source_url");
                    aMessage.Cover         = (string)AppMsgExtInfo.GetValue("cover");
                    aMessage.Author        = (string)AppMsgExtInfo.GetValue("author");
                    aMessage.CopyrightStat = (string)AppMsgExtInfo.GetValue("copyright_stat");
                    messages.Add(aMessage);

                    if ((int)AppMsgExtInfo.GetValue("is_multi") == 1)
                    {
                        JArray       multi_app_msg_item_list = (JArray)AppMsgExtInfo.GetValue("multi_app_msg_item_list");
                        BatchMessage moreMessage             = new BatchMessage();
                        foreach (JObject subMsg in multi_app_msg_item_list)
                        {
                            url = (string)subMsg.GetValue("content_url");
                            if (!string.IsNullOrEmpty(url))
                            {
                                if (!url.Contains("http://mp.weixin.qq.com"))
                                {
                                    url = "http://mp.weixin.qq.com" + url;
                                }
                            }
                            else
                            {
                                url = "";
                            }

                            moreMessage.Title         = (string)subMsg.GetValue("title");
                            moreMessage.Digest        = (string)subMsg.GetValue("digest");
                            moreMessage.FileId        = (int)subMsg.GetValue("fileid");
                            moreMessage.ContentUrl    = url;
                            moreMessage.SourceUrl     = (string)subMsg.GetValue("source_url");
                            moreMessage.Cover         = (string)subMsg.GetValue("cover");
                            moreMessage.Author        = (string)subMsg.GetValue("author");
                            moreMessage.CopyrightStat = (string)subMsg.GetValue("copyright_stat");
                            messages.Add(moreMessage);
                        }
                    }
                    continue;

                case "62":     //视频
                    aMessage.CdnVideoId = (string)msg.SelectToken("video_msg_ext_info.cdn_videoid");
                    aMessage.Thumb      = (string)msg.SelectToken("video_msg_ext_info.thumb");
                    aMessage.VideoSrc   = "https://mp.weixin.qq.com/mp/getcdnvideourl?__biz=" + biz + "&cdn_videoid=" +
                                          aMessage.CdnVideoId + "&thumb=" + aMessage.Thumb + "&uin=" + "&key=" + key;
                    break;

                default:
                    break;
                }

                messages.Add(aMessage);
            }

            // 删除搜狗本身携带的空数据
            List <BatchMessage> FinalMessages = new List <BatchMessage>();

            foreach (var m in messages)
            {
                if (m.Type == "49" && string.IsNullOrEmpty(m.ContentUrl))
                {
                }
                else
                {
                    FinalMessages.Add(m);
                }
            }

            return(FinalMessages);
        }
コード例 #12
0
        public static bool InsertSentMessages(BatchMessage batch)
        {
            Business.OutboxNumber outboxNumberController = new Business.OutboxNumber();
            DataTable             dtMessages             = new DataTable();
            DataRow       row;
            List <string> lstSaveNumber = new List <string>();

            try
            {
                dtMessages.Columns.Add("OutboxGuid", typeof(Guid));
                dtMessages.Columns.Add("ItemId", typeof(string));
                dtMessages.Columns.Add("ToNumber", typeof(string));
                dtMessages.Columns.Add("DeliveryStatus", typeof(byte));
                dtMessages.Columns.Add("SendStatus", typeof(byte));
                dtMessages.Columns.Add("ReturnId", typeof(string));
                dtMessages.Columns.Add("CheckId", typeof(string));
                dtMessages.Columns.Add("SmsSenderAgentReference", typeof(byte));

                foreach (InProgressSms sms in batch.Receivers)
                {
                    LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveSentMessage,
                                                           string.Format("mobile:{0},returnId:{1},deliverystatus:{2},tryCount:{3},saveToDatabase:{4},typesend:{5}",
                                                                         sms.RecipientNumber, sms.ReturnID, sms.DeliveryStatus, sms.SendTryCount, sms.SaveToDatabase, batch.SmsSendType));

                    if (sms.SaveToDatabase)
                    {
                        continue;
                    }

                    if ((sms.DeliveryStatus == (int)DeliveryStatus.NotSent) && batch.SmsSendType != (int)SmsSendType.SendBulkSms && sms.SendTryCount <= 20)
                    {
                        sms.SaveToDatabase = false;
                        continue;
                    }
                    else if ((sms.DeliveryStatus == (int)DeliveryStatus.NotSent) && sms.SendTryCount < batch.MaximumTryCount)
                    {
                        sms.SaveToDatabase = false;
                        continue;
                    }

                    row = dtMessages.NewRow();

                    row["OutboxGuid"]              = batch.Guid;
                    row["ItemId"]                  = batch.PageNo;
                    row["ToNumber"]                = sms.RecipientNumber;
                    row["SendStatus"]              = Helper.GetByte((int)sms.SendStatus);
                    row["DeliveryStatus"]          = Helper.GetByte((int)sms.DeliveryStatus);
                    row["ReturnId"]                = sms.ReturnID;
                    row["CheckId"]                 = sms.CheckID;
                    row["SmsSenderAgentReference"] = Helper.GetByte((int)batch.SmsSenderAgentReference);
                    sms.SaveToDatabase             = true;
                    lstSaveNumber.Add(sms.RecipientNumber);

                    dtMessages.Rows.Add(row);

                    LogController <ServiceLogs> .LogInFile(ServiceLogs.SaveSentMessage,
                                                           string.Format("mobile:{0},returnId:{1},deliverystatus:{2},tryCount:{3},saveToDatabase:{4},typesend:{5}",
                                                                         sms.RecipientNumber, sms.ReturnID, sms.DeliveryStatus, sms.SendTryCount, sms.SaveToDatabase, batch.SmsSendType));
                }

                if (outboxNumberController.InsertSentMessages(dtMessages))
                {
                    batch.Receivers.RemoveAll(sms => sms.SaveToDatabase == true);
                    return(true);
                }
                else
                {
                    foreach (string receiver in lstSaveNumber)
                    {
                        batch.Receivers.Where(sms => sms.RecipientNumber == receiver).FirstOrDefault().SaveToDatabase = false;
                    }

                    return(false);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #13
0
        public void SendSms(BatchMessage batchMessage)
        {
            string logFile = string.Format(@"{0}\{1}", ConfigurationManager.GetSetting("RecipientAddress"), batchMessage.Id);

            try
            {
                Sms batch = new Sms();
                batch.CheckId   = Helper.GetGuid(batchMessage.CheckId);
                batch.Receivers = string.Join(",", batchMessage.Receivers.Select(sms => sms.RecipientNumber).ToArray());
                batch.SmsText   = batchMessage.SmsText;
                batch.IsFlash   = batchMessage.IsFlash;
                batch.SenderId  = batchMessage.SenderNumber;

                string dataToPost = CreateXML(batch);

                WebRequest request = WebRequest.Create("http://185.37.53.162:8080/Messages/Send");
                request.Method      = "POST";
                request.ContentType = "text/xml";
                byte[] byt = System.Text.Encoding.UTF8.GetBytes(batchMessage.Username + ":" + batchMessage.Password);
                request.Headers.Add("authorization", "Basic " + Convert.ToBase64String(byt));
                Stream       stream       = request.GetRequestStream();
                StreamWriter streamWriter = new StreamWriter(stream);
                streamWriter.Write(dataToPost);
                streamWriter.Flush();
                streamWriter.Close();
                stream.Close();

                WebResponse  response        = request.GetResponse();
                Stream       responseStream  = response.GetResponseStream();
                StreamReader objStreamReader = new StreamReader(responseStream);
                string       result          = objStreamReader.ReadToEnd();
                objStreamReader.Close();
                responseStream.Close();
                response.Close();

                ResponseMessage responseMessage = DeserializeXml(result);


                foreach (InProgressSms smsItem in batchMessage.Receivers)
                {
                    CheckErrorSms(responseMessage, smsItem);
                }

                LogController <ServiceLogs> .LogInFile(logFile,
                                                       string.Format("Id={0}batchGuid={1}Sms={2}Receivers={3}{4}",
                                                                     batchMessage.Id,
                                                                     batchMessage.Guid,
                                                                     batchMessage.SmsText,
                                                                     string.Join(";", batchMessage.Receivers.Select <InProgressSms, string>(sms => string.Format("{0}*{1}*{2}{3}", sms.RecipientNumber, sms.ReturnID, batchMessage.PageNo, Environment.NewLine))),
                                                                     Environment.NewLine));
            }
            catch (Exception ex)
            {
                foreach (InProgressSms smsItem in batchMessage.Receivers)
                {
                    CheckErrorSms(null, smsItem);
                }

                LogController <ServiceLogs> .LogInFile(ServiceLogs.Arad, string.Format("\r\n-------------------------------------------------------------------------"));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.Arad, string.Format("\r\n{0} : Message : {1}", "aradWebService.SendSms", ex.Message));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.Arad, string.Format("\r\n{0} : SmsSentGuid : {1}", "aradWebService.SendSms", batchMessage.Guid.ToString()));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.Arad, string.Format("\r\n-------------------------------------------------------------------------"));
            }
        }
コード例 #14
0
        public void SendSms(BatchMessage batchMessage)
        {
            var    responseData = string.Empty;
            string messageIDs   = string.Empty;
            int    counter      = 0;
            string logFile      = string.Format(@"{0}\{1}", ConfigurationManager.GetSetting("RecipientAddress"), batchMessage.Id);

            try
            {
                responseData = HttpGet(string.Format("{0}?{1}", batchMessage.SendLink,
                                                     string.Format(parameterPatern,
                                                                   batchMessage.Username,
                                                                   batchMessage.Password,
                                                                   batchMessage.SenderNumber,
                                                                   string.Join(";", batchMessage.Receivers.Select(receiver => receiver.RecipientNumber)),
                                                                   HttpUtility.UrlEncode(batchMessage.SmsText),
                                                                   batchMessage.IsUnicode)));

                LogController <ServiceLogs> .LogInFile(logFile, string.Format("responseData={0}", responseData));

                if (responseData.StartsWith("Send OK."))
                {
                    messageIDs = XDocument.Parse(responseData.Split('.')[1]).Element("ReturnIDs").Value;

                    List <string> lstMessageIDs = messageIDs.Trim().Split(';').ToList();
                    foreach (InProgressSms sms in batchMessage.Receivers)
                    {
                        sms.ReturnID        = lstMessageIDs[counter];
                        sms.DeliveryStatus  = (int)DeliveryStatus.SentToItc;
                        sms.DeliveryGetTime = DateTime.Now.AddMinutes(5);
                        sms.SendTryCount   += 1;
                        if (lstMessageIDs[counter] == "-1")
                        {
                            sms.SendStatus = (int)SendStatus.BlackList;
                        }
                        else if (!string.IsNullOrEmpty(sms.ReturnID))
                        {
                            sms.SendStatus = (int)SendStatus.Sent;
                        }
                        counter++;
                    }
                }
                else
                {
                    string responseMessage = responseData.StartsWith("<message>") ? XElement.Parse(responseData).Value : responseData;
                    foreach (InProgressSms smsItem in batchMessage.Receivers)
                    {
                        CheckErrorSms(responseMessage, smsItem);
                    }
                }

                LogController <ServiceLogs> .LogInFile(logFile,
                                                       string.Format("Id={0}Guid={1}Sms={2}Receivers={3}{4}",
                                                                     batchMessage.Id,
                                                                     batchMessage.Guid,
                                                                     batchMessage.SmsText,
                                                                     string.Join(";", batchMessage.Receivers.Select <InProgressSms, string>(sms => string.Format("{0}*{1}*{2}{3}", sms.RecipientNumber, sms.ReturnID, batchMessage.PageNo, Environment.NewLine))),
                                                                     Environment.NewLine));
            }
            catch (Exception ex)
            {
                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabPG, string.Format("\r\n-------------------------------------------------------------------------"));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabPG, string.Format("\r\n{0} : Message : {1}", "RahyabPGWebService.sendsms", ex.Message));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabPG, string.Format("\r\n{0} : SmsSentGuid : {1}", "RahyabPGWebService.sendsms", batchMessage.Guid));

                LogController <ServiceLogs> .LogInFile(ServiceLogs.RahyabPG, string.Format("\r\n-------------------------------------------------------------------------"));
            }
        }
コード例 #15
0
        /// <summary>
        ///  Schedules a batch of SMS messages to be sent at the date time you specify
        /// </summary>
        /// <exception cref="IO.Swagger.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body">Message properties</param>
        /// <returns>ScheduledBatchResponse</returns>
        public ScheduledBatchResponse ScheduleBatch(BatchMessage body)
        {
            ApiResponse <ScheduledBatchResponse> localVarResponse = ScheduleBatchWithHttpInfo(body);

            return(localVarResponse.Data);
        }
コード例 #16
0
        /// <summary>
        ///  Schedules a batch of SMS messages to be sent at the date time you specify
        /// </summary>
        /// <exception cref="IO.Swagger.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body">Message properties</param>
        /// <returns>Task of ScheduledBatchResponse</returns>
        public async System.Threading.Tasks.Task <ScheduledBatchResponse> ScheduleBatchAsync(BatchMessage body)
        {
            ApiResponse <ScheduledBatchResponse> localVarResponse = await ScheduleBatchAsyncWithHttpInfo(body);

            return(localVarResponse.Data);
        }
コード例 #17
0
 public void WhenConstructingShouldNotThrow()
 {
     var batchMessage = new BatchMessage(1, new Uri("http://post.com"), "payload");
     Assert.NotNull(batchMessage);
     Assert.Equal(1, batchMessage.ReynaId);
 }
コード例 #18
0
        /// <summary>
        ///  Send a single SMS message to multiple recipients
        /// </summary>
        /// <exception cref="IO.Swagger.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body">Message properties</param>
        /// <returns>BatchMessageResponse</returns>
        public BatchMessageResponse SendBatch(BatchMessage body)
        {
            ApiResponse <BatchMessageResponse> localVarResponse = SendBatchWithHttpInfo(body);

            return(localVarResponse.Data);
        }
コード例 #19
0
        public HttpResponseMessage Send(PostSendVASMessageModel vas)
        {
            if (!ModelState.IsValid)
            {
                ResponseMessage rm = new ResponseMessage();
                rm.IsSuccessful = false;
                rm.StatusCode   = (int)ErrorCode.ValidationNotValid;
                foreach (ModelState modelState in ModelState.Values)
                {
                    foreach (ModelError error in modelState.Errors)
                    {
                        rm.Message += string.Format("{0}", error.ErrorMessage);
                    }
                }
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.ValidationNotValid, rm.Message);
            }

            if (string.IsNullOrEmpty(vas.SenderId) || vas.PrivateNumberGuid == Guid.Empty)
            {
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.ServiceIdIsInvalid, Language.GetString("ServiceIdIsInvalid"));
            }

            if (vas.ReferenceGuid == Guid.Empty)
            {
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.ServiceIdIsInvalid, Language.GetString("ServiceIdIsInvalid"));
            }

            if (vas.InProgressSmsList.Count > 0)
            {
                if (Facade.PhoneBook.RecipientIsRegisteredToVasGroup(vas.GroupId, vas.Receiver) == Guid.Empty)
                {
                    throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.ServiceIdIsInvalid, Language.GetString("ServiceIdIsInvalid"));
                }
            }

            if (vas.InProgressSmsList.Count == 0 && !string.IsNullOrEmpty(vas.Receiver))
            {
                throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.ReceiversIsEmpty, Language.GetString("ReceiversIsEmpty"));
            }

            var principal = System.Threading.Thread.CurrentPrincipal;

            if (principal.Identity.IsAuthenticated)
            {
                Common.User userInfo = ((MyPrincipal)principal).UserDetails;

                BatchMessage batchMessage = new BatchMessage();
                batchMessage.UserGuid          = userInfo.UserGuid;
                batchMessage.Guid              = vas.BatchId;
                batchMessage.CheckId           = vas.CheckId.ToString();
                batchMessage.SmsText           = vas.SmsText;
                batchMessage.SmsLen            = vas.SmsLen;
                batchMessage.SenderNumber      = vas.SenderId;
                batchMessage.PrivateNumberGuid = vas.PrivateNumberGuid;
                batchMessage.ServiceId         = vas.ServiceId;
                batchMessage.Receivers         = vas.InProgressSmsList;
                batchMessage.IsUnicode         = vas.IsUnicode;
                batchMessage.ReferenceGuid     = new List <Guid>()
                {
                    vas.ReferenceGuid
                };
                batchMessage.SmsSendType = (int)Common.SmsSendType.SendSmsFromAPI;

                if (!ManageQueue.SendMessage(Queues.ApiSendMessage, batchMessage, batchMessage.SenderNumber))
                {
                    throw new BusinessException(HttpStatusCode.Accepted, ErrorCode.InternalServerError, Language.GetString("InternalServerError"));
                }

                SendSmsResponse sendsms = new SendSmsResponse();
                sendsms.IsSuccessful = true;
                sendsms.BatchId      = batchMessage.Guid;

                return(Request.CreateResponse <SendSmsResponse>(HttpStatusCode.Created, sendsms));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.Unauthorized));
            }
        }