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; } }
/// <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); }
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); } }