public void Send(libphonenumber.PhoneNumber toNumber, string message) { if (!toNumber.IsValidNumber) { _logger.LogMessage("Cannot send SMS for number {0}, phone number is {1})", toNumber.Format(libphonenumber.PhoneNumberUtil.PhoneNumberFormat.E164), toNumber.IsPossibleNumberWithReason.ToString()); return; } var accountSid = _serverSettings.ServerData.SMSAccountSid; var authToken = _serverSettings.ServerData.SMSAuthToken; var fromNumber = _serverSettings.ServerData.SMSFromNumber; if (!accountSid.HasValue() || !authToken.HasValue() || !fromNumber.HasValue()) { _logger.LogMessage("Cannot send SMS. Either one of those values are not set: SMSAccountSid, SMSAuthToken, SMSFromNumber"); return; } var twilio = new TwilioRestClient(accountSid, authToken); var response = twilio.SendMessage("+" + fromNumber, toNumber.Format(libphonenumber.PhoneNumberUtil.PhoneNumberFormat.E164), message);; if (response.RestException != null) { _logger.LogMessage("Error sending sms : " + response.RestException.ToJson()); throw new InvalidOperationException(response.RestException.Message); } }
public void when_sending_confirmation_sms() { const string phoneNumber = "5145555555"; const string activationCode = "12345"; _sut.When(new SendAccountConfirmationSMS { ClientLanguageCode = "fr", CountryCode = CountryCode.GetCountryCodeByIndex(CountryCode.GetCountryCodeIndexByCountryISOCode("CA")).CountryISOCode, Code = activationCode, PhoneNumber = phoneNumber }); var toPhoneNumber = new libphonenumber.PhoneNumber { CountryCode = CountryCode.GetCountryCodeByIndex(CountryCode.GetCountryCodeIndexByCountryISOCode("CA")).CountryDialCode, NationalNumber = long.Parse(phoneNumber) }; _smsSenderMock.Verify(s => s.Send( It.Is <libphonenumber.PhoneNumber>(x => x.CountryCode == toPhoneNumber.CountryCode && x.NationalNumber == toPhoneNumber.NationalNumber), It.Is <string>(message => message.Contains(activationCode)))); }