Pesan audio WhatsApp
Pesan audio membawa URL publik yang diambil WhatsApp saat pengiriman. Pesan ini tidak memiliki caption, dan secara opsional dapat ditampilkan sebagai voice note.
Mengirim pesan audio
Atur 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"
}
}'Bentuk lengkapnya menambahkan flag opsional voice, satu-satunya field lain yang dimiliki audio:
Contoh kode
{
"to": "+16505551234",
"from": "+13124495648",
"audio": { "url": "https://cdn.example.com/voice/9f2e4a.ogg", "voice": true }
}audio sama sekali tidak memiliki field caption. from wajib ada di setiap service message: nomor yang dimiliki workspace Anda, bukan nomor yang dikelola Bird.
Batas
| Field | Batas | Diterapkan oleh |
|---|---|---|
| Ukuran file | 16 MB | WhatsApp saja, saat fetch (async) |
| Format | AAC, AMR, MP3, M4A, atau OGG dengan codec OPUS, mono | WhatsApp saja, saat fetch (async) |
| voice: true | membutuhkan .ogg/OPUS, mono; format lain membuat transkripsi gagal | WhatsApp saja, saat fetch (async) |
| caption | bukan field yang valid | Bird, saat accept (422, penolakan skema) |
| url | absolut, https, memiliki host, tanpa spasi mentah | Bird, saat accept (422) |
Bird memeriksa bentuk URL sebelum apa pun masuk antrean; tidak memeriksa ukuran file yang sebenarnya, format, atau codec, dan tidak memeriksa apakah pengiriman voice: true benar-benar .ogg/OPUS. Hanya fetch WhatsApp sendiri saat pengiriman yang bisa memeriksanya. Mengirim caption pada pesan audio bukan kesalahan panjang; field tersebut tidak ada di skema arm ini, sehingga gagal sebagai properti yang tidak dikenali. Lihat mengirim media melalui URL dan ketika media gagal di hub.
Membaca pesan audio masuk
Pesan audio masuk membawa objek audio yang sama, ditambah id dan mime_type yang dipelajari Bird dengan mengambil file tersebut, dan tanpa caption di kedua arah. Lihat Menerima audio WhatsApp untuk pembacaan masuk secara lengkap, payload whatsapp.received, dan hal-hal yang perlu diperhatikan.
Batas dan mode kegagalan
- Customer service window harus terbuka. Audio adalah service message, hanya dapat dikirim di dalam window yang terbuka; lihat customer service window di hub.
- Bird menolak http; WhatsApp sendiri yang akan mengambilnya. Lihat mengirim media melalui URL di hub untuk pemeriksaan bentuk lengkapnya.
- Fetch yang ditolak tetap dikenakan biaya. Lihat ketika media gagal di hub. Teks penolakan khusus audio dari WhatsApp belum diukur secara independen, jadi perlakukan pemetaannya sebagai kesimpulan dari simetri, bukan dikonfirmasi per penyebab.
- Flag voice mengubah cara klien penerima menampilkan pesan, bukan apa yang divalidasi Bird. voice: true menampilkannya sebagai voice note: otomatis mengunduh, menampilkan ikon mikrofon inline, dan dapat ditranskripsikan. Agar berfungsi dengan benar, dibutuhkan file .ogg yang di-encode dengan OPUS, mono; format lain tetap terkirim, tetapi transkripsi gagal di sisi penerima. voice secara default bernilai false.
- Ambang batas ikon putar WhatsApp dan sinyal "played" bukan sesuatu yang dimunculkan Bird. WhatsApp mendokumentasikan perilaku klien seputar voice note kecil dan status sudah diputar, tetapi Bird tidak memodelkan keduanya; jangan membangun integrasi yang mengharapkan bisa membaca keduanya kembali dari API.
- WhatsApp meng-cache URL yang diambil selama sekitar 10 menit. Mengirim ulang URL yang sama dalam jangka waktu tersebut akan menyajikan kembali hasil fetch pertama; variasikan URL untuk memaksa fetch baru.
Langkah selanjutnya
- Service message WhatsApp: customer service window dan model yang digunakan bersama oleh setiap service message
- Video: untuk klip video, bukan audio
- Stiker: arm media lain tanpa field caption
- Mengirim pesan WhatsApp: request envelope, model 202, dan cara coba lagi yang aman
Sumber daya terkait
Lanjutkan dengan dokumentasi, panduan, dan contoh untuk topik ini. Sumber daya tersedia dalam bahasa Inggris.
Tonton panduannyaConnecting WhatsApp to Bird: from buying a number to a live channelPahami konsepnyaWhat is the 24-hour customer service window on WhatsApp?Gunakan alatnyaWhatsApp message builderJelajahi kemampuannyaWhatsApp
Coba praktiknya dan dapatkan ringkasan implementasi