Template di autenticazione WhatsApp
Un template di autenticazione consegna un codice di verifica monouso. Meta ne fornisce il testo quando crei il template. Al momento dell'invio, indica il codice come parametro body.
Prima di inviare
Scegli se usare un template gestito da Bird o crearne uno sul tuo account business.
Inviare i template preconfigurati del catalogo di Bird, bird_otp e bird_otp_authifly, non richiede alcuna verifica da parte tua. Questi template risiedono sui WhatsApp Business Account di Bird, e il percorso di invio gestito non controlla mai lo stato di verifica della tua azienda.
Quando l'account business collegato riporta not_verified, Bird rifiuta la creazione o la duplicazione di template di autenticazione con 412 E15043 WhatsAppTemplateBusinessNotVerified. Controlla l'account collegato e il suo ultimo stato sincronizzato. Consulta Verifica business WhatsApp per il processo di verifica e la gestione degli stati.
La creazione di template utility e marketing non è soggetta a questo requisito: puoi continuare a crearli e modificarli indipendentemente dal tuo stato di verifica.
Crea i template nella dashboard, con la CLI di bird, oppure tramite il server MCP. Consulta Creazione di template WhatsApp per il flusso completo.
Inviare un codice di verifica
POST /v1/whatsapp/messages con un oggetto template che indica uno slug del catalogo:
const msg = await bird.whatsapp.send({
to: "+14155550100",
template: {
slug: "bird_otp",
language: "en",
components: [{ type: "body", parameters: [{ type: "text", text: "481920" }] }],
},
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+14155550100",
template="bird_otp",
language="en",
components=[{"type": "body", "parameters": [{"type": "text", "text": "481920"}]}],
)
print(msg.id, msg.status)package main
import (
"context"
"fmt"
"log"
"os"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey(os.Getenv("BIRD_API_KEY")))
if err != nil {
log.Fatal(err)
}
code := "481920"
components := []bird.WhatsAppMessageTemplateComponent{{
Type: "body",
Parameters: &[]bird.WhatsAppMessageTemplateComponentParameter{{Type: "text", Text: &code}},
}}
msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "+14155550100",
Template: "bird_otp",
Language: "en",
Components: components,
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$components = [
(new WhatsAppMessageTemplateComponent())
->setType('body')
->setParameters([
(new WhatsAppMessageTemplateComponentParameter())->setType('text')->setText('481920'),
]),
];
$message = $bird->whatsapp->send(
to: '+14155550100',
template: 'bird_otp',
language: 'en',
components: $components,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--components '[{"parameters":[{"text":"481920","type":"text"}],"type":"body"}]' \
--language en \
--template bird_otp \
--to +14155550100{
"name": "whatsapp_send",
"arguments": {
"template": {
"components": [
{
"parameters": [
{
"text": "481920",
"type": "text"
}
],
"type": "body"
}
],
"language": "en",
"slug": "bird_otp"
},
"to": "+14155550100"
}
}curl -X POST "https://us1.platform.bird.com/v1/whatsapp/messages" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550100",
"template": {
"slug": "bird_otp",
"language": "en",
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "481920"
}
]
}
]
}
}'Quattro regole sono specifiche di questa categoria:
- Ometti from. Un template gestito da Bird sceglie il proprio mittente in base alla categoria e alla regione, quindi impostare from restituisce 422 E15018 WhatsAppSenderNotAllowed. È l'opposto di un invio libero, che richiede from: vale la pena ricordarlo se arrivi dalle pagine sui messaggi interattivi.
- to deve essere un numero di telefono E.164. Un template di autenticazione non può essere inviato a un ID utente con ambito aziendale: restituisce 422 E15014 WhatsAppRecipientNotSupportedForTemplate.
- Il corpo accetta esattamente un parametro posizionale, il codice. Zero parametri, o un parametro con nome, restituisce 422 E15003 WhatsAppTemplateParameterMismatch. L'autenticazione è l'unica categoria in cui Meta usa parametri posizionali; tutte le altre usano parametri con nome.
- Non serve una finestra di assistenza clienti. Gli invii tramite template non richiedono una finestra aperta, ed è proprio il motivo per cui esiste un template per codici di verifica: deve raggiungere qualcuno che non ti ha mai scritto.
Leggi le lingue disponibili per bird_otp o bird_otp_authifly dal catalogo dei template. Se la lingua richiesta non è disponibile, l'invio fallisce anziché sostituirla con un'altra lingua.
Il pulsante copia codice
Meta scrive autonomamente il corpo di un template di autenticazione, come preset con un singolo segnaposto per il codice, quindi fornisci flag anziché testo. Il componente pulsante è facoltativo nell'invio: se non ne includi uno, Bird lo aggiunge per te, con lo stesso codice del corpo. Puoi anche fornirlo tu:
Esempio di codice
{ "type": "button", "parameters": [{ "type": "text", "text": "481920" }] }In entrambi i casi, esattamente un pulsante raggiunge WhatsApp, ed è il pulsante copia codice: toccandolo si copia il codice negli appunti. Bird supporta solo copy_code; gli altri due comportamenti che Meta documenta per i template di autenticazione, one-tap e zero-tap autofill, non sono disponibili su Bird.
La creazione del pulsante di un template segue la stessa struttura: un pulsante otp, e il template non accetta altri tipi di pulsante. Fornisci add_security_recommendation (un booleano mostrato nel corpo) e code_expiration_minutes (da 1 a 90, mostrato nel footer) anziché scrivere testo.
Cosa consente Meta in un template di autenticazione
Meta fissa la struttura di un template di autenticazione e ne rivede il contenuto: nessun URL, media o emoji in nessuna parte del template, e un limite di 15 caratteri per il parametro del codice. La categoria cambia anche il modo in cui WhatsApp consegna il messaggio, inviandolo solo al dispositivo principale del destinatario. Consulta Linee guida per i template per la struttura fissa, i limiti di caratteri e il processo di revisione completo.
Costi
Categoria e destinazione determinano il prezzo. Consulta Tariffe internazionali di autenticazione WhatsApp per capire come l'invio verso un paese diverso dalla tua sede principale possa modificarlo, e Costi e fatturazione per sapere quando un invio viene addebitato. I valori delle tariffe si trovano su Prezzi WhatsApp.
Aspetti da tenere d'occhio
- I template preconfigurati di Bird non consegnano verso nove paesi. bird_otp e bird_otp_authifly inviano dai WhatsApp Business Account di Bird, e quegli account non trasportano messaggi di autenticazione verso Egitto, India, Indonesia, Malesia, Nigeria, Pakistan, Arabia Saudita, Sudafrica o Emirati Arabi Uniti. Un invio di questo tipo viene rifiutato 422 E15063 WhatsAppDestinationRestricted prima che venga addebitato qualsiasi costo. Un template creato sul tuo account e inviato dal tuo numero raggiunge questi paesi normalmente. Verify li raggiunge ugualmente, spostando il codice di verifica su un altro canale in autonomia.
- Un invio con template creato da te richiede from, che deve trovarsi sullo stesso WhatsApp Business Account del template. Un mittente su un account diverso viene rifiutato 422 E15023 WhatsAppSenderWABAMismatch prima che venga addebitato qualsiasi costo.
- Solo una lingua la cui versione è approvata e attiva può essere inviata. Una lingua in bozza, in attesa, rifiutata o sospesa non può esserlo.
- Meta può ricategorizzare un template di propria iniziativa. Non è possibile rifiutare, e la modifica sposta le regole di prezzo e consegna legate alla categoria.
- La categoria del template e la categoria della sua lingua possono divergere. Consulta Template WhatsApp per capire come il percorso di invio risolve questa situazione.
- Un template di autenticazione importato non può essere duplicato. Bird non è in grado di rileggere il testo generato da WhatsApp per ricavarne le impostazioni da cui costruire un nuovo template: restituisce 422 E15024 WhatsAppTemplateContentNotDuplicable. Creane uno nuovo con la propria raccomandazione di sicurezza e la propria scadenza del codice.
Passaggi successivi
- Template WhatsApp: esplorazione del catalogo e contratto condiviso di invio tramite template
- Template utility: aggiornamenti sugli ordini, promemoria per appuntamenti e avvisi sull'account
- Verifica aziendale WhatsApp: come funziona la verifica e cos'altro sblocca
Risorse correlate
Prosegui con la documentazione, le guide e gli esempi per questo argomento. Le risorse sono in inglese.
Guarda la guidaConnecting WhatsApp to Bird: from buying a number to a live channelComprendi il concettoWhat is the 24-hour customer service window on WhatsApp?Usa lo strumentoWhatsApp message builderEsplora la funzionalitàWhatsApp
Prova l'esercitazione e ottieni un brief di implementazione