sendTwilioMessage function

Future<void> sendTwilioMessage({
  1. required String accountSid,
  2. required String authToken,
  3. required String from,
  4. required String to,
  5. required String body,
  6. Client? client,
})

Envia uma mensagem via API do Twilio (SMS/WhatsApp). Usado pelos canais Twilio. Lança em erro HTTP (>=400).

Implementation

Future<void> sendTwilioMessage({
  required String accountSid,
  required String authToken,
  required String from,
  required String to,
  required String body,
  http.Client? client,
}) async {
  final c = client ?? http.Client();
  try {
    final auth = base64Encode(utf8.encode('$accountSid:$authToken'));
    final res = await c.post(
      Uri.parse(
        'https://api.twilio.com/2010-04-01/Accounts/$accountSid/Messages.json',
      ),
      headers: {'Authorization': 'Basic $auth'},
      body: {'From': from, 'To': to, 'Body': body},
    );
    if (res.statusCode >= 400) {
      throw Exception('Twilio ${res.statusCode}: ${res.body}');
    }
  } finally {
    if (client == null) c.close();
  }
}