SEND_AUDIO - Enviar Áudio
O que é este Node?
O SEND_AUDIO é o node responsável por enviar arquivos de áudio via WhatsApp Business API (MP3, AAC, OGG, etc.).
Por que este Node existe?
Áudio é comunicação natural. O SEND_AUDIO existe para:
- Mensagens de voz: Enviar áudios pré-gravados
- Podcasts: Compartilhar episódios de áudio
- Notificações sonoras: Alertas em formato de áudio
- Músicas: Compartilhar faixas de áudio
- Gravações: Enviar entrevistas, depoimentos
Como funciona internamente?
Quando o SEND_AUDIO é executado, o sistema:
- Valida fonte: Verifica audioUrl ou audioId
- Constrói payload: Cria objeto tipo 'audio'
- Não adiciona caption: Áudios não suportam legenda
- Envia para API: POST com tipo audio
- Retorna message_id: Confirma envio
Código interno (whatsapp-meta-executor.service.ts:393-434):
private async sendMedia(data: WhatsAppMetaNodeData): Promise<any> {
const mediaType = this.getMediaType(data.operation!);
const mediaUrl = this.getMediaUrl(data);
const mediaId = this.getMediaId(data);
const caption = this.getMediaCaption(data);
const mediaObject: any = {};
if (mediaId) {
mediaObject.id = mediaId;
} else {
mediaObject.link = mediaUrl;
}
if (caption) {
mediaObject.caption = caption;
}
if (data.operation === 'send_document' && data.documentFilename) {
mediaObject.filename = data.documentFilename;
}
const payload = {
messaging_product: 'whatsapp',
to: data.recipientPhone,
type: mediaType,
[mediaType]: mediaObject
};
const response: AxiosResponse = await axios.post(
`${this.WHATSAPP_API_BASE}/${data.phoneNumberId}/messages`,
payload,
{
headers: {
'Authorization': `Bearer ${data.accessToken}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
}
Quando você DEVE usar este Node?
Use SEND_AUDIO quando precisar enviar arquivos de áudio:
Casos de uso
- Mensagem de voz gravada: "Obrigado pela compra!"
- Podcast: Episódio do podcast da empresa
- Música: Faixa promocional, jingle
- Tutorial em áudio: Instruções faladas
- Notificação sonora: Alerta importante
Quando NÃO usar SEND_AUDIO
- Texto: Use SEND_MESSAGE para mensagens escritas
- Vídeo com áudio: Use SEND_VIDEO para conteúdo audiovisual
- Documento: Use SEND_DOCUMENT para arquivos
Parâmetros Detalhados
audioUrl (string, condicional)
O que é: URL pública HTTPS do arquivo de áudio. Obrigatório se audioId não fornecido.
Padrão: Nenhum
Flow completo para testar:
{
"name": "Teste SEND_AUDIO - Audio URL",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "whatsapp_1",
"type": "whatsapp_meta",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Enviar Áudio",
"parameters": {
"operation": "send_audio",
"accessToken": "EAAxxxxxxxx",
"phoneNumberId": "123456789",
"recipientPhone": "5511999999999",
"audioUrl": "https://exemplo.com/audio/mensagem.mp3"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Áudio enviado!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "whatsapp_1" },
{ "source": "whatsapp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: URL deve ser HTTPS e acessível. WhatsApp baixa o áudio.
audioId (string, condicional)
O que é: ID de áudio já enviado ao WhatsApp. Obrigatório se audioUrl não fornecido.
Padrão: Nenhum
Flow completo para testar:
{
"name": "Teste SEND_AUDIO - Audio ID",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "whatsapp_1",
"type": "whatsapp_meta",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Reenviar Áudio",
"parameters": {
"operation": "send_audio",
"accessToken": "EAAxxxxxxxx",
"phoneNumberId": "123456789",
"recipientPhone": "5511888888888",
"audioId": "1234567890123456"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Áudio reenviado via ID!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "whatsapp_1" },
{ "source": "whatsapp_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Use audioId de envio anterior para economizar bandwidth.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| operation | string | Sim | Deve ser "send_audio" |
| accessToken | string | Sim | Token de acesso da WhatsApp Business API |
| phoneNumberId | string | Sim | ID do número WhatsApp Business |
| recipientPhone | string | Sim | Número do destinatário |
| audioUrl | string | Condicional | URL do áudio (obrigatório se sem audioId) |
| audioId | string | Condicional | ID do áudio (obrigatório se sem audioUrl) |
Exemplo 1: Mensagem de Agradecimento em Áudio
Objetivo: Enviar áudio personalizado de agradecimento após compra.
JSON para Importar
{
"name": "Agradecimento em Áudio - SEND_AUDIO",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Dados da Compra",
"parameters": {
"variableName": "purchase",
"value": {
"customerName": "Carlos Silva",
"customerPhone": "5511999999999",
"orderId": "PED-12345",
"audioUrl": "https://storage.empresa.com/audios/agradecimento.mp3"
}
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Introdução",
"parameters": {
"message": "🎉 Obrigado pela sua compra, {{purchase.customerName}}!\n\nPedido: {{purchase.orderId}}\n\nEnviando mensagem especial..."
}
}
},
{
"id": "delay_1",
"type": "delay",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Aguardar",
"parameters": {
"duration": 2,
"unit": "seconds"
}
}
},
{
"id": "whatsapp_1",
"type": "whatsapp_meta",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Enviar Áudio",
"parameters": {
"operation": "send_audio",
"accessToken": "EAAxxxxxxxx",
"phoneNumberId": "123456789",
"recipientPhone": "{{purchase.customerPhone}}",
"audioUrl": "{{purchase.audioUrl}}"
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 1100, "y": 100 },
"data": {
"label": "Finalizar",
"parameters": {
"message": "🎧 Ouça a mensagem acima!\n\nSe precisar de ajuda, estamos aqui."
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1300, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "message_1" },
{ "source": "message_1", "target": "delay_1" },
{ "source": "delay_1", "target": "whatsapp_1" },
{ "source": "whatsapp_1", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: 🎉 Obrigado pela sua compra, Carlos Silva!
Pedido: PED-12345
Enviando mensagem especial...
[Aguarda 2s]
[Áudio: 0:15] 🎤
"Olá Carlos! Muito obrigado pela sua compra. Sua confiança é muito importante para nós..."
Sistema: 🎧 Ouça a mensagem acima!
Se precisar de ajuda, estamos aqui.
Exemplo 2: Episódio de Podcast
Objetivo: Compartilhar episódio de podcast empresarial.
JSON para Importar
{
"name": "Compartilhar Podcast - SEND_AUDIO",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "variable_1",
"type": "variable",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Dados do Podcast",
"parameters": {
"variableName": "podcast",
"value": {
"subscriberPhone": "5511888888888",
"episodeNumber": "23",
"episodeTitle": "Como Aumentar Suas Vendas em 2025",
"duration": "28 minutos",
"audioUrl": "https://podcast.empresa.com/ep23.mp3"
}
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Apresentação",
"parameters": {
"message": "🎙️ Novo Episódio do Podcast!\n\nEpisódio #{{podcast.episodeNumber}}\n\"{{podcast.episodeTitle}}\"\n\n⏱️ Duração: {{podcast.duration}}\n\nBoa audição! 🎧"
}
}
},
{
"id": "whatsapp_1",
"type": "whatsapp_meta",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Enviar Podcast",
"parameters": {
"operation": "send_audio",
"accessToken": "EAAxxxxxxxx",
"phoneNumberId": "123456789",
"recipientPhone": "{{podcast.subscriberPhone}}",
"audioUrl": "{{podcast.audioUrl}}"
}
}
},
{
"id": "message_2",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Call to Action",
"parameters": {
"message": "💬 Gostou do episódio?\n\nCompartilhe com amigos e nos dê seu feedback!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "variable_1" },
{ "source": "variable_1", "target": "message_1" },
{ "source": "message_1", "target": "whatsapp_1" },
{ "source": "whatsapp_1", "target": "message_2" },
{ "source": "message_2", "target": "end_1" }
]
}
Saída esperada:
Sistema: 🎙️ Novo Episódio do Podcast!
Episódio #23
"Como Aumentar Suas Vendas em 2025"
⏱️ Duração: 28 minutos
Boa audição! 🎧
[Áudio: 28:00] 🎤
[Episódio completo do podcast]
Sistema: 💬 Gostou do episódio?
Compartilhe com amigos e nos dê seu feedback!
Resposta do Node
{
"messaging_product": "whatsapp",
"contacts": [
{
"input": "5511999999999",
"wa_id": "5511999999999"
}
],
"messages": [
{
"id": "wamid.HBgNNTUxMTk5OTk5OTk5ORUCABIYFjNBMzYxNzQyQ0JGRjREMTU0QzFEAA=="
}
]
}
Formatos Suportados
- AAC: Audio Coding (melhor compressão)
- MP3: MPEG Audio Layer-3 (universal)
- AMR: Adaptive Multi-Rate (voz)
- OGG: Ogg Vorbis com codec Opus
Tamanho máximo: 16MB
Boas Práticas
✅ SIM:
- Use MP3 para compatibilidade universal
- Comprima áudios longos para reduzir tamanho
- Prefira bitrate 64-128 kbps para voz
- Use audioId para reenviar mesmo áudio
- Envie mensagem de texto antes explicando o áudio
❌ NÃO:
- Não envie áudios muito longos (> 5 minutos)
- Não use formatos não suportados (WAV, FLAC)
- Não ultrapasse 16MB
- Não tente adicionar caption (não suportado)
- Não envie áudio sem contexto prévio
Dicas
💡 Compressão: Use ferramentas como Audacity para comprimir áudios grandes
💡 Bitrate ideal: 64 kbps para voz, 128 kbps para música
💡 Duração: Áudios curtos (< 2 min) têm melhor engajamento
💡 Contexto: Sempre envie mensagem de texto antes explicando o que é o áudio
💡 Formato: MP3 é o mais compatível com todos os dispositivos
💡 Sem caption: Áudios não aceitam legendas no WhatsApp, envie texto separado
Próximo Node
→ SEND_VIDEO - Enviar vídeos → SEND_MESSAGE - Enviar texto → SEND_MEDIA - Enviar mídia genérica