WhatsApp-Bildnachrichten
Eine Bildnachricht enthält eine öffentliche URL, die WhatsApp beim Senden abruft, mit einer optionalen Beschriftung darunter.
Ein Bild senden
Setzen Sie image.url:
const msg = await bird.whatsapp.send({
to: "+16505551234",
from: "+13124495648",
image: { url: "https://cdn.example.com/receipt.png" },
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
from_="+13124495648",
image={"url": "https://cdn.example.com/receipt.png"},
)
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",
Image: &bird.WhatsAppImageSend{Url: "https://cdn.example.com/receipt.png"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$image = (new WhatsAppMessageSendRequestImage())
->setUrl('https://cdn.example.com/receipt.png');
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13124495648',
image: $image,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--from +13124495648 \
--image https://cdn.example.com/receipt.png \
--to +16505551234{
"name": "whatsapp_send",
"arguments": {
"from": "+13124495648",
"image": {
"url": "https://cdn.example.com/receipt.png"
},
"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",
"image": {
"url": "https://cdn.example.com/receipt.png"
}
}'Die vollständige Struktur fügt ein optionales caption hinzu:
Codebeispiel
{
"to": "+16505551234",
"from": "+13124495648",
"image": {
"url": "https://cdn.example.com/receipts/a1b2c3.png",
"caption": "Your receipt for order A1B2C3"
}
}image hat kein filename-Feld. from ist bei jeder Service-Nachricht erforderlich: eine Nummer, die Ihr Workspace besitzt, keine von Bird verwaltete.
Limits
| Feld | Grenze | Geprüft von |
|---|---|---|
| Dateigröße | 5 MB | nur WhatsApp, beim Abruf (async) |
| Dateityp | JPEG oder PNG | nur WhatsApp, beim Abruf (async) |
| caption | bis zu 1024 Zeichen | Bird, bei Annahme (422) |
| url | absolut, https, mit Host, ohne rohes Leerzeichen | Bird, bei Annahme (422) |
Bird prüft die Form der URL und die Länge der Beschriftung, bevor etwas in die Warteschlange gestellt wird. Dateigröße und -typ werden dabei nicht geprüft; das kann nur der eigene Abruf von WhatsApp beim Senden. Unter Medien per URL senden im Hub erfahren Sie, was diese Formprüfung abdeckt, und unter Wenn Medien fehlschlagen, was passiert, wenn der Abruf von WhatsApp die Datei ablehnt.
Ein eingehendes Bild lesen
Ein eingehendes Bild enthält dasselbe image-Objekt sowie id und mime_type, die Bird durch Abrufen der Datei ermittelt hat. Beide fehlen beim Zurücklesen einer ausgehenden Nachricht, da Bird die gesendete Datei nie selbst abgerufen hat. Unter WhatsApp-Bilder empfangen finden Sie den vollständigen eingehenden Lesevorgang, die whatsapp.received-Payload und worauf Sie achten sollten.
Limits und Fehlerfälle
- Das Kundenservice-Fenster muss offen sein. Bilder sind Service-Nachrichten und nur innerhalb eines offenen Fensters zustellbar; siehe Kundenservice-Fenster im Hub.
- Bird lehnt http ab; WhatsApp selbst würde sie abrufen. Diese Unterscheidung und die restliche URL-Formprüfung finden Sie unter Medien per URL senden im Hub.
- Eine zu große Datei, ein falscher MIME-Typ oder eine nicht erreichbare URL schlagen alle auf dieselbe Weise fehl – und erst nach der Abrechnung. Unter Wenn Medien fehlschlagen im Hub finden Sie media_rejected und die Tatsache, dass bei Fehlschlag trotzdem abgerechnet wird.
- WhatsApp speichert eine abgerufene URL etwa 10 Minuten im Cache. Wird dieselbe URL innerhalb dieses Zeitfensters erneut gesendet, wird der erste Abruf wiederverwendet statt erneut abzurufen; variieren Sie die URL (z. B. mit einem Query-Parameter), um einen neuen Abruf zu erzwingen.
Nächste Schritte
- WhatsApp-Service-Nachrichten: das Kundenservice-Fenster und das Modell, das alle Service-Nachrichten teilen
- Video: dieselbe Struktur für einen Videoclip
- Dokumente: für ein PDF, eine Tabelle oder eine andere Datei
- WhatsApp-Nachrichten senden: der Request-Envelope, das 202-Modell und sicheres erneutes Versuchen
Verwandte Ressourcen
Weiter mit der Dokumentation, Anleitungen und Beispielen zu diesem Thema. Die Ressourcen sind auf Englisch.
Anleitung ansehenConnecting WhatsApp to Bird: from buying a number to a live channelDas Konzept verstehenWhat is the 24-hour customer service window on WhatsApp?Das Tool verwendenWhatsApp message builderDie Funktion erkundenWhatsApp
Übung ausprobieren und ein Implementierungs-Briefing erhalten