public interface ITwilioClient: ITwilioRestClient
public Task SendSMSAsync(IList<string> phoneNumbers, string message);
Task<RoomResource> CreateRoomAsync();
public class TwilioClient : ITwilioClient
private readonly ITwilioRestClient _innerClient;
private readonly IConfiguration _configuration;
public TwilioClient(IConfiguration configuration, System.Net.Http.HttpClient httpClient)
_configuration = configuration;
httpClient.DefaultRequestHeaders.Add("X-Custom-Header", "ScripsTwilioClient");
_innerClient = new TwilioRestClient(
configuration["Twilio:AccountSid"],
configuration["Twilio:AuthToken"],
httpClient: new SystemNetHttpClient(httpClient));
public Response Request(Request request) => _innerClient.Request(request);
public Task<Response> RequestAsync(Request request) => _innerClient.RequestAsync(request);
public string AccountSid => _innerClient.AccountSid;
public string Region => _innerClient.Region;
public HttpClient HttpClient => _innerClient.HttpClient;
public async Task SendSMSAsync(IList<string> phoneNumbers, string message)
foreach (var phone in phoneNumbers)
to: new PhoneNumber(phone),
from: new PhoneNumber(_configuration["Twilio:PhoneNumber"]),
await Task.CompletedTask;
public async Task<RoomResource> CreateRoomAsync()
var roomName = DateTime.UtcNow.Ticks;
return await RoomResource.CreateAsync(uniqueName: roomName.ToString(), client: _innerClient);
public static IServiceCollection AddTwilio(this IServiceCollection services)
services.AddHttpClient<ITwilioClient, TwilioClient>();