Tutorial Definitivo: Como Criar uma Recepcionista de IA por Voz para WhatsApp com N8n e OpenAI
- Gustavo Caetano
- 6 de out.
- 4 min de leitura

Você já imaginou ter uma recepcionista disponível 24/7, que entende e responde mensagens de áudio no WhatsApp instantaneamente, liberando sua equipe para focar no que realmente importa? Com os avanços da Inteligência Artificial e o poder da automação do n8n, isso não só é possível, como está ao seu alcance.
Neste tutorial, vamos construir passo a passo uma recepcionista virtual inteligente, integrando a API do WhatsApp Business com as poderosas ferramentas de IA da OpenAI.
O que vamos construir? A Arquitetura da Solução
Nossa recepcionista de IA seguirá um fluxo lógico de 5 etapas principais, orquestrado pelo n8n:
Recebimento (Webhook): O cliente envia um áudio no WhatsApp. A Meta (Facebook) notifica o n8n.
Transcrição (STT): O n8n baixa o áudio e usa o OpenAI Whisper para converter a fala em texto.
Inteligência (LLM): O n8n envia o texto para o GPT (ex: GPT-4o) para interpretar a intenção e gerar a melhor resposta.
Síntese (TTS): O n8n transforma a resposta textual em uma mensagem de áudio natural.
Envio: O n8n envia o áudio de resposta de volta ao cliente via WhatsApp.
Pré-requisitos
Antes de começar, você precisará de:
n8n: Uma instância funcionando (Cloud ou Self-Hosted). Ela precisa estar acessível publicamente para receber os webhooks do WhatsApp.
WhatsApp Business API (Meta): Você precisará de uma conta de Desenvolvedor na Meta, um aplicativo configurado (Cloud API), um número de telefone verificado, seu ID do Número de Telefone e um Token de Acesso Permanente.
Conta OpenAI: Uma API Key com créditos para usar Whisper, GPT e TTS.
Passo a Passo: Criando a Recepcionista no n8n
Vamos configurar o fluxo de trabalho (workflow) dentro do n8n.
Passo 1: O Gatilho (WhatsApp Webhook)
Tudo começa quando uma mensagem chega.
Adicione um nó Webhook no n8n.
Configure-o: Defina o HTTP Method para POST. Copie a Webhook URL.
Configuração na Meta: No painel do seu aplicativo Meta, vá em "Configuração da API" > "Webhooks". Cole a URL do n8n.
IMPORTANTE: Verificação do Webhook A Meta exige que seu webhook responda a um desafio de segurança (método GET) antes de enviar mensagens. Você precisará configurar temporariamente seu n8n para lidar com isso. Consulte a documentação do n8n ou da Meta sobre a verificação de Webhooks.
Após verificar, certifique-se de se inscrever no evento de messages na plataforma da Meta.
Passo 2: Filtrando Mensagens de Áudio
Queremos que este fluxo responda apenas a áudios.
Adicione um nó If após o Webhook.
Configure a condição: Verifique se o tipo da mensagem recebida é audio. Nos dados enviados pela Meta, o caminho geralmente se parece com:
Value 1 (Expression): {{ $json.body.entry[0].changes[0].value.messages[0].type }}
Operation: String > Equals
Value 2: audio
Passo 3: Baixando o Arquivo de Áudio
Quando o WhatsApp notifica sobre um áudio, ele envia apenas um ID de mídia (media_id), não o arquivo em si. O download é um processo de duas etapas.
3.1: Obter a URL do Áudio
Conecte a saída True do nó If a um nó HTTP Request.
Configuração:
Method: GET.
URL (Expression): https://graph.facebook.com/v19.0/{{ $json.body.entry[0].changes[0].value.messages[0].audio.id }}
Authentication: Configure a autenticação (Header Auth ou Generic Credential) usando seu Token de Acesso da Meta (Bearer Token).
3.2: Baixar o Arquivo Binário
Adicione outro nó HTTP Request.
Configuração:
Method: GET.
URL (Expression): {{ $json.url }} (A URL extraída do nó anterior).
Authentication: Use o mesmo Token de Acesso da Meta.
Response Format: File (Crucial! Precisamos dos dados binários).
Binary Property Name: Dê um nome, ex: input_audio.
Passo 4: Transcrição com Whisper (Speech-to-Text)
Vamos converter o áudio em texto.
Adicione um nó OpenAI.
Configuração:
Credential: Sua API Key da OpenAI.
Resource: Audio.
Operation: Transcription.
Model: whisper-1.
Input Data Type: Binary.
Input Binary Property: input_audio (o nome definido no passo 3.2).
Language: pt (Para melhor precisão em Português).
Passo 5: Gerando a Resposta Inteligente (O Cérebro)
Este é o coração da sua recepcionista.
Adicione outro nó OpenAI.
Configuração:
Resource: Chat.
Model: gpt-4o (recomendado) ou gpt-3.5-turbo.
Messages:
System Message: Defina a persona e o conhecimento da IA.
Plaintext
Exemplo de System Prompt:
Você é a 'Bia', a recepcionista virtual da 'Empresa XYZ'. Seja prestativa, profissional e breve. As respostas serão enviadas por áudio, então mantenha-as concisas (máximo 2 parágrafos curtos). Horário de funcionamento: Seg-Sex, 9h às 18h. Se a pergunta for complexa, informe que um humano entrará em contato em breve.
* **User Message (Expression):** `{{ $json.text }}` (O texto transcrito no Passo 4).
Passo 6: Sintetizando a Voz (Text-to-Speech)
Vamos dar voz à resposta.
Adicione um terceiro nó OpenAI.
Dica: Se desejar vozes mais realistas ou clonadas, você pode usar o nó ElevenLabs aqui.
Configuração (OpenAI TTS):
Resource: Audio.
Operation: Speech.
Model: tts-1.
Input (Expression): {{ $json.message.content }} (A resposta gerada no Passo 5).
Voice: Escolha uma voz (ex: nova, shimmer).
Output Data Type: Binary.
Output Binary Property: Dê um nome, ex: response_audio.
Passo 7: Enviando a Resposta para o WhatsApp
Assim como o download, o envio de mídia também é um processo de duas etapas.
7.1: Upload do Áudio para a Meta
Precisamos enviar o áudio gerado para os servidores da Meta para obter um novo ID de mídia.
Adicione um nó HTTP Request.
Configuração:
Method: POST.
URL: https://graph.facebook.com/v19.0/<SEU_PHONE_NUMBER_ID>/media. (Substitua pelo seu ID).
Authentication: Seu Token de Acesso da Meta.
Body Content Type: Multipart/form-data.
Send Binary Data: Ative esta opção.
Input Data Property: response_audio (o nome definido no passo 6).
Adicione um parâmetro ao formulário:
Name: messaging_product, Value: whatsapp.
A resposta conterá o novo id da mídia.
7.2: Enviar a Mensagem de Áudio
Adicione um último nó HTTP Request.
Configuração:
Method: POST.
URL: https://graph.facebook.com/v19.0/<SEU_PHONE_NUMBER_ID>/messages.
Authentication: Seu Token de Acesso da Meta.
Body Content Type: JSON.
JSON/RAW Body (Expression):
JSON
{
"messaging_product": "whatsapp",
"to": "{{ $('Webhook').item.json.body.entry[0].changes[0].value.messages[0].from }}",
"type": "audio",
"audio": {
"id": "{{ $json.id }}"
}
}
Neste código, usamos expressões para preencher dinamicamente o número do cliente (obtido no nó 'Webhook') e o Media ID (obtido no nó anterior).
Testando e Ativando
Salve seu Workflow.
Se você usou a Test URL durante a configuração, certifique-se de que a Production URL esteja registrada na Meta.
Mude o status do Workflow para Active.
Pegue seu celular e envie uma mensagem de áudio para o número da sua empresa (ex: "Qual o horário de funcionamento?").
Se tudo estiver configurado corretamente, em poucos segundos você receberá uma resposta em áudio gerada pela IA!
Fechamento
Parabéns! Você implementou uma solução de atendimento de ponta. O n8n facilita a orquestração de ferramentas complexas de IA, permitindo que você crie experiências de usuário fluidas e naturais. Este é o primeiro passo para automatizar inteligentemente a comunicação da sua empresa e impressionar seus clientes.
.png)



Comentários