using Microsoft.Extensions.Options; using Twilio; using Twilio.Rest.Api.V2010.Account; using YaleAccess.Models.Options; namespace YaleAccess.Services { public class SMSService(ILogger logger, IOptions twiloOptions) { public async Task SendCodeViaSMSAsync(string code, string phoneNumber) { // Create a Twilio client TwilioClient.Init(twiloOptions.Value.AccountSid, twiloOptions.Value.AuthToken); // Send the message var message = await MessageResource.CreateAsync( body: $"{twiloOptions.Value.Message} {code}", from: new Twilio.Types.PhoneNumber(twiloOptions.Value.FromNumber), to: new Twilio.Types.PhoneNumber(phoneNumber) ); // Log the message logger.LogInformation("SMS sent to {PhoneNumber} with message SID {MessageSid}.", phoneNumber, message.Sid); logger.LogDebug("SMS message: {MessageBody}", message.Body); } } }