public void OnDeliveryReportReceived(DeliveryReportList deliveryReportList, RequestException e) { if (_onDeliveryReportReceived != null) { _onDeliveryReportReceived(deliveryReportList, e); } }
private void FireReportRetrieved(DeliveryReportList deliveryReportList, RequestException e) { for (int i = 0; i < this.smsMessagingImpl.DeliveryReportPullListeners.Count; i++) { smsMessagingImpl.DeliveryReportPullListeners[i].OnDeliveryReportReceived(deliveryReportList, e); } }
public static void Execute() { // Configure in the 'app.config' which Logger levels are enabled(all levels are enabled in the example) // Check http://logging.apache.org/log4net/release/manual/configuration.html for more informations about the log4net configuration XmlConfigurator.Configure(new FileInfo("OneApiExamples.exe.config")); // Initialize Configuration object Configuration configuration = new Configuration(System.Configuration.ConfigurationManager.AppSettings.Get("Username"), System.Configuration.ConfigurationManager.AppSettings.Get("Password")); // Initialize SMSClient using the Configuration object SMSClient smsClient = new SMSClient(configuration); // Send SMS smsClient.SmsMessagingClient.SendSMS(new SMSRequest(senderAddress, message, recipientAddress)); // Wait for 30 seconds to give enought time for the message to be delivered System.Threading.Thread.Sleep(30000); // Get 'Delivery Reports' DeliveryReportList deliveryReportList = smsClient.SmsMessagingClient.GetDeliveryReports(); Console.WriteLine(deliveryReportList); }
public void Case3() { string senderAddress = SendMessageRule.DefaultSenderAddress; string message = "message4"; var recipientAddress = new string[] { "+886921859698" }; string requestId = ""; var configuration = new Configuration("ENVOTIONS", "Envo6183"); // Initialize SMSClient using the Configuration object var SMSClient = new SMSClient(configuration); // Send SMS var result = SMSClient.SmsMessagingClient.SendSMS(new SMSRequest(senderAddress, message, recipientAddress)); requestId = result.ClientCorrelator; //requestId = "1430206446300481957"; // Wait for 30 seconds to give enought time for the message to be delivered System.Threading.Thread.Sleep(30000); // Get 'Delivery Reports' DeliveryReportList deliveryReportList = SMSClient.SmsMessagingClient.GetDeliveryReportsByRequestId(requestId); Console.WriteLine(deliveryReportList); }
public void Case1() { string userName = "******"; string password = "******"; string requestId = "1428275602020481488"; var configuration = new Configuration(userName, password); var SMSClient = new SMSClient(configuration); DeliveryReportList deliveryReportList = SMSClient.SmsMessagingClient.GetDeliveryReportsByRequestId(requestId); }
public void GetDeliveryReport(string requestId) { // (1) 根據 requestId (DeliveryReportQueue.ClientCorrelator) 查詢簡訊發送結果 // (2) 如果查得到結果(DeliveryReportList.DeliveryReports.Length != 0),則表示 SendMessageQueue 經由 Infobip 發送所有訊息的結果已經取得,可以進行以下步驟 // (3) 在 DeliveryReportQueue (待查詢簡訊發送結果序列) 刪除對應資料 // (4) 將 DeliveryReportList.DeliveryReports 塞入對應資料表 Infobip_DeliveryReport // (5) 出大表,SendMessageHistorys // (1) 根據 requestId (DeliveryReportQueue.ClientCorrelator) 查詢簡訊發送結果 DeliveryReportList deliveryReportList = this.smsClient.SmsMessagingClient.GetDeliveryReportsByRequestId(requestId); // (2) 如果查得到結果(DeliveryReportList.DeliveryReports.Length != 0),則表示 SendMessageQueue 經由 Infobip 發送所有訊息的結果已經取得,可以進行以下步驟 UpdateDb_GetDeliveryReport(requestId, deliveryReportList); }
public void Run(Object stateInfo) { if ((smsMessagingImpl.DeliveryReportPullListeners != null) && (smsMessagingImpl.DeliveryReportPullListeners.Count > 0)) { try { DeliveryReportList deliveryReportList = smsMessagingImpl.GetDeliveryReports(); if ((deliveryReportList != null) && (deliveryReportList.DeliveryReports != null) && (deliveryReportList.DeliveryReports.Length > 0)) { FireReportRetrieved(deliveryReportList, null); } } catch (RequestException e) { FireReportRetrieved(null, e); } } }
private void UpdateDb_GetDeliveryReport(string requestId, DeliveryReportList deliveryReportList) { if (deliveryReportList.DeliveryReports.Length == 0) { return; } this.logService.Debug("InfobipSmsProvider(smsProviderType = {0}),接收簡訊發送結果(簡訊發送識別碼:{1},發送結果:{2})", smsProviderType.ToString(), requestId, deliveryReportList.ToString()); // (3) 將 DeliveryReportList.DeliveryReports 塞入對應資料表 Infobip_DeliveryReport var sendMessageResultItemRepository = this.unitOfWork.Repository <Infobip_SendMessageResultItem>(); foreach (var deliveryReport in deliveryReportList.DeliveryReports) { /* * System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.Entity.Core.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_dbo.Infobip_DeliveryReport_dbo.Infobip_SendMessageResultItem_MessageId". The conflict occurred in database "EFunTechSms", table "dbo.Infobip_SendMessageResultItem", column 'MessageId'. * The statement has been terminated. */ if (!sendMessageResultItemRepository.Any(p => p.MessageId == deliveryReport.MessageId)) { this.logService.Error("取消建立 Infobip_DeliveryReport,因為 MessageId = {0} 不存在 Infobip_SendMessageResultItem", deliveryReport.MessageId); continue; } var entity = new Infobip_DeliveryReport(); entity.RequestId = requestId; entity.MessageId = deliveryReport.MessageId; entity.SentDate = deliveryReport.SentDate.ToUniversalTime(); // 已換轉換成UTC時間 entity.DoneDate = deliveryReport.DoneDate.ToUniversalTime(); // 已換轉換成UTC時間 entity.StatusString = deliveryReport.Status; DeliveryReportStatus Status = DeliveryReportStatus.Unknown; Enum.TryParse <DeliveryReportStatus>(deliveryReport.Status, out Status); entity.Status = Status; entity.Price = deliveryReport.Price; entity.CreatedTime = DateTime.UtcNow; entity = this.unitOfWork.Repository <Infobip_DeliveryReport>().Insert(entity); } Infobip_SendMessageResult infobip_SendMessageResult = this.unitOfWork.Repository <Infobip_SendMessageResult>().Get(p => p.ClientCorrelator == requestId); if (infobip_SendMessageResult == null) { throw new Exception(string.Format("InfobipSmsProvider(smsProviderType = {0}),無法取得 Infobip_SendMessageResult(ClientCorrelator:{1})", smsProviderType.ToString(), requestId)); } // (4) 如果所有派送結果都取回了,就在 DeliveryReportQueue (待查詢簡訊發送結果序列) 刪除對應資料 var deliveryReportQueueRepository = this.unitOfWork.Repository <DeliveryReportQueue>(); var deliveryReportQueue = deliveryReportQueueRepository.Get(p => p.RequestId == requestId && p.ProviderName == this.Name); if (deliveryReportQueue != null) { int SendMessageResultItemCount = infobip_SendMessageResult.SendMessageResults.Count; int DeliveryReportCount = this.unitOfWork.Repository <Infobip_DeliveryReport>().Count(p => p.RequestId == requestId); deliveryReportQueue.SendMessageResultItemCount = SendMessageResultItemCount; deliveryReportQueue.DeliveryReportCount = DeliveryReportCount; deliveryReportQueueRepository.Update(deliveryReportQueue); // 20151111 Norman, 暫時不刪除,用以除錯 //if (DeliveryReportCount >= SendMessageResultItemCount) //{ // deliveryReportQueueRepository.Delete(p => p.RequestId == requestId); //} } // (5) 出大表,SendMessageHistorys SourceTable sourceTable = infobip_SendMessageResult.SourceTable; switch (sourceTable) { case SourceTable.SendMessageQueue: int sendMessageQueueId = infobip_SendMessageResult.SourceTableId; UpdateSendMessageHistory(sendMessageQueueId); break; case SourceTable.SendMessageHistory: int sendMessageHistoryId = infobip_SendMessageResult.SourceTableId; UpdateSendMessageRetryHistory(sendMessageHistoryId); break; } }