
Compartir:
Michael Crump trabaja en Vonage en el equipo de experiencias para desarrolladores y es programador, YouTuber y conferenciante habitual sobre diversos temas de desarrollo de .NET, la nube y las comunicaciones. Le apasiona ayudar a los desarrolladores a comprender las ventajas de cada uno de ellos de una forma sencilla.
Cómo gestionar las llamadas telefónicas entrantes con Node.js
Tiempo de lectura: 5 minutos
Introducción
La Voice API de Vonage es la manera más fácil de crear aplicaciones de voz de alta calidad en la nube. Con Voice API, puedes..:
Cree aplicaciones escalables con las tecnologías web que ya utiliza.
Controle el flujo de llamadas entrantes y salientes en JSON con Objetos de control de llamadas Nexmo (NCCO). (Nota: Nexmo es ahora Vonage).
Grabar y almacenar llamadas entrantes o salientes
Crear conferencias telefónicas
Envía mensajes de texto a voz en 40 idiomas con diferentes géneros y acentos.
Y mucho más.
En este tutorial, aprenderás cómo recibir llamadas entrantes implementando un webhook usando Node.js.
Requisitos previos
Antes de empezar, asegúrate de tener lo siguiente:
Node.js instalado. Node.js es un entorno de ejecución JavaScript multiplataforma de código abierto.
ngrok - Se requiere una Account gratuita. Esta herramienta permite a los desarrolladores exponer a Internet un servidor de desarrollo local.
OPCIONAL - CLI de Vonage Una vez instalado Node.js, instala la CLI escribiendo
npm install -g @vonage/cli. Esta herramienta te permite crear y administrar aplicaciones de Vonage desde una interfaz de línea de comandos frente al portal para desarrolladores de Vonage.
Crear una aplicación de Vonage habilitada para voz
Para utilizar la Voice API de Vonagedebes crear una aplicación de Vonage desde el portal para desarrolladores. Si no tienes una Account, entonces adelante y crea una, ya que proporcionamos créditos para comenzar. No se requiere tarjeta de crédito.
Necesitaremos configurar los webhooks de la aplicación y más. Ten en cuenta que esto se puede lograr a través del Portal para desarrolladores de Vonage o la CLI de Vonage. Para este tutorial, usaremos Vonage Developer Dashboard.
Después de crear una Account, inicie sesión en Vonage Developer Dashboard, busque la Sección de aplicacionesy crea una nueva aplicación. Dale un nombre a tu aplicación, por ejemplo Llamada entrante.
InboundCall.png
Desplácese hacia abajo por la página y asegúrese de que la opción Voice esté activada.
Anote Respuestay Evento ya que las completaremos en breve. Dejaremos la URL de reserva en blanco.
VoiceCapability.png
Pulse Generar nueva solicitud en la parte inferior de la página para continuar.
Este tutorial también utiliza un número de teléfono virtual. Para adquirir uno, vaya a Numbers > Comprar Numbers y busca uno que se ajuste a tus necesidades. Una vez que tengas un Numbers, enlázalo al Vonage Developer Dashboard, como se muestra a continuación.
LinkedNumber.png
A continuación, vamos a utilizar ngrok para exponer nuestros puntos finales webhook en nuestra máquina local como una URL pública.
Ejecutar ngrok
ngrok es una aplicación multiplataforma que permite a los desarrolladores exponer un servidor de desarrollo local a Internet con un esfuerzo mínimo. Lo usaremos para exponer nuestro servicio a Internet. Una vez que tengas ngrok configurado y hayas iniciado sesión (de nuevo, la cuenta gratuita es aceptable), ejecuta el siguiente comando:
ngrok http 4001Después de que ngrok se ejecute, te dará un Reenvío que usaremos como base para nuestros Webhooks más adelante en el artículo. La mía tiene el siguiente aspecto:
ngrok.png
Recuerde Respuesta y evento en el portal para desarrolladores de Vonage, como mencionamos anteriormente? Tendremos que usar la URL de ngrok y completar cada campo, agregando /answer y /eventpara la URL de la respuesta y la URL del evento.
webhooksection.png
Cuando se llama al número asociado a la aplicación y ésta contesta, el webhook definido en la URL URL de respuesta se activa. Del mismo modo, los eventos se registran con una solicitud POST y se activan al llamar al número o si el número está ocupado, etc.
Configuración del proyecto Node.js
Ahora que hemos creado nuestra aplicación Voice de Vonage dentro del panel de desarrollador, veamos cómo debemos configurar nuestra aplicación Node.js.
Comience por ir a un símbolo del sistema / terminal, la creación de un directorio de trabajo, y la inicialización de un proyecto Node.js.
Gestionaremos las solicitudes con Express y utilizaremos analizador de cuerpos para analizar los cuerpos de las peticiones entrantes. Instala ambos con:
npm install express body-parser --saveCree un index.js archivo, instanciar express, y escuchar al servidor en el puerto 4001. Como has configurado tu ngrok para exponer localhost:4001debes mantener el mismo puerto.
'use strict'
const app = require('express')();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const server = app.listen(process.env.PORT || 4001, () => {
console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env);
});
Definamos el punto final de la URL de respuesta como /answer y la URL del evento como /event.
Cree una ruta HTTP GET para gestionar las solicitudes de /answer para recuperar su OCN:
app.get('/answer', function (req, res) {
const ncco = [
{
action: 'talk',
voiceName: 'Jennifer',
text: 'Hello, thank you for calling. This is the Jennifer voice from Vonage.'
}
];
res.json(ncco);
});Defina su texto para que lo lea una voz sintetizada en JSON (u objeto JavaScript, en este caso). Puede personalizar el objeto NCCO con parámetros opcionales con varios agentes por idioma, género e incluso acento.
El endpoint para el event_url debe ser POST, así que definamos /event:
app.post('/event', function (req, res) {
console.log(req.body);
res.status(204).end();
});Ten en cuenta que vamos a monitorizar el estado de nuestro terminal. Vea este ejemplo de código para un ejemplo de un fallback que maneja cosas como un timeout, si el número está ocupado, no contestado, etc.
Ejecutar la aplicación
Escriba lo siguiente en el símbolo del sistema/terminal para ejecutar la aplicación:
node index.js¡Hagamos una llamada para ver si su aplicación funciona! Llama a tu número virtual desde tu teléfono físico. Si todo funciona, deberías escuchar el mensaje que has definido en tu OCN.
Consulte también su terminal para comprobar el estado de su llamada. A continuación se muestra un ejemplo de cómo se ve el mío:
{
headers: {},
from: '19999999999',
to: '19999999999',
uuid: '912e...',
conversation_uuid: 'CON-07f...',
status: 'ringing',
direction: 'inbound',
timestamp: '2023-02-22T19:27:47.276Z'
}El estado cambiará en función del evento en el que se encuentre la llamada. Por ejemplo, empezamos con ringing, luego pasamos a startedluego answeredy finalmente completed si la llamada se ha realizado correctamente.
Resumen
Ahora que has creado una llamada entrante con la Voice API de Vonage y Node.js, ¿por qué no aprendes a enviar mensajes de texto a voz en más de 40 idiomas? También puedes obtener más información sobre nuestra Voice API y sumergirte en varios fragmentos de código.
Si tienes preguntas o comentarios, únete a nosotros en el Slack para desarrolladores de Vonage o envíame un Tweet a Twittery te responderé. Gracias de nuevo por leer, ¡y te espero en el próximo!
Compartir:
Michael Crump trabaja en Vonage en el equipo de experiencias para desarrolladores y es programador, YouTuber y conferenciante habitual sobre diversos temas de desarrollo de .NET, la nube y las comunicaciones. Le apasiona ayudar a los desarrolladores a comprender las ventajas de cada uno de ellos de una forma sencilla.