Cómo enviar notificaciones de voz
Una llamada telefónica es un método de alta prioridad para enviar alertas críticas. En esta guía, aprenderá a automatizar las notificaciones de voz a una lista de destinatarios, reproducir un mensaje personalizado y capturar la confirmación del usuario a través de la entrada del teclado (DTMF).
Requisitos previos
- A Account de Vonage
- Node.js instalado en su máquina.
- ngrok instalado en su máquina.
Inicializar la carpeta del proyecto
- Cree el entorno en el que vivirán su código y sus claves de seguridad.
- Abra su terminal y cree un nuevo directorio:
- Inicializa el proyecto e instala Vonage SDK y Express:
Exponga su 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.
Crear una aplicación de Vonage
Genera tus credenciales a través del Panel de control y guárdalas en la carpeta que acabas de crear.
Inicia sesión en el panel de Vonage.
Ir a Applications > Crear una nueva aplicación.
Autentificación: Haga clic en Generar claves públicas y privadas.
- Un archivo denominado
private.keyse descargará. - Mueve esto
private.keyde la carpeta Descargas en suvoice-notificationscarpeta.
- Un archivo denominado
Capacidades: Activar Voz.
En los ajustes de Voz, configure los siguientes webhooks:
- URL de respuesta:
https://{random-id}.ngrok.app/answer(Método:GET) - URL del evento:
https://{random-id}.ngrok.app/event(Método:POST)
- URL de respuesta:
Haga clic en Guardar cambios en la parte inferior.
Crear el servidor Webhook (server.js)
Cuando Vonage contesta una llamada, obtiene un Objeto de control de llamada (NCCO) de su answer_url. Este array JSON define el "script" que sigue la llamada.
Crea un archivo llamado server.js y configurar el webhook para proporcionar la OCNC:
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'));
Crear el script de difusión (broadcast.js)
Cree un archivo llamado broadcast.js. Este script activa las llamadas salientes.
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();
Sustituir YOUR_VONAGE_NUMBER con cualquiera de tus números de Vonage. Si tienes una nueva cuenta de Vonage sin números aún, puedes usar el número de prueba 123456789 como identificador de llamadas y llamar al número que proporcionaste originalmente durante la inscripción. Ten en cuenta que esta función sólo está disponible para cuentas demo o de prueba hasta que agregues crédito a tu Account.
Pruebe su notificación
- Inicie su servidor: Ejecute
node server.jsen la carpeta del proyecto. - Inicie la emisión: En otro terminal, ejecute
node broadcast.js. Su teléfono sonará, reproducirá el mensaje y registrará su confirmación en la consola cuando pulse "1".
Próximos pasos
Personalización: Cambia texto a voz voz o utilizar el flujo en tu OCN para reproducir archivos MP3 pregrabados en lugar de texto a voz.
Voz AI: Escuche la respuesta del destinatario con voz a texto o conectar un bot de voz con WebSocket.
Contestadores automáticos: Utilice detección de contestadores automáticos para dejar un mensaje de voz.
Escalabilidad: Para listas grandes, implanta un sistema de colas que respete Vonage Límites de tarifa.