Wiadomości ze stickerami WhatsApp
Wiadomość ze stickerem zawiera publiczny URL WebP, który WhatsApp pobiera w momencie wysyłki. To najprostsza gałąź mediów: bez podpisu, bez żadnego innego opcjonalnego pola przy wysyłce.
Wyślij sticker
Ustaw sticker.url; nie trzeba dodawać nic więcej:
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 nie ma pola caption, a animated nie jest czymś, co ustawiasz przy wysyłce; Bird zwraca tę wartość tylko w stickerze przychodzącym. from jest wymagane w każdej wiadomości serwisowej: numer należący do Twojego obszaru roboczego, a nie zarządzany przez Bird.
Limity
| Pole | Ograniczenie | Wymuszane przez |
|---|---|---|
| Rozmiar pliku, statyczny | 100 KB | tylko WhatsApp, przy pobraniu (async) |
| Rozmiar pliku, animowany | 500 KB | tylko WhatsApp, przy pobraniu (async) |
| Typ pliku | tylko WebP | tylko WhatsApp, przy pobraniu (async) |
| caption | nieprawidłowe pole | Bird, przy przyjęciu (422, odrzucenie schematu) |
| url | bezwzględny, https, zawiera host, bez surowych spacji | Bird, przy przyjęciu (422) |
Bird sprawdza kształt URL-a, zanim cokolwiek zostanie dodane do kolejki; nie sprawdza rzeczywistego rozmiaru pliku, formatu ani tego, czy jest statyczny, czy animowany. Może to zrobić tylko WhatsApp podczas własnego pobrania w momencie wysyłki. Wysłanie caption nie jest błędem długości; pole nie istnieje w schemacie tej gałęzi, więc kończy się odrzuceniem jako nierozpoznana właściwość. Zobacz w hubie wysyłanie mediów przez URL i gdy media zawodzą.
Odczyt stickera przychodzącego
Sticker przychodzący zawiera id, mime_type i animated, które Bird uzyskał, pobierając plik. Wszystkie trzy są nieobecne w odczycie wiadomości wychodzącej, ponieważ Bird nigdy nie pobrał ani nie sprawdził pliku, który wysłał. Zobacz Odbieranie stickerów WhatsApp, aby poznać pełny odczyt przychodzący, ładunek whatsapp.received i na co zwrócić uwagę.
Limity i tryby awarii
- Okno obsługi klienta musi być otwarte. Stickery to wiadomości serwisowe, dostarczalne tylko w otwartym oknie; zobacz w hubie okno obsługi klienta.
- Bird odrzuca http; WhatsApp sam by go pobrał. Zobacz w hubie wysyłanie mediów przez URL, aby poznać pełną walidację kształtu.
- Odrzucone pobranie i tak jest naliczane. Zobacz w hubie gdy media zawodzą. Własny tekst odrzucenia stickera od WhatsApp nie został niezależnie zmierzony, więc traktuj to mapowanie jako wywnioskowane przez symetrię, a nie potwierdzone dla każdego przypadku.
- animated jest tylko do odczytu i występuje wyłącznie w stickerze przychodzącym lub pobranym. To ocena pliku dokonana przez WhatsApp, a nie coś, co możesz zadeklarować. To, czy sticker jest statyczny, czy animowany, zmienia jedynie limit rozmiaru; WebP jest wymagany w obu przypadkach.
- WhatsApp przechowuje pobrany URL w pamięci podręcznej przez około 10 minut. Ponowne wysłanie tego samego URL-a w tym oknie serwuje pierwsze pobranie; zmień URL, aby wymusić nowe.
Następne kroki
- Wiadomości serwisowe WhatsApp: okno obsługi klienta i model wspólny dla każdej wiadomości serwisowej
- Audio: kolejna gałąź mediów bez pola podpisu
- Obrazy: dla zdjęcia lub grafiki z podpisem
- Wysyłanie wiadomości WhatsApp: koperta żądania, model 202 i bezpieczne ponawianie
Powiązane zasoby
Kontynuuj z dokumentacją, przewodnikami i przykładami dotyczącymi tego tematu. Zasoby są w języku angielskim.
Obejrzyj przewodnikConnecting WhatsApp to Bird: from buying a number to a live channelZrozum koncepcjęWhat is the 24-hour customer service window on WhatsApp?Użyj narzędziaWhatsApp message builderPoznaj możliwościWhatsApp
Wypróbuj ćwiczenie i uzyskaj brief wdrożeniowy