using Twilio; using Twilio.Rest.Api.V2010.Account; using Twilio.Types; using eprintServer.Entities; namespace eprintServer.Services; public class TwilioService { public async Task SendOrderTrackingSmsAsync(OAuthSettings settings, string userPhone, string userName, long orderId, string trackingNumber) { if (string.IsNullOrWhiteSpace(settings.TwilioAccountSid) || string.IsNullOrWhiteSpace(settings.TwilioAuthToken) || string.IsNullOrWhiteSpace(settings.TwilioPhoneNumber)) { return; } if (string.IsNullOrWhiteSpace(userPhone)) return; TwilioClient.Init(settings.TwilioAccountSid, settings.TwilioAuthToken); // Map your template placeholders to real variables string trackingUrl = $"https://asyadexpress.com/tracking?awb={trackingNumber}"; string messageBody = settings.TwilioShippmentTemplate .Replace("{{1}}", userName) .Replace("{{2}}", orderId.ToString()) .Replace("{{3}}", trackingUrl) .Replace("{{4}}", trackingNumber); await MessageResource.CreateAsync( body: messageBody, from: new Twilio.Types.PhoneNumber(settings.TwilioPhoneNumber), to: new Twilio.Types.PhoneNumber(FormatPhoneNumber(userPhone)) ); } private string FormatPhoneNumber(string phone) { phone = phone.Trim(); return phone.StartsWith("+") ? phone : "+" + phone; } }