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); } }
public async Task <ActionResult> AddPhoneNumber(string data, string fieldPrefix, string newPhoneNumber, bool sms) { List <ListOfPhoneNumbersEditComponent.Entry> list = Utility.JsonDeserialize <List <ListOfPhoneNumbersEditComponent.Entry> >(data); string phoneNumber = PhoneNumberNationalAttribute.GetE164(newPhoneNumber); if (string.IsNullOrWhiteSpace(phoneNumber)) { throw new Error(this.__ResStr("invPhone", "Phone number {0} is not a valid phone number", newPhoneNumber)); } if ((from l in list where l.PhoneNumber == phoneNumber select l).FirstOrDefault() != null) { throw new Error(this.__ResStr("dupPhone", "Phone number {0} has already been added", newPhoneNumber)); } ListOfPhoneNumbersEditComponent.Entry entry = new ListOfPhoneNumbersEditComponent.Entry(phoneNumber, sms); return(await GridRecordViewAsync(await ListOfPhoneNumbersEditComponent.GridRecordAsync(fieldPrefix, entry))); }
public async Task <bool> AddItemAsync(ExtensionEntry data) { data.Created = DateTime.UtcNow; foreach (ExtensionPhoneNumber ext in data.PhoneNumbers) { ext.PhoneNumber = PhoneNumberNationalAttribute.GetE164(ext.PhoneNumber);// standardize } if (!await DataProvider.AddAsync(data)) { return(false); } await Auditing.AddAuditAsync($"{nameof(ExtensionEntryDataProvider)}.{nameof(AddItemAsync)}", Dataset, Guid.Empty, $"Add Extension Entry {data.Id}", DataBefore : null, DataAfter : data ); return(true); }
public async Task <UpdateStatusEnum> UpdateItemAsync(ExtensionEntry data) { ExtensionEntry origData = Auditing.Active ? await GetItemByIdentityAsync(data.Id) : null; data.Updated = DateTime.UtcNow; foreach (ExtensionPhoneNumber ext in data.PhoneNumbers) { ext.PhoneNumber = PhoneNumberNationalAttribute.GetE164(ext.PhoneNumber);// standardize } UpdateStatusEnum status = await DataProvider.UpdateByIdentityAsync(data.Id, data); if (status != UpdateStatusEnum.OK) { return(status); } await Auditing.AddAuditAsync($"{nameof(ExtensionEntryDataProvider)}.{nameof(UpdateItemAsync)}", Dataset, Guid.Empty, $"Update Extension Entry {data.Id}", DataBefore : origData, DataAfter : data ); return(UpdateStatusEnum.OK); }