Messaggi audio WhatsApp
Un messaggio audio contiene un URL pubblico che WhatsApp recupera al momento dell'invio. Non ha didascalia e può opzionalmente essere visualizzato come nota vocale.
Inviare un messaggio audio
Imposta 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"
}
}'La forma completa aggiunge il flag opzionale voice, l'unico altro campo di audio:
Esempio di codice
{
"to": "+16505551234",
"from": "+13124495648",
"audio": { "url": "https://cdn.example.com/voice/9f2e4a.ogg", "voice": true }
}audio non ha affatto il campo caption. from è obbligatorio su ogni messaggio di servizio: un numero di proprietà del tuo spazio di lavoro, non uno gestito da Bird.
Limiti
| Campo | Vincolo | Applicato da |
|---|---|---|
| Dimensione file | 16 MB | Solo WhatsApp, al fetch (asincrono) |
| Formato | AAC, AMR, MP3, M4A oppure OGG con codec OPUS, mono | Solo WhatsApp, al fetch (asincrono) |
| voice: true | richiede .ogg/OPUS, mono; altri formati causano il fallimento della trascrizione | Solo WhatsApp, al fetch (asincrono) |
| caption | non è un campo valido | Bird, all'accettazione (422, rifiuto dello schema) |
| url | assoluto, https, con host, senza spazi grezzi | Bird, all'accettazione (422) |
Bird controlla la forma dell'URL prima che qualsiasi cosa venga accodata; non verifica la dimensione effettiva del file, il formato o il codec, e non verifica che un invio con voice: true sia effettivamente .ogg/OPUS. Solo il fetch di WhatsApp al momento dell'invio può farlo. Inviare un caption su un messaggio audio non è un errore di lunghezza; il campo non esiste nello schema di questo tipo, quindi fallisce come proprietà non riconosciuta. Consulta le guide dell'hub su invio di media tramite URL e quando un media fallisce.
Leggere un messaggio audio in entrata
Un messaggio audio in entrata contiene lo stesso oggetto audio, più un id e un mime_type che Bird ha appreso recuperando il file, e nessun caption in nessuna delle due direzioni. Consulta Ricezione audio WhatsApp per la lettura completa in entrata, il payload whatsapp.received e a cosa fare attenzione.
Limiti e modalità di errore
- La finestra di servizio clienti deve essere aperta. L'audio è un messaggio di servizio, recapitabile solo all'interno di una finestra aperta; consulta la guida dell'hub sulla finestra di servizio clienti.
- Bird rifiuta http; WhatsApp stesso lo recupererebbe. Consulta la guida dell'hub su invio di media tramite URL per il controllo completo della forma.
- Un fetch rifiutato viene comunque addebitato. Consulta la guida dell'hub su quando un media fallisce. Il testo di rifiuto specifico dell'audio da parte di WhatsApp non è stato misurato in modo indipendente, quindi considera la mappatura come dedotta per simmetria piuttosto che confermata per singola causa.
- Il flag voice cambia il modo in cui il client del destinatario visualizza il messaggio, non ciò che Bird valida. voice: true lo visualizza come nota vocale: si scarica automaticamente, mostra un'icona microfono inline e può essere trascritto. Per ottenere questo risultato serve un file .ogg codificato con OPUS, mono; qualsiasi altro formato viene comunque inviato, ma la trascrizione fallisce lato destinatario. voice ha come valore predefinito false.
- La soglia dell'icona di riproduzione e il segnale "played" di WhatsApp non sono esposti da Bird. WhatsApp documenta un comportamento del client per le note vocali brevi e uno stato di riproduzione, ma Bird non modella nessuno dei due; non costruire un'integrazione che si aspetti di leggere l'uno o l'altro dalla API.
- WhatsApp mantiene in cache un URL recuperato per circa 10 minuti. Reinviare lo stesso URL all'interno di quella finestra restituisce il primo fetch; varia l'URL per forzarne uno nuovo.
Prossimi passi
- Messaggi di servizio WhatsApp: la finestra di servizio clienti e il modello condiviso da ogni messaggio di servizio
- Video: per un clip video anziché audio
- Sticker: un altro tipo di media senza campo didascalia
- Invio di messaggi WhatsApp: la busta della richiesta, il modello 202 e i tentativi sicuri
Risorse correlate
Prosegui con la documentazione, le guide e gli esempi per questo argomento. Le risorse sono in inglese.
Guarda la guidaConnecting WhatsApp to Bird: from buying a number to a live channelComprendi il concettoWhat is the 24-hour customer service window on WhatsApp?Usa lo strumentoWhatsApp message builderEsplora la funzionalitàWhatsApp
Prova l'esercitazione e ottieni un brief di implementazione