/// <summary> /// Sends SMS to the given number. /// </summary> /// <param name="phoneNumber">A string containing the phone number for sending SMS.</param> /// <param name="msgBody">A string containing message body text.</param> /// <param name="isUnicode">if true, message body contains unicode text; otherwise false.(Optional)</param> /// <returns>true if SMS is successfully sent; otherwise, false.</returns> public override void SendSms(string[] phoneNumber, string msgBody, bool isUnicode = false) { NexmoClient nexmoClient = new NexmoClient(_nexmoApiKey, _nexmoApiSecret); NexmoResponse smsResponse = nexmoClient.SendMessage(phoneNumber[0], NeeoConstants.AppName, msgBody, isUnicode); 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[0] + " 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 - Phone # : " + phoneNumber[0] + " Status : " + messageStatus.ToString() + ", Description : " + NexmoDictionaries.MessageStatusDescriptionDictionary[(short)messageStatus]); throw new ApplicationException(CustomHttpStatusCode.SmsApiException.ToString("D")); break; } }
/// <summary> /// Sends sms through primary sms service i.e Nexmo SMS Gateway. /// </summary> /// <param name="phoneNumber">A string containing the receiving phone number.</param> /// <param name="messageBody">A string containing the message body text.</param> /// <param name="enableBackupServiceSupport">A bool specifies whether backup service support is enabled or not.</param> public static void SendThroughPrimaryApi(string phoneNumber, string messageBody, bool enableBackupServiceSupport = false) { if (_nexmoApiKey == null) { _nexmoApiKey = ConfigurationManager.AppSettings[NeeoConstants.NexmoApiKey].ToString(); } if (_nexmoApiSecret == null) { _nexmoApiSecret = ConfigurationManager.AppSettings[NeeoConstants.NexmoApiSecret].ToString(); } NexmoClient nexmoClient = new NexmoClient(_nexmoApiKey, _nexmoApiSecret); NexmoResponse smsResponse = nexmoClient.SendMessage(phoneNumber, NeeoConstants.AppName, messageBody); 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]); if (enableBackupServiceSupport) { SendThroughSecondaryApi(phoneNumber, messageBody); } else { 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 - Phone # : " + phoneNumber + " Status : " + messageStatus.ToString() + ", Description : " + NexmoDictionaries.MessageStatusDescriptionDictionary[(short)messageStatus]); if (enableBackupServiceSupport) { SendThroughSecondaryApi(phoneNumber, messageBody); } else { throw new ApplicationException(CustomHttpStatusCode.SmsApiException.ToString("D")); } break; } }