Messages texte WhatsApp
Le texte brut est le type de contenu libre le plus simple : un corps sans pièce jointe, et un aperçu facultatif pour le premier lien qu'il contient.
Envoyer un message texte
Définissez 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 structure complète ajoute preview_url ainsi que les champs que tout envoi libre peut contenir :
Exemple de code
{
"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 est requis sur chaque message de service : un numéro appartenant à votre espace de travail, et non un numéro géré par Bird. in_reply_to_message_id cite un message antérieur dans la même conversation ; consultez Citer un message pour savoir ce qu'il résout et ce qu'il peut manquer.
Limites
| Champ | Limite | Appliquée par |
|---|---|---|
| body | 1 à 4 096 caractères | Bird, à l'acceptation (422) |
| preview_url | booléen, par défaut false | N/A, informatif |
Un body composé uniquement d'espaces passe la validation minLength: 1 du schéma, mais Bird le détecte quand même : un body vide après suppression des espaces est refusé avec 422 E15015 WhatsAppContentRequired. Un corps dépassant 4 096 caractères est refusé avec une simple 422 et aucun code de catalogue dédié.
Lire un message texte entrant
Un message texte entrant contient le même champ text.body, et rien d'autre sur cette branche. Consultez Recevoir des messages texte WhatsApp pour la lecture entrante complète, le payload whatsapp.received, et les points à surveiller.
Limites et cas particuliers
- La fenêtre de service client doit être ouverte. Le texte brut est un message de service, livrable uniquement dans une fenêtre ouverte ; consultez la fenêtre de service client du hub.
- preview_url n'affecte que le premier lien, et uniquement ce que le client du destinataire affiche. Sa valeur par défaut est false. Activez-le pour afficher un aperçu de la première URL dans body ; une URL ultérieure dans le même corps n'en reçoit jamais. Si le client du destinataire ne peut pas récupérer d'aperçu pour ce lien, il revient silencieusement à un lien cliquable simple. Rien à la lecture ne vous indique si un aperçu a réellement été affiché.
- Le markdown WhatsApp est un rendu du client du destinataire pour body, pas une partie du contrat API. Bird transmet body tel quel ; il ne valide, ne supprime ni n'encode *bold*, _italic_, ~strikethrough~, ni le monospace à triple backtick. L'affichage de ces marqueurs dépend entièrement du client qui ouvre le message.
- Un body entrant n'est pas garanti non vide, malgré ce qu'indique le schéma de lecture. Meta peut signaler un message entrant comme "text": {} ou avec un body vide, et Bird le stocke tel quel au lieu de générer un substitut. C'est un écart connu et ouvert : n'écrivez pas un consommateur qui fait confiance au required: body du schéma ici.
Étapes suivantes
- Messages de service WhatsApp : la fenêtre de service client et le modèle commun à tous les messages de service
- Envoyer des messages WhatsApp : l'enveloppe de requête, le modèle 202, et les réessais sûrs
- Messages interactifs : quand vous voulez un appui au lieu d'une réponse saisie
Ressources associées
Poursuivez avec la documentation, les guides et les exemples sur ce sujet. Les ressources sont en anglais.
Regarder le guideConnecting WhatsApp to Bird: from buying a number to a live channelComprendre le conceptWhat is the 24-hour customer service window on WhatsApp?Utiliser l'outilWhatsApp message builderExplorer la fonctionnalitéWhatsApp
Essayez la pratique et obtenez un guide d'implémentation