Wiadomości audio WhatsApp
Wiadomość audio zawiera publiczny URL, który WhatsApp pobiera w momencie wysyłki. Nie ma podpisu i opcjonalnie może być wyświetlona jako notatka głosowa.
Wyślij wiadomość audio
Ustaw audio.url:
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"
}
}'Pełna struktura dodaje opcjonalną flagę voice, jedyne dodatkowe pole, które ma audio:
Przykład kodu
{
"to": "+16505551234",
"from": "+13124495648",
"audio": { "url": "https://cdn.example.com/voice/9f2e4a.ogg", "voice": true }
}audio nie ma w ogóle pola caption. from jest wymagane w każdej wiadomości serwisowej: numer należący do Twojego obszaru roboczego, nie zarządzany przez Bird.
Limity
| Pole | Ograniczenie | Wymuszane przez |
|---|---|---|
| Rozmiar pliku | 16 MB | tylko WhatsApp, przy pobraniu (async) |
| Format | AAC, AMR, MP3, M4A lub OGG z kodekiem OPUS, mono | tylko WhatsApp, przy pobraniu (async) |
| voice: true | wymaga .ogg/OPUS, mono; inne formaty powodują niepowodzenie transkrypcji | tylko WhatsApp, przy pobraniu (async) |
| caption | nieprawidłowe pole | Bird, przy przyjęciu (422, odrzucenie schematu) |
| url | bezwzględny, https, ma hosta, bez surowych spacji | Bird, przy przyjęciu (422) |
Bird sprawdza strukturę URL-a, zanim cokolwiek zostanie zakolejkowane; nie weryfikuje rzeczywistego rozmiaru pliku, formatu ani kodeka i nie sprawdza, czy wysyłka voice: true to faktycznie .ogg/OPUS. Może to zrobić tylko samo pobranie przez WhatsApp w momencie wysyłki. Wysłanie caption w wiadomości audio to nie błąd długości: to pole nie istnieje w schemacie tego wariantu, więc kończy się odrzuceniem jako nierozpoznana właściwość. Zobacz w hubie wysyłanie mediów przez URL i gdy media się nie dostarczą.
Odczyt przychodzącej wiadomości audio
Przychodząca wiadomość audio zawiera ten sam obiekt audio, a dodatkowo id i mime_type, które Bird poznał po pobraniu pliku, i żadnego caption w żadnym kierunku. Zobacz Odbieranie audio WhatsApp, aby poznać pełny odczyt przychodzący, ładunek whatsapp.received i na co uważać.
Limity i tryby awarii
- Okno obsługi klienta musi być otwarte. Audio to wiadomość serwisowa, dostarczalna tylko w otwartym oknie; zobacz w hubie okno obsługi klienta.
- Bird odrzuca http; WhatsApp samo by go pobrało. Zobacz w hubie wysyłanie mediów przez URL, aby poznać pełną walidację struktury.
- Odrzucone pobranie i tak jest naliczane. Zobacz w hubie gdy media się nie dostarczą. Tekst odrzucenia audio od WhatsApp nie został niezależnie zmierzony, więc traktuj mapowanie jako wywnioskowane przez symetrię, a nie potwierdzone dla każdej przyczyny.
- Flaga voice zmienia sposób renderowania wiadomości w kliencie odbiorcy, a nie to, co waliduje Bird. voice: true renderuje ją jako notatkę głosową: automatycznie pobiera, wyświetla ikonę mikrofonu inline i umożliwia transkrypcję. Wymaga to pliku .ogg zakodowanego w OPUS, mono; każdy inny format nadal się wysyła, ale transkrypcja po stronie odbiorcy nie działa. voice domyślnie przyjmuje false.
- Próg ikony odtwarzania i sygnał "played" po stronie WhatsApp nie są udostępniane przez Bird. WhatsApp dokumentuje zachowanie klienta dotyczące krótkich notatek głosowych i stanu odtworzenia, ale Bird nie modeluje żadnego z nich; nie buduj integracji, która oczekuje odczytu któregokolwiek z nich z API.
- WhatsApp buforuje pobrany URL przez około 10 minut. Ponowne wysłanie identycznego URL-a w tym oknie zwraca wynik pierwszego pobrania; zmień URL, aby wymusić nowe pobranie.
Następne kroki
- Wiadomości serwisowe WhatsApp: okno obsługi klienta i model wspólny dla każdej wiadomości serwisowej
- Wideo: klip wideo zamiast audio
- Naklejki: kolejny wariant mediów bez pola podpisu
- 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