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 +16505551234curl -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 :
{
"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_urln'affecte que le premier lien, et uniquement ce que le client du destinataire affiche. Sa valeur par défaut estfalse. Activez-le pour afficher un aperçu de la première URL dansbody; 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 transmetbodytel 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
bodyentrant 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 unbodyvide, 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 aurequired: bodydu 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.