WhatsApp-audioberichten
Een audiobericht bevat een publieke URL die WhatsApp op het moment van verzenden ophaalt. Het heeft geen bijschrift en kan optioneel als spraakbericht worden weergegeven.
Een audiobericht versturen
Stel audio.url in:
const msg = await bird.whatsapp.send({
to: "+16505551234",
from: "+13124495648",
audio: { url: "https://cdn.example.com/vm/9f2.ogg" },
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
from_="+13124495648",
audio={"url": "https://cdn.example.com/vm/9f2.ogg"},
)
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",
Audio: &bird.WhatsAppAudioSend{Url: "https://cdn.example.com/vm/9f2.ogg"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$audio = (new WhatsAppMessageSendRequestAudio())
->setUrl('https://cdn.example.com/vm/9f2.ogg');
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13124495648',
audio: $audio,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--audio https://cdn.example.com/vm/9f2.ogg \
--from +13124495648 \
--to +16505551234{
"name": "whatsapp_send",
"arguments": {
"audio": {
"url": "https://cdn.example.com/vm/9f2.ogg"
},
"from": "+13124495648",
"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",
"audio": {
"url": "https://cdn.example.com/vm/9f2.ogg"
}
}'De volledige structuur voegt de optionele voice-vlag toe, het enige andere veld dat audio heeft:
Codevoorbeeld
{
"to": "+16505551234",
"from": "+13124495648",
"audio": { "url": "https://cdn.example.com/voice/9f2e4a.ogg", "voice": true }
}audio heeft helemaal geen caption-veld. from is verplicht bij elk servicebericht: een nummer dat je werkruimte bezit, niet een door Bird beheerd nummer.
Limieten
| Veld | Grens | Afgedwongen door |
|---|---|---|
| Bestandsgrootte | 16 MB | alleen WhatsApp, bij ophalen (async) |
| Formaat | AAC, AMR, MP3, M4A of OGG met de OPUS-codec, mono | alleen WhatsApp, bij ophalen (async) |
| voice: true | vereist .ogg/OPUS, mono; andere formaten laten transcriptie mislukken | alleen WhatsApp, bij ophalen (async) |
| caption | geen geldig veld | Bird, bij acceptatie (422, schemaweigering) |
| url | absoluut, https, heeft een host, geen ongeëscapete spatie | Bird, bij acceptatie (422) |
Bird controleert de vorm van de URL voordat iets in de wachtrij wordt geplaatst; het controleert niet de werkelijke grootte, het formaat of de codec van het bestand, en het controleert niet of een voice: true-verzending daadwerkelijk .ogg/OPUS is. Alleen de eigen ophaalactie van WhatsApp op het moment van verzenden kan dat. Een caption meesturen bij een audiobericht is geen lengtefout; het veld bestaat niet in het schema van deze arm, dus het mislukt als een niet-herkende eigenschap. Zie de hub's media versturen via URL en wanneer media mislukt.
Een inkomend audiobericht lezen
Een inkomend audiobericht bevat hetzelfde audio-object, plus een id en mime_type die Bird heeft geleerd door het bestand op te halen, en geen caption in beide richtingen. Zie WhatsApp-audio 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. Audio is een servicebericht dat alleen binnen een open venster kan worden afgeleverd; zie de hub's klantenservicevenster.
- Bird weigert http; WhatsApp zelf zou het ophalen. Zie de hub's media versturen via URL voor de volledige vormcontrole.
- Een geweigerde ophaalactie wordt toch in rekening gebracht. Zie de hub's wanneer media mislukt. De weigeringstekst van WhatsApp specifiek voor audio is niet onafhankelijk gemeten, dus beschouw de mapping als afgeleid door symmetrie in plaats van bevestigd per oorzaak.
- De voice-vlag verandert hoe de client van de ontvanger het bericht weergeeft, niet wat Bird valideert. voice: true geeft het weer als spraakbericht: het downloadt automatisch, toont een inline microfoonpictogram en kan worden getranscribeerd. Daarvoor heb je een .ogg-bestand nodig gecodeerd met OPUS, mono; elk ander formaat wordt nog steeds verzonden, maar transcriptie mislukt aan de kant van de ontvanger. voice staat standaard op false.
- De eigen afspeelpictogramdrempel en het "played"-signaal van WhatsApp zijn niet iets dat Bird beschikbaar maakt. WhatsApp documenteert een clientgedrag rond korte spraakberichten en een afspeelstatus, maar Bird modelleert geen van beide; bouw geen integratie die verwacht een van beide terug te lezen uit de API.
- WhatsApp cachet een opgehaalde URL ongeveer 10 minuten. Als je dezelfde URL binnen dat venster opnieuw verstuurt, wordt de eerste ophaalactie opnieuw geserveerd; varieer de URL om een nieuwe op te halen.
Volgende stappen
- WhatsApp-serviceberichten: het klantenservicevenster en het model dat elk servicebericht deelt
- Video: voor een videofragment in plaats van audio
- Stickers: een andere media-arm zonder bijschriftveld
- WhatsApp-berichten versturen: de request-envelope, 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