Mensajes de sticker de WhatsApp
Un mensaje de sticker lleva una URL pública de WebP que WhatsApp descarga en el momento del envío. Es el tipo de medio más simple: sin pie de imagen, sin ningún otro campo opcional al enviar.
Enviar un sticker
Configura sticker.url; no hay nada más que agregar:
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 no tiene el campo caption, y animated no es algo que configures al enviar; Bird solo lo devuelve en un sticker entrante. from es obligatorio en cada mensaje de servicio: un número que tu espacio de trabajo posee, no uno gestionado por Bird.
Límites
| Campo | Límite | Aplicado por |
|---|---|---|
| Tamaño de archivo, estático | 100 KB | Solo WhatsApp, al descargar (async) |
| Tamaño de archivo, animado | 500 KB | Solo WhatsApp, al descargar (async) |
| Tipo de archivo | Solo WebP | Solo WhatsApp, al descargar (async) |
| caption | no es un campo válido | Bird, al aceptar (422, rechazo de esquema) |
| url | absoluta, https, con host, sin espacios crudos | Bird, al aceptar (422) |
Bird verifica la forma de la URL antes de poner nada en cola; no verifica el tamaño real del archivo, su formato ni si es estático o animado. Solo la descarga propia de WhatsApp en el momento del envío puede hacerlo. Enviar un caption no es un error de longitud; el campo no existe en el esquema de este tipo, así que falla como propiedad no reconocida. Consulta en el hub envío de medios por URL y cuando un medio falla.
Leer un sticker entrante
Un sticker entrante incluye un id, mime_type y animated que Bird obtuvo al descargar el archivo. Los tres están ausentes en una lectura de un envío saliente, ya que Bird nunca descargó ni inspeccionó el archivo que envió. Consulta Recibir stickers de WhatsApp para la lectura entrante completa, el payload whatsapp.received y qué tener en cuenta.
Límites y modos de fallo
- La ventana de servicio al cliente debe estar abierta. Los stickers son mensajes de servicio, entregables solo dentro de una ventana abierta; consulta en el hub la ventana de servicio al cliente.
- Bird rechaza http; WhatsApp sí lo descargaría. Consulta en el hub envío de medios por URL para la verificación completa de forma.
- Una descarga rechazada se cobra de todas formas. Consulta en el hub cuando un medio falla. El texto de rechazo propio de sticker de WhatsApp no se ha medido de forma independiente, así que trata la correspondencia como inferida por simetría en vez de confirmada por causa.
- animated es de solo lectura y solo está presente en un sticker entrante o descargado. Es el veredicto propio de WhatsApp sobre el archivo, no algo que puedas declarar. Que un sticker sea estático o animado solo cambia su límite de tamaño; WebP es obligatorio en ambos casos.
- WhatsApp guarda en caché una URL descargada durante unos 10 minutos. Reenviar la misma URL dentro de esa ventana sirve la primera descarga de nuevo; varía la URL para forzar una nueva.
Próximos pasos
- Mensajes de servicio de WhatsApp: la ventana de servicio al cliente y el modelo que comparten todos los mensajes de servicio
- Audio: otro tipo de medio sin campo de pie de imagen
- Imágenes: para una foto o gráfico con pie de imagen
- Enviar mensajes de WhatsApp: la envoltura de la solicitud, el modelo 202 y reintentos seguros
Recursos relacionados
Continúa con la documentación, guías y ejemplos sobre este tema. Los recursos están en inglés.
Ver la guíaConnecting WhatsApp to Bird: from buying a number to a live channelComprender el conceptoWhat is the 24-hour customer service window on WhatsApp?Usar la herramientaWhatsApp message builderExplorar la funcionalidadWhatsApp
Prueba el ejercicio y obtén un resumen de implementación