Exemple #1
0
        public async Task SetupClient()
        {
            if (!Initialized)
            {
                TwilioData config = await TwilioConfigDataProvider.GetConfigAsync();

                if (!config.IsConfigured())
                {
                    throw new Error(this.__ResStr("notConfigured", "Twilio is not configured."));
                }
                string acctSid = null, acctToken = null;
                if (config.TestMode)
                {
                    acctSid   = config.TestAccountSid;
                    acctToken = config.TestAuthToken;
                }
                else
                {
                    acctSid   = config.LiveAccountSid;
                    acctToken = config.LiveAuthToken;
                }
                TwilioClient.Init(acctSid, acctToken);
                Initialized = true;
            }
        }
Exemple #2
0
        /// <summary>
        /// Returns whether the SMS provider is in test mode.
        /// </summary>
        /// <returns>True if it is in test mode, false otherwise.</returns>
        public async Task <bool> IsTestModeAsync()
        {
            if (!await IsAvailableAsync())
            {
                throw new InternalError("SMS processing not available");
            }
            TwilioData config = await TwilioConfigDataProvider.GetConfigAsync();

            return(config.TestMode);
        }
Exemple #3
0
        public async Task SendSMSAsync(string toNumber, string text, string FromNumber)
        {
            TwilioData config = await TwilioConfigDataProvider.GetConfigAsync();

            string accountSid = config.TestMode ? config.TestAccountSid : config.LiveAccountSid;
            string authToken  = config.TestMode ? config.TestAuthToken : config.LiveAuthToken;
            string fromNumber = config.TestMode ? config.TestSMSNumber : config.LiveSMSNumber;

            if (!string.IsNullOrWhiteSpace(FromNumber))
            {
                fromNumber = FromNumber;
            }
            fromNumber = PhoneNumberNationalAttribute.GetE164(fromNumber);
            if (fromNumber == null)
            {
                throw new InternalError($"Invalid fromNumber {fromNumber} - {nameof(SendSMSAsync)}");
            }
            toNumber = PhoneNumberNationalAttribute.GetE164(toNumber);
            if (toNumber == null)
            {
                throw new InternalError($"Invalid toNumber {toNumber} - {nameof(SendSMSAsync)}");
            }
            string callbackUrl = null;

            if (config.DeliveryReceipts)
            {
                callbackUrl = YetaWFManager.Manager.CurrentSite.MakeUrl(
                    Utility.UrlFor(typeof(TwilioResponseController), nameof(TwilioResponseController.Response), new { ValidateToNumber = toNumber }),
                    PagePageSecurity: config.UseHttps?YetaWF.Core.Pages.PageDefinition.PageSecurityType.httpsOnly: YetaWF.Core.Pages.PageDefinition.PageSecurityType.httpOnly
                    );
            }

            TwilioClient.Init(accountSid, authToken);
            MessageResource m = MessageResource.Create(
                from: fromNumber, // From number, must be an SMS-enabled Twilio number
                to: toNumber,
                body: text,
                statusCallback: callbackUrl != null ? new Uri(callbackUrl) : null
                );

            if (m.ErrorCode != null)
            {
                Logging.AddErrorLog("TwilioProcessor SendSMS failed: {0} {1} - {2} - {3}", fromNumber, toNumber, m.ErrorCode, m.ErrorMessage);
            }
            else
            {
                Logging.AddLog("TwilioProcessor SendSMS queued: {0} {1}", fromNumber, toNumber);
            }
        }