Como enviar notificações de voz
Uma ligação telefônica é um método de alta prioridade para o envio de alertas críticos. Neste guia, você aprenderá como automatizar notificações de voz para uma lista de destinatários, reproduzir uma mensagem personalizada e obter a confirmação do usuário por meio de entradas no teclado (DTMF).
Pré-requisitos
- A Account da Vonage
- Node.js instalado no seu computador.
- ngrok instalado no seu computador.
Inicialize a pasta do seu projeto
- Crie o ambiente onde seu código e suas chaves de segurança ficarão armazenados.
- Abra o terminal e crie um novo diretório:
- Inicialize o projeto e instale o SDK e o Express da Vonage:
Exponha seu servidor local
Vonage needs to send webhooks to your local machine. Use ngrok to expose your server:
Note: Keep this terminal open and copy your ngrok URL. You'll need it in the next steps.
Criar uma aplicação da Vonage
Gere suas credenciais pelo Painel e salve-as na pasta que você acabou de criar.
-
Faça login no Painel de Controle da Vonage.
-
Acesse Applications > Criar um novo aplicativo.
-
Autenticação: Clique Gerar chaves públicas e privadas.
- Um arquivo chamado
private.keyvai baixar. - Mova isso
private.keyarquivo da pasta “Downloads” para a suavoice-notificationspasta.
- Um arquivo chamado
-
Recursos: Ativar voz.
-
Nas configurações do Voice, defina os seguintes webhooks:
- URL da resposta:
https://{random-id}.ngrok.app/answer(Método: GET) - URL do evento:
https://{random-id}.ngrok.app/event(Método: POST)
- URL da resposta:
-
Clique Salvar alterações na parte de baixo.
Criar o servidor de webhooks (server.js)
Quando a Vonage atende uma chamada, ela busca um Objeto de Controle de Chamadas (NCCO) do seu answer_url. Esse array JSON define o “script” que a chamada segue.
Crie um arquivo chamado server.js e configurar o webhook para fornecer o NCCO:
const express = require('express');
const app = express();
app.use(express.json());
app.get('/answer', (req, res) => {
// NCCO defines what the recipient hears
res.json([
{
action: 'talk',
text: 'This is a priority notification. Please press 1 to confirm receipt.'
},
{
action: 'input',
type: [ 'dtmf' ],
dtmf: { maxDigits: 1 }
}
]);
});
app.post('/event', (req, res) => {
// Capture the button press
if (req.body.dtmf && req.body.dtmf.digits === '1') {
console.log(`✅ Confirmation received from UUID: ${req.body.uuid}`);
}
if (status) {
console.log(`Call Status Update: ${status} (UUID: ${req.body.uuid})`);
}
res.status(204).send();
});
app.listen(3000, () => console.log('🚀 Webhook server listening on port 3000'));
Crie o script de transmissão (broadcast.js)
Crie um arquivo chamado broadcast.js. Esse script aciona as chamadas de saída.
const { Vonage } = require('@vonage/server-sdk');
// --- 1. CONFIGURATION ---
const API_KEY = "YOUR_API_KEY";
const API_SECRET = "YOUR_API_SECRET";
const APP_ID = "YOUR_APP_ID";
const VONAGE_NUMBER = "YOUR_VONAGE_NUMBER";
const TUNNEL_URL = "https://{random-id}.ngrok.app" // From the ngrok step above
// --- 2. PLACEHOLDER PROTECTION ---
const config = { API_KEY, API_SECRET, APP_ID, VONAGE_NUMBER, TUNNEL_URL };
Object.keys(config).forEach(key => {
if (config[key].includes("YOUR")) {
console.error(`❌ ERROR: The ${key} placeholder has not been updated!`);
process.exit(1);
}
});
const vonage = new Vonage({
apiKey: API_KEY,
apiSecret: API_SECRET,
applicationId: APP_ID,
privateKey: './private.key'
});
const recipients = [
{ name: 'Alice', number: '15551234567' }
];
async function broadcast() {
for (const person of recipients) {
try {
const result = await vonage.voice.createOutboundCall({
to: [{ type: 'phone', number: person.number }],
from: { type: 'phone', number: VONAGE_NUMBER },
answer_url: [`${TUNNEL_URL}/answer`],
event_url: [`${TUNNEL_URL}/event`]
});
console.log(`☎️ Calling ${person.name}... (UUID: ${result.uuid})`);
} catch (err) {
console.error(`❌ Failed to call ${person.name}:`, err.message);
}
}
}
broadcast();
Substituir YOUR_VONAGE_NUMBER com qualquer um dos seus números da Vonage. Se você tiver uma conta nova na Vonage e ainda não tiver nenhum número, pode usar o número de teste 123456789 como identificador de chamadas e ligar para o número que você forneceu originalmente durante o cadastro. Observe que esse recurso está disponível apenas para contas de demonstração ou de teste até que você recarregue sua conta.
Teste sua notificação
- Inicie seu servidor: Execute
node server.jsna pasta do seu projeto. - Inicie a transmissão: em um terminal separado, execute
node broadcast.js. Seu telefone tocará, reproduzirá a mensagem e registrará sua confirmação no console quando você pressionar “1”.
Próximos passos
Personalização: Alterar conversão de texto em fala falar ou usar o fluxo configure no seu NCCO para reproduzir arquivos MP3 pré-gravados em vez da função de conversão de texto em fala.
IA de voz: Ouça a resposta do destinatário com conversão de fala em texto ou conectar um bot de voz com WebSocket.
Secretárias eletrônicas: Uso detecção de secretária eletrônica para deixar uma mensagem na caixa postal.
Escalabilidade: Para listas grandes, implemente um sistema de fila para respeitar a Vonage Limites de taxa.