SMS-templates
Een template is een herbruikbaar bericht dat je verstuurt via een referentie, waarbij je waarden opgeeft zoals een verificatiecode of ordernummer. De ingebouwde systeemtemplates van Bird dekken authenticatie- en transactieberichten. Werkruimte-templates maken is beschikbaar als API-preview; het dashboard toont voorlopig de ingebouwde catalogus.
Een template levert de berichtcategorie die wordt gebruikt voor nalevingscontroles op de bestemming. Ingebouwde templates selecteren ook de afzender voor de bestemming, zodat je from weglaat. Werkruimte-templates vereisen je eigen afzender, net als een vrije-tekstverzending.
Templates bekijken in het dashboard
De pagina Templates onder SMS toont de ingebouwde templates. Zoek op naam of filter op status en categorie.

Elke rij toont de velden die je nodig hebt om een template te kiezen en te versturen:
- Name: de weergavenaam van het template en zijn slug (bijvoorbeeld bird_order_confirmation). De slug is de handle die je meegeeft bij het versturen; deze staat vast vanaf het aanmaken.
- Status: ingebouwde templates zijn Active en klaar om te versturen. Werkruimte-templates zijn Draft totdat ze worden gepubliceerd en dan Active. Beschouw het gedeelde statusveld als een open set.
- Category: de inhoudsclassificatie (transactional, marketing of authentication) die wordt toegepast op berichten die vanuit het template worden verstuurd.
- Language: de talen waarin het template beschikbaar is, als BCP 47-tags. De eerste paar worden als chips getoond met een +N-overflow wanneer een template in veel talen is gelokaliseerd.
- Scope: System voor de ingebouwde templates van Bird. Workspace identificeert templates die je maakt via de API-preview.
- Updated: wanneer het template voor het laatst is gewijzigd. Ingebouwde templates tonen geen datum.
Wat zit er in een template
Naast naam, categorie en talen definieert elk template de variabelen die het invult bij verzending. Een variabele heeft een key, type, required-vlag en een leesbare constraint. Ingebouwde templates hebben getypeerde slots; werkruimte-templates leiden generieke text-slots af en accepteren scalaire parameterwaarden. Een sensitive-variabele wordt vervangen in de opgeslagen berichtinhoud. Transportwachtrijen bevatten nog steeds de tekst die nodig is voor aflevering. Geef elke vereiste variabele op en geen niet-gedeclareerde sleutels.
Een template is beschikbaar in een of meer talen, en de default_language is wat een verzending krijgt als er geen taal wordt opgegeven. Vraag je een taal aan waarin het template niet beschikbaar is, dan valt Bird terug: eerst naar een bredere vorm van dezelfde taal, daarna naar de standaardtaal, omdat SMS-templates on_missing_language standaard instellen op fallback. Ingebouwde templates gebruiken language_source_required: false. Werkruimte-templates kunnen een taal vereisen of on_missing_language: fail instellen; dat beleid gaat direct in, terwijl wijzigingen in inhoud en standaardtaal pas ingaan bij publicatie.
Templates opvragen via de API
GET /v1/sms/templates retourneert een cursor-gepagineerde pagina met templatesamenvattingen. Volg next_cursor via starting_after totdat deze null is; een pagina is niet de hele catalogus. Voor het lezen van templates heb je een API-sleutel nodig met het sms_management-bereik, dat los staat van het sms-bereik dat een verzending gebruikt. Filter op scope, category, status of language, of zoek met q:
for await (const tpl of bird.smsTemplates.list({ scope: "system" })) {
console.log(tpl.id, tpl.slug);
}for template in client.sms_templates.list(scope="system"):
print(template.id, template.slug)for tpl, err := range client.SmsTemplates.List(context.Background(), bird.SMSTemplateListParams{
Scope: "system",
}) {
if err != nil {
log.Fatal(err)
}
fmt.Println(tpl.Id, *tpl.Slug)
}foreach ($bird->smsTemplates->list(['scope' => 'system']) as $template) {
echo $template->getId(), ' ', $template->getSlug(), "\n";
}bird sms templates listcurl "https://eu1.platform.bird.com/v1/sms/templates?category=authentication" \
-H "Authorization: Bearer bk_eu1_..."Templatesamenvattingen bevatten identiteit, categorie, status, beschikbare talen en verwijzingen naar concept-/liveversies. Brontekst en variabelen ontbreken. Haal een template op via slug of ID met GET /v1/sms/templates/{template_ref}. Gebruik de draft_version_id om bewerkbare werkruimte-inhoud te inspecteren, of de live_version_id om te inspecteren wat verzendingen gebruiken. Een nieuw werkruimte-template heeft pas een liveversie na publicatie.
Lees de geselecteerde versie via GET /v1/sms/templates/{template_ref}/versions/{version_id}. Het antwoord bevat variabelen en een op taal georganiseerde inhoudsmap. Om één taal op te halen, voeg je /languages/{language} toe. Het language-filter van de lijst matcht gepubliceerde inhoud; talen die alleen als concept bestaan, matchen niet.
Ingebouwde templates hebben één alleen-lezenversie. Het stabiele ID identificeert de catalogusvermelding; de inhoudshash onderscheidt bronupdates. Gepubliceerde werkruimteversies bewaren een onveranderlijke geschiedenis. Versielijsten gebruiken ook cursorpaginering en laten brontekst weg.
Werkruimte-templates maken in API-preview
Gebruik een API-sleutel met sms_management-schrijftoegang. Stuur JSON-verzoeken naar de regionale API-host van je sleutel, met Authorization: Bearer <API_KEY> en Content-Type: application/json. Geef elke mutatie een eigen Idempotency-Key; hergebruik die sleutel alleen wanneer je hetzelfde verzoek opnieuw probeert.
- Maak het template aan met POST /v1/sms/templates en {"slug":"order-shipped","category":"transactional"}. Het 201-antwoord bevat id en draft_version_id; het template begint met een leeg Engels concept. Sla beide ID's op voor de volgende aanroepen.
- Sla tekst op met PUT /v1/sms/templates/{id}/versions/{draft_version_id}/languages/en en {"text":"Your order {{ order_number }} has shipped."}. Het 200-antwoord bevat draft_revision.
- Publiceer met POST /v1/sms/templates/{id}/versions/{draft_version_id}/submit en geef die revisie mee als {"expected_revision":1} (vervang 1 door de geretourneerde waarde). Een 200-antwoord met valid: true identificeert de gepubliceerde versie. Een 422 meldt ongeldige conceptinhoud; los de geretourneerde taalproblemen op en dien opnieuw in met een nieuwe idempotentiesleutel.
Publicatie vereist niet-lege tekst en dezelfde variabelen in elke taal. Het gaat synchroon in, zonder goedkeuring van de provider. De API ondersteunt ook preview, duplicatie, het terugzetten van het concept naar live-inhoud, en rollback naar een gepubliceerde versie. Bewerken via het dashboard is niet beschikbaar.
Lees de huidige revisie voordat je template-instellingen bijwerkt of een rollback uitvoert. Taalopslag kan ook een revisie-guard bevatten; een verlopen guard retourneert 409. Preview gebruikt de geselecteerde versie en parameters om gerenderde tekst, opgeloste taal, codering en segmentaantal te rapporteren vóór verzending.
Verzenden met een template
Stel het template-object van de verzending in in plaats van text. Laat category en media_urls weg. Voor het onderstaande ingebouwde template laat je ook from weg. Een werkruimte-template vereist from en moet een gepubliceerde versie hebben.
Een ingebouwd authenticatietemplate selecteert ook het gedeelde afzendermerk: bird_otp_verification_ttl gebruikt Authifly, terwijl bird_otp_verification_ttl_bird_verify Bird Verify gebruikt. De bestemming bepaalt of de afzender verschijnt als merknaam, shortcode of telefoonnummer.
Verstuur een ingebouwd template:
await bird.sms.send({
to: "+14155550100",
template: { slug: "bird_otp_verification", parameters: { code: "123456" } },
});client.sms.send(
to="+14155550100",
template="bird_otp_verification",
parameters={"code": "123456"},
)msg, err := client.Sms.Send(context.Background(), bird.SmsSendParams{
To: "+14155550100",
Template: "bird_otp_verification",
Parameters: map[string]any{"code": "123456"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id)$message = $bird->sms->send(
to: '+14155550100',
template: 'bird_otp_verification',
parameters: ['code' => '123456'],
);
echo $message->getId(), ' ', $message->getStatus();bird sms send \
--parameters '{"code":"123456"}' \
--template bird_otp_verification \
--to +14155550100curl -X POST "https://eu1.platform.bird.com/v1/sms/messages" \
-H "Authorization: Bearer bk_eu1_..." \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550100",
"template": {
"slug": "bird_otp_verification_ttl",
"language": "en",
"parameters": { "code": "481920", "ttl": "10" }
}
}'slug is de handle van het template uit de catalogus (je kunt een template ook identificeren via zijn id). language selecteert de gelokaliseerde tekst; laat het weg voor de standaardtaal van het template. parameters levert een waarde voor elk van de variabelen van het template, gesleuteld op variabelenaam. Een ontbrekende vereiste variabele, een niet-gedeclareerde sleutel, een waarde die niet overeenkomt met de beperking van de variabele, of een geserialiseerd parameters-object groter dan 16 KB wordt afgewezen met een 422.
Het 202-antwoord bevat de geselecteerde from, templatecategorie, template- en versie-ID's, bronhash, en aangevraagde/opgeloste talen. Authenticatieberichttekst wordt geretourneerd als **REDACTED**. Geaccepteerde berichten bewaren de gerenderde inhoud en geselecteerde versie, ook als je later publiceert, terugdraait of het template verwijdert.
Al het andere aan de verzending (de ontvanger, tags, metadata, de bestemmingsallowlist en het asynchrone 202-model) werkt precies zoals bij een vrije-tekstverzending.
Volgende stappen
- SMS versturen: voeg het template-veld toe aan een verzendpayload.
- SMS-log: zoek een verstuurd bericht en volg de levenscyclus.
- Events: ontvang de bezorggebeurtenissen van elk bericht.
- Een SMS verzenden met een template: een video die een van de vooraf goedgekeurde templates verstuurt vanuit een terminal
Gerelateerde bronnen
Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.
Gebruik de toolPreview message segmentsOntdek de mogelijkheidSMS content and templatesVolg het leerpadBuild your first integration
Probeer de oefening en ontvang een implementatieoverzicht