示例#1
0
        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))));
        }