Skip to the content.

Webhooks

SMSBridge can parse incoming provider webhook payloads into a normalised SmsWebhookEvent.

Twilio, Vonage, and Plivo send flat form payloads and use Parse(...). Sinch and Telnyx send structured JSON payloads and use ParseJson(...).

Resolve a Parser

app.MapPost("/webhooks/twilio", async (HttpRequest request, SmsWebhookParserResolver resolver) =>
{
    var payload = await request.ReadFormAsync();
    var dict = payload.ToDictionary(kv => kv.Key, kv => kv.Value.ToString());
    var parser = resolver.Resolve(SmsProviderType.Twilio);
    var evt = parser.Parse(dict);

    // evt.Status, evt.MessageId, evt.To and delivery error metadata are normalised
    return Results.Ok(evt);
});

For a JSON callback:

app.MapPost("/webhooks/telnyx", async (
    HttpRequest request,
    SmsWebhookParserResolver resolver) =>
{
    using var reader = new StreamReader(request.Body);
    var json = await reader.ReadToEndAsync();
    var parser = resolver.Resolve(SmsProviderType.Telnyx);
    var evt = parser.ParseJson(json);

    return Results.Ok(evt);
});

Supported Webhook Providers

Provider Status
Twilio Supported
Vonage Supported
Plivo Supported
Sinch Supported
Telnyx Supported
MessageBird Planned

Planned