Template SMS
Un template è un messaggio riutilizzabile che invii per riferimento, fornendo valori come un codice di verifica usa e getta o un numero d'ordine. I template di sistema integrati di Bird coprono messaggi di autenticazione e transazionali. La creazione di template nello spazio di lavoro è in anteprima API; la dashboard continua a mostrare il catalogo integrato.
Un template fornisce la categoria del messaggio usata per i controlli di conformità della destinazione. I template integrati selezionano anche il mittente per la destinazione, quindi puoi omettere from. I template dello spazio di lavoro richiedono un mittente proprio, come avviene per un invio in testo libero.
Sfogliare i template nella dashboard
La pagina Templates sotto SMS elenca i template integrati. Cerca per nome oppure filtra per stato e categoria.

Ogni riga mostra i campi necessari per scegliere e inviare un template:
- Name: il nome visualizzato del template e il suo slug (ad esempio bird_order_confirmation). Lo slug è l'identificativo che passi nell'invio; è fisso dalla creazione.
- Status: i template integrati sono Active e pronti per l'invio. I template dello spazio di lavoro sono Draft fino alla pubblicazione, poi diventano Active. Considera il campo di stato condiviso come un insieme aperto.
- Category: la classificazione del contenuto (transactional, marketing o authentication) applicata ai messaggi inviati dal template.
- Language: le lingue in cui il template è disponibile, come tag BCP 47. Le prime vengono mostrate come chip con un overflow +N quando un template è localizzato in molte lingue.
- Scope: System per i template integrati di Bird. Workspace identifica i template che crei tramite l'anteprima API.
- Updated: data dell'ultima modifica del template. I template integrati non mostrano alcuna data.
Contenuto di un template
Oltre a nome, categoria e lingue, ogni template definisce le variabili che compila al momento dell'invio. Una variabile ha un key, un type, un flag required e una constraint leggibile. I template integrati hanno slot tipizzati; i template dello spazio di lavoro inferiscono slot generici text e accettano valori scalari come parametri. Una variabile sensitive viene sostituita nel contenuto del messaggio memorizzato. Le code di trasporto trasportano comunque il testo necessario alla consegna. Fornisci ogni variabile obbligatoria e nessuna chiave non dichiarata.
Un template è disponibile in una o più lingue e il suo default_language è ciò che un invio ottiene quando non ne specifica nessuna. Se chiedi una lingua in cui il template non è disponibile, Bird esegue un fallback: prima verso una forma più ampia della stessa lingua, poi verso la lingua predefinita, perché i template SMS impostano on_missing_language su fallback per default. I template integrati usano language_source_required: false. I template dello spazio di lavoro possono richiedere una lingua o impostare on_missing_language: fail; queste policy hanno effetto immediato, mentre le modifiche al contenuto e alla lingua predefinita hanno effetto alla pubblicazione.
Elencare i template dalla API
GET /v1/sms/templates restituisce una pagina di riepiloghi template con paginazione a cursore. Segui next_cursor usando starting_after finché non è null; una pagina non è l'intero catalogo. La lettura dei template richiede una chiave API con lo scope sms_management, separato dallo scope sms usato per l'invio. Filtra per scope, category, status o language, oppure cerca con 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_..."I riepiloghi dei template contengono identità, categoria, stato, lingue disponibili e riferimenti alle versioni bozza/live. Non includono testo sorgente e variabili. Recupera un template per slug o ID con GET /v1/sms/templates/{template_ref}. Usa il suo draft_version_id per ispezionare il contenuto modificabile dello spazio di lavoro, o il suo live_version_id per ispezionare ciò che viene usato negli invii. Un nuovo template dello spazio di lavoro non ha una versione live fino alla pubblicazione.
Leggi la versione selezionata tramite GET /v1/sms/templates/{template_ref}/versions/{version_id}. La risposta contiene le variabili e una mappa dei contenuti indicizzata per lingua. Per recuperare una sola lingua, aggiungi /languages/{language}. Il filtro language della lista corrisponde al contenuto pubblicato; le lingue presenti solo in bozza non corrispondono.
I template integrati espongono un'unica versione in sola lettura. Il suo ID stabile identifica la voce di catalogo; il suo hash del contenuto distingue gli aggiornamenti del sorgente. Le versioni pubblicate dello spazio di lavoro conservano una cronologia immutabile. Anche gli elenchi di versioni usano la paginazione a cursore e omettono il testo sorgente.
Creazione di template nello spazio di lavoro in anteprima API
Usa una chiave API con accesso in scrittura sms_management. Invia richieste JSON all'host regionale API della tua chiave, con Authorization: Bearer <API_KEY> e Content-Type: application/json. Assegna a ogni mutazione il proprio Idempotency-Key; riutilizza quella chiave solo quando riprovi la stessa richiesta.
- Crea il template con POST /v1/sms/templates e {"slug":"order-shipped","category":"transactional"}. La risposta 201 contiene id e draft_version_id; il template inizia con una bozza vuota in inglese. Salva entrambi gli ID per le chiamate successive.
- Salva il testo con PUT /v1/sms/templates/{id}/versions/{draft_version_id}/languages/en e {"text":"Your order {{ order_number }} has shipped."}. La risposta 200 include draft_revision.
- Pubblica con POST /v1/sms/templates/{id}/versions/{draft_version_id}/submit, passando quella revisione come {"expected_revision":1} (sostituisci 1 con il valore restituito). Una risposta 200 con valid: true identifica la versione pubblicata. Una risposta 422 segnala contenuto in bozza non valido; correggi i problemi di lingua restituiti e invia di nuovo con una nuova chiave di idempotenza.
La pubblicazione richiede testo non vuoto e le stesse variabili in ogni lingua. Ha effetto in modo sincrono, senza approvazione del provider. API supporta anche anteprima, duplicazione, ripristino della bozza al contenuto live e rollback a una versione pubblicata. La modifica dalla dashboard non è disponibile.
Leggi la revisione corrente prima di aggiornare le impostazioni del template o eseguire un rollback. I salvataggi delle lingue possono includere anche un guard di revisione; un guard obsoleto restituisce 409. L'anteprima usa la versione e i parametri selezionati per riportare testo renderizzato, lingua risolta, codifica e conteggio dei segmenti prima dell'invio.
Invio con un template
Imposta l'oggetto template dell'invio al posto di text. Ometti category e media_urls. Per il template integrato qui sotto, ometti anche from. Un template dello spazio di lavoro richiede from e deve avere una versione pubblicata.
Un template integrato di autenticazione seleziona anche il brand del mittente condiviso: bird_otp_verification_ttl usa Authifly, mentre bird_otp_verification_ttl_bird_verify usa Bird Verify. La destinazione determina se il mittente appare come nome del brand, short code o numero di telefono.
Invia un template integrato:
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 è l'handle del template nel catalogo (puoi identificare un template tramite il suo id in alternativa). language seleziona il corpo localizzato; omettilo per la lingua predefinita del template. parameters fornisce un valore per ciascuna variabile del template, indicizzato per nome della variabile. Una variabile obbligatoria mancante, una chiave non dichiarata, un valore che non rispetta il vincolo della variabile o un oggetto parameters superiore a 16 KB serializzato viene rifiutato con un 422.
La risposta 202 include il from selezionato, la categoria del template, gli ID di template e versione, l'hash del sorgente e le lingue richieste/risolte. Il testo dei messaggi di autenticazione viene restituito come **REDACTED**. I messaggi accettati conservano il contenuto renderizzato e la versione selezionata anche se in seguito pubblichi, esegui un rollback o elimini il template.
Tutto il resto dell'invio (il destinatario, i tag, i metadati, la lista di destinazioni consentite e il modello asincrono 202) funziona esattamente come per un invio in testo libero.
Passaggi successivi
- Invio di SMS: aggiungi il campo template al payload di invio.
- Log SMS: trova un messaggio inviato e segui il suo ciclo di vita.
- Eventi: ricevi gli eventi di consegna di ogni messaggio.
- Inviare un SMS con un template: un video che invia uno dei template pre-approvati da un terminale
Risorse correlate
Prosegui con la documentazione, le guide e gli esempi per questo argomento. Le risorse sono in inglese.
Usa lo strumentoPreview message segmentsEsplora la funzionalitàSMS content and templatesSegui il percorso di apprendimentoBuild your first integration
Prova l'esercitazione e ottieni un brief di implementazione