Messages sticker WhatsApp
Un message sticker contient une URL WebP publique que WhatsApp récupère au moment de l'envoi. C'est le type de média le plus simple : pas de légende, pas d'autre champ facultatif à l'envoi.
Envoyer un sticker
Définissez sticker.url ; il n'y a rien d'autre à ajouter :
const msg = await bird.whatsapp.send({
to: "+16505551234",
from: "+13124495648",
sticker: { url: "https://cdn.example.com/stickers/thumbs-up.webp" },
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
from_="+13124495648",
sticker={"url": "https://cdn.example.com/stickers/thumbs-up.webp"},
)
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",
Sticker: &bird.WhatsAppStickerSend{Url: "https://cdn.example.com/stickers/thumbs-up.webp"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$sticker = (new WhatsAppMessageSendRequestSticker())
->setUrl('https://cdn.example.com/stickers/thumbs-up.webp');
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13124495648',
sticker: $sticker,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--from +13124495648 \
--sticker https://cdn.example.com/stickers/thumbs-up.webp \
--to +16505551234{
"name": "whatsapp_send",
"arguments": {
"from": "+13124495648",
"sticker": {
"url": "https://cdn.example.com/stickers/thumbs-up.webp"
},
"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",
"sticker": {
"url": "https://cdn.example.com/stickers/thumbs-up.webp"
}
}'sticker n'a pas de champ caption, et animated n'est pas un champ que vous définissez à l'envoi ; Bird ne le renvoie que sur un sticker entrant. from est obligatoire sur chaque message de service : un numéro appartenant à votre espace de travail, pas un numéro géré par Bird.
Limites
| Champ | Limite | Appliquée par |
|---|---|---|
| Taille, statique | 100 Ko | WhatsApp uniquement, à la récupération (async) |
| Taille, animé | 500 Ko | WhatsApp uniquement, à la récupération (async) |
| Type de fichier | WebP uniquement | WhatsApp uniquement, à la récupération (async) |
| caption | champ non valide | Bird, à l'acceptation (422, rejet de schéma) |
| url | absolue, https, a un hôte, pas d'espace brut | Bird, à l'acceptation (422) |
Bird vérifie la forme de l'URL avant toute mise en file d'attente ; il ne vérifie pas la taille réelle du fichier, son format, ni s'il est statique ou animé. Seule la récupération propre à WhatsApp au moment de l'envoi le peut. Envoyer un caption n'est pas une erreur de longueur ; le champ n'existe pas dans le schéma de ce type, donc il échoue en tant que propriété non reconnue. Voir dans le hub envoyer des médias par URL et quand un média échoue.
Lire un sticker entrant
Un sticker entrant contient un id, un mime_type et un animated que Bird a déterminés en récupérant le fichier. Ces trois valeurs sont absentes lors de la relecture d'un message sortant, car Bird n'a jamais récupéré ni inspecté le fichier envoyé. Voir Recevoir des stickers WhatsApp pour la lecture entrante complète, le payload whatsapp.received et les points à surveiller.
Limites et modes d'échec
- La fenêtre de service client doit être ouverte. Les stickers sont des messages de service, livrables uniquement dans une fenêtre ouverte ; voir dans le hub la fenêtre de service client.
- Bird rejette http ; WhatsApp lui-même le récupérerait. Voir dans le hub envoyer des médias par URL pour la vérification complète de la forme.
- Une récupération rejetée est quand même facturée. Voir dans le hub quand un média échoue. Le texte de rejet propre aux stickers de WhatsApp n'a pas été mesuré indépendamment ; considérez la correspondance comme déduite par symétrie plutôt que confirmée par cause.
- animated est en lecture seule et n'est présent que sur un sticker entrant ou récupéré. C'est le verdict propre à WhatsApp sur le fichier, pas quelque chose que vous pouvez déclarer. Qu'un sticker soit statique ou animé ne change que son plafond de taille ; le format WebP est requis dans les deux cas.
- WhatsApp met en cache une URL récupérée pendant environ 10 minutes. Renvoyer la même URL dans cet intervalle resert la première récupération ; modifiez l'URL pour en forcer une nouvelle.
Étapes suivantes
- Messages de service WhatsApp : la fenêtre de service client et le modèle commun à tous les messages de service
- Audio : un autre type de média sans champ de légende
- Images : pour une photo ou un visuel avec légende
- Envoyer des messages WhatsApp : l'enveloppe de requête, le modèle 202 et les réessais sûrs
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