Messaggi di testo semplice WhatsApp
Il testo semplice è il tipo di contenuto libero più elementare: un corpo senza allegati e un'anteprima opzionale per il primo link al suo interno.
Inviare un messaggio di testo
Imposta text.body:
const msg = await bird.whatsapp.send({
to: "+16505551234",
from: "+13124495648",
text: { body: "Your driver is 2 minutes away." },
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
from_="+13124495648",
text={"body": "Your driver is 2 minutes away."},
)
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)
}
msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "+16505551234",
From: "+13124495648",
Text: &bird.WhatsAppTextSend{Body: "Your driver is 2 minutes away."},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$text = (new WhatsAppMessageSendRequestText())
->setBody('Your driver is 2 minutes away.');
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13124495648',
text: $text,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--from +13124495648 \
--text 'Your driver is 2 minutes away.' \
--to +16505551234{
"name": "whatsapp_send",
"arguments": {
"from": "+13124495648",
"text": {
"body": "Your driver is 2 minutes away."
},
"to": "+16505551234"
}
}curl -X POST "https://us1.platform.bird.com/v1/whatsapp/messages" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+16505551234",
"from": "+13124495648",
"text": {
"body": "Your driver is 2 minutes away."
}
}'La forma completa aggiunge preview_url più i campi che qualsiasi invio in formato libero può includere:
Esempio di codice
{
"to": "+16505551234",
"from": "+13124495648",
"text": {
"body": "Your order shipped: https://example.com/track/A1B2C3",
"preview_url": true
},
"in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
"tags": [{ "name": "category", "value": "shipping" }],
"metadata": { "order_id": "A1B2C3" }
}from è obbligatorio in ogni messaggio di servizio: un numero di proprietà del tuo spazio di lavoro, non uno gestito da Bird. in_reply_to_message_id cita un messaggio precedente nella stessa conversazione; vedi Citare un messaggio per sapere con cosa viene confrontato e cosa può mancare.
Limiti
| Campo | Vincolo | Applicato da |
|---|---|---|
| body | Da 1 a 4096 caratteri | Bird, all'accettazione (422) |
| preview_url | booleano, predefinito false | N/A, informativo |
Un body composto solo da spazi supera la validazione minLength: 1 dello schema, ma Bird lo intercetta comunque: un body vuoto dopo il trimming viene rifiutato con 422 E15015 WhatsAppContentRequired. Un corpo oltre 4096 caratteri viene rifiutato con un semplice 422 e senza codice di catalogo dedicato.
Leggere un messaggio di testo in arrivo
Un messaggio di testo in arrivo contiene lo stesso campo text.body e nient'altro sul ramo. Vedi Ricevere messaggi di testo WhatsApp per la lettura completa in arrivo, il payload whatsapp.received e a cosa prestare attenzione.
Limiti e casi particolari
- La finestra di servizio clienti deve essere aperta. Il testo semplice è un messaggio di servizio, consegnabile solo con una finestra aperta; vedi la finestra di servizio clienti dell'hub.
- preview_url influisce solo sul primo link e solo su ciò che il client del destinatario visualizza. Il valore predefinito è false. Impostalo per mostrare l'anteprima del primo URL in body; un URL successivo nello stesso corpo non ne riceve mai una. Se il client del destinatario non riesce a recuperare un'anteprima per quel link, ritorna silenziosamente a un semplice link cliccabile. Nulla nella lettura indica se un'anteprima è stata effettivamente visualizzata.
- Il markdown WhatsApp è il rendering del client del destinatario di body, non fa parte del contratto API. Bird passa body senza modifiche; non valida, rimuove o codifica *bold*, _italic_, ~strikethrough~ o il monospace con triplo backtick. Se quei marcatori vengono visualizzati dipende interamente dal client che apre il messaggio.
- Un body in arrivo non è garantito essere non vuoto, nonostante quanto indicato dallo schema di lettura. Meta può segnalare un messaggio in arrivo come "text": {} o con un body vuoto, e Bird lo memorizza così com'è senza generare un segnaposto. Si tratta di un gap noto e aperto: non scrivere un consumer che si fidi del required: body dello schema in questo caso.
Prossimi passi
- Messaggi di servizio WhatsApp: la finestra di servizio clienti e il modello condiviso da ogni messaggio di servizio
- Invio di messaggi WhatsApp: l'envelope della richiesta, il modello 202 e i tentativi sicuri
- Messaggi interattivi: quando vuoi un tocco invece di una risposta digitata
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