Crear un servidor webhook
Cuando se recibe una llamada entrante, Vonage realiza una solicitud a una URL de acceso público de tu elección, que denominamos answer_url. Necesitas crear un servidor webhook que sea capaz de recibir esta petición y devolver un OCN que contiene un connect que desviará la llamada al del usuario app. Esto se hace extrayendo el usuario de destino del archivo to parámetro de consulta y devolverlo en tu respuesta.
Nuevo proyecto
Crea un nuevo directorio de proyecto en la ubicación que prefieras y accede a él:
Dentro de la carpeta, inicializa un nuevo proyecto Node.js ejecutando este comando:
Añadir dependencias
A continuación, instale las dependencias necesarias:
Crear el archivo del servidor
Dentro de la carpeta de tu proyecto, crea un archivo llamado server.js y añade el código tal y como se muestra a continuación; asegúrate de sustituir SUBDOMAIN con un valor real. El valor utilizado formará parte de las URL que establecerás como webhooks en el siguiente paso.
'use strict';
const subdomain = 'SUBDOMAIN';
const express = require('express')
const app = express();
app.use(express.json());
app.get('/voice/answer', (req, res) => {
console.log('NCCO request:');
console.log(` - caller: ${req.query.from_user}`);
console.log(` - callee: ${req.query.to}`);
console.log('---');
let ncco = [{"action": "talk", "text": "No destination user - hanging up"}];
const username = req.query.to;
if (username) {
ncco = [
{
"action": "talk",
"text": "Connecting you to " + username
},
{
"action": "connect",
"endpoint": [
{
"type": "app",
"user": username
}
]
}
]
}
res.json(ncco);
});
app.all('/voice/event', (req, res) => {
console.log('EVENT:');
console.dir(req.body);
console.log('---');
res.sendStatus(200);
});
if(subdomain == "SUBDOMAIN") {
console.log('\n\t🚨🚨🚨 Please change the SUBDOMAIN value');
return false;
}
app.listen(3000);
const localtunnel = require('localtunnel');
(async () => {
const tunnel = await localtunnel({
subdomain: subdomain,
port: 3000
});
console.log(`App available at: ${tunnel.url}`);
})();
NOTA: Recuerde sustituir SUBDOMAIN con una cadena aleatoria de tu elección que contenga entre 4 y 20 caracteres alfanuméricos (letras y números, sin guiones bajos ni guiones).
El código del servidor anterior consta de dos partes:
El servidor Express
La primera parte crea un Express y lo hace disponible localmente en el puerto 3000. El servidor expone 2 rutas:
-
/voice/answeres elanswer_urlque mencionamos antes. Devuelve unJSONque contiene el usuario de destino de la llamada.Fíjate en que el
userse extrae delreq.query.toque Vonage envía como parte de la solicitud. Luego, la NCCO creada dinámicamente reenvía la llamada al teléfono de destino utilizando unconnectacción. -
El segundo,
/voice/eventestablecerás como destino para que Vonage te notifique todo lo que ocurra durante la llamada - - a esto lo llamamos elevent_url.
El localtunnel integración
La segunda parte del código del servidor anterior, expone la función Express para que sea accesible por los servidores de Vonage.
NOTA: localtunnel es una librería JavaScript que expone tu localhost al mundo para que puedas probarlo y compartirlo sin problemas. No hay necesidad de meterse con DNS o desplegar para que otros prueben sus cambios.
Iniciar el servidor
Ahora puedes iniciar el servidor ejecutando, en la terminal, el siguiente comando:
Aparecerá un mensaje indicándote que el servidor ya está disponible:
App available at: https://SUBDOMAIN.loca.lt
Por favor, ten a mano la ventana de la terminal, ya que necesitarás la URL en el siguiente paso.
Realizar una llamada de voz de aplicación a aplicación
Realizas una llamada de voz desde una aplicación iOS a otra aplicación iOS