WhatsApp-afbeeldingsberichten
Een afbeeldingsbericht bevat een publieke URL die WhatsApp op het moment van verzenden ophaalt, met een optioneel bijschrift eronder.
Een afbeelding versturen
Stel image.url in:
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"
}
}'De volledige structuur voegt een optionele caption toe:
Codevoorbeeld
{
"to": "+16505551234",
"from": "+13124495648",
"image": {
"url": "https://cdn.example.com/receipts/a1b2c3.png",
"caption": "Your receipt for order A1B2C3"
}
}image heeft geen filename-veld. from is verplicht bij elk servicebericht: een nummer dat je werkruimte bezit, niet een door Bird beheerd nummer.
Limieten
| Veld | Grens | Gecontroleerd door |
|---|---|---|
| Bestandsgrootte | 5 MB | alleen WhatsApp, bij ophalen (async) |
| Bestandstype | JPEG of PNG | alleen WhatsApp, bij ophalen (async) |
| caption | maximaal 1024 tekens | Bird, bij acceptatie (422) |
| url | absoluut, https, heeft een host, geen ongecodeerde spatie | Bird, bij acceptatie (422) |
Bird controleert de vorm van de URL en de lengte van het bijschrift voordat er iets in de wachtrij wordt geplaatst. Het controleert niet de werkelijke bestandsgrootte of het type; dat kan alleen de eigen fetch van WhatsApp op het moment van verzenden. Zie de hub-pagina media versturen via URL voor wat die vormcontrole omvat, en wanneer media mislukt voor wat er gebeurt als de fetch van WhatsApp het bestand afwijst.
Een inkomende afbeelding lezen
Een inkomende afbeelding bevat hetzelfde image-object, plus een id en mime_type die Bird heeft bepaald door het bestand op te halen. Beide ontbreken bij het teruglezen van een uitgaand bericht, omdat Bird het verzonden bestand nooit zelf heeft opgehaald. Zie WhatsApp-afbeeldingen ontvangen voor het volledige inkomende bericht, de whatsapp.received-payload en waar je op moet letten.
Limieten en foutscenario's
- Het klantenservicevenster moet open zijn. Afbeeldingen zijn serviceberichten en kunnen alleen binnen een open venster worden bezorgd; zie de hub-pagina klantenservicevenster.
- Bird wijst http af; WhatsApp zelf zou het wel ophalen. Dat onderscheid en de rest van de URL-vormcontrole staan op de hub-pagina media versturen via URL.
- Een te groot bestand, een verkeerd MIME-type of een onbereikbare URL mislukken allemaal op dezelfde manier, en pas nadat er kosten in rekening zijn gebracht. Zie de hub-pagina wanneer media mislukt voor media_rejected en het feit dat er ook bij een mislukte verzending kosten in rekening worden gebracht.
- WhatsApp cachet een opgehaalde URL ongeveer 10 minuten. Als je dezelfde URL binnen dat venster opnieuw verstuurt, wordt het eerste ophaalresultaat hergebruikt in plaats van opnieuw opgehaald; varieer de URL (bijvoorbeeld met een queryparameter) om een nieuw ophaalverzoek te forceren.
Vervolgstappen
- WhatsApp-serviceberichten: het klantenservicevenster en het model dat alle serviceberichten delen
- Video: dezelfde structuur voor een videoclip
- Documenten: voor een PDF, spreadsheet of ander bestand
- WhatsApp-berichten versturen: de request-envelop, het 202-model en veilig opnieuw proberen
Gerelateerde bronnen
Ga verder met de documentatie, gidsen en voorbeelden voor dit onderwerp. De bronnen zijn in het Engels.
Bekijk de gidsConnecting WhatsApp to Bird: from buying a number to a live channelBegrijp het conceptWhat is the 24-hour customer service window on WhatsApp?Gebruik de toolWhatsApp message builderOntdek de mogelijkheidWhatsApp
Probeer de oefening en ontvang een implementatieoverzicht