Inicio rápido de voz programable para Node.js
Con solo un par de líneas de código, la aplicación de Node.js puede realizar y recibir llamadas telefónicas con voz programable de Twilio.
Este inicio rápido de Node.js te enseñará a hacerlo con el uso de nuestra API REST y la biblioteca auxiliar de Twilio para Node.js a fin de facilitar el desarrollo.
En este inicio rápido, aprenderás lo siguiente:
- Registrarte en Twilio y obtener tu primer número de teléfono de Twilio con voz habilitada
- Configurar tu entorno de desarrollo para realizar y recibir llamadas telefónicas
- Realizar una llamada telefónica saliente que reproduce MP3
- Recibir y responder una llamada telefónica entrante que lee un mensaje para el agente de llamada mediante la conversión de texto a voz
¿Prefieres ver un video para comenzar? Mira nuestro video sobre cómo hacer y recibir llamadas telefónicas con Node.js en YouTube.
Regístrate en Twilio y obtén un número de teléfono
Si ya tienes una cuenta de Twilio y un número de teléfono de Twilio con voz habilitada, ¡ya tienes todo listo! Inicia sesión y, a continuación, no dudes en ir al paso siguiente.
Antes de poder hacer una llamada desde Node.js, deberás registrarte para obtener una cuenta de Twilio o iniciar sesión en una cuenta que ya tengas.
Lo siguiente que necesitarás es un número de teléfono de Twilio con capacidad de voz. Si actualmente no posees un número de teléfono de Twilio con la funcionalidad de llamada por voz, deberás comprar uno. Después de ir a la página Buy a Number (Comprar un número), marca la casilla "Voice" (Voz) y haz clic en "Search" (Buscar).
A continuación, verás una lista de los números de teléfono disponibles y sus capacidades. Busca el número que más te guste y haz clic en "Buy" (Comprar) para añadirlo a tu cuenta.
Ahora que tienes una cuenta de Twilio y un número de teléfono programable, dispones de las herramientas básicas que necesitas para hacer una llamada telefónica.
Podrías usar la API HTTP de Twilio para hacer tus llamadas telefónicas, pero facilitaremos aún más las cosas mediante el módulo de Twilio para Node.js. Instalémoslo ahora.
Instala Node.js y el módulo Node.js de Twilio
Si ya has visto uno de nuestros inicios rápidos de Node.js y tienes Node.js y el módulo Node.js de Twilio instalados, puedes saltarte este paso e ir directamente a hacer tu primera llamada telefónica.
Para comprobar si ya tienes Node.js instalado en tu computadora, puedes abrir un terminal y ejecutar el siguiente comando:
$ node --version
Deberías ver algo así:
$ node --version
v8.9.1
Si tienes la versión 2.11 o una anterior, te recomendamos que actualices a la versión más reciente.
Si aún no tienes Node.js instalado, puedes instalarlo con Homebrew, otro administrador de paquetes; para ello, ve a tu terminal y escribe esto en la línea de comandos:
brew install node
Si tienes una computadora Windows, deberías instalar nvm-windows para tener tanto Node.js como npm, el administrador de paquetes de Node.js. Los usuarios de Windows pueden seguir este excelente tutorial aquí.
Instala el módulo Node.js de Twilio
La forma más fácil de instalar la biblioteca es usando npm, el administrador de paquetes de Node.js que te permite instalar las bibliotecas que necesitas. Simplemente inicia una interfaz de línea de comandos o terminal en tu computadora que ya tenga Node y npm instalados, y ejecuta el siguiente comando en un nuevo directorio.
npm install twilio
Realiza una llamada telefónica saliente con Node.js
Démosle un buen uso a la biblioteca de Twilio para Node.js.
Con una sola solicitud de API, podemos hacer una llamada saliente desde el número de teléfono de Twilio que acabamos de comprar. Abre un nuevo archivo llamado "make_call.js" y escribe o pega el siguiente código.
Este código inicia una llamada telefónica entre los dos números de teléfono que pasamos como argumentos. El número "from
" (de) es nuestro número de Twilio, y el número "to
" (a) es a quien queremos llamar.
El argumento URL
se dirige a elementos en TwiML, que le indican a Twilio qué hacer a continuación cuando nuestro destinatario contesta el teléfono. Este TwiML le indica a Twilio que lea un mensaje usando la conversión de texto a voz y que, luego, reproduzca MP3.
Sin embargo, antes de que este código funcione, necesitamos editarlo un poco para que sirva con tu cuenta de Twilio.
Reemplaza los valores de los marcadores de posición de credenciales
Cambia los valores de los marcadores de posición accountSid
y authToken
por tus credenciales personales de Twilio.
Ve a https://www.twilio.com/console e inicia sesión. En esta página, encontrarás tu Account SID (SID de cuenta) y Auth Token (Token de autenticación) únicos, que necesitarás cada vez que envíes mensajes a través de Twilio Client de esta forma. Para revelar tu token de autenticación, puedes hacer clic en el ícono de globo ocular:
Abre make_call.js
y reemplaza los valores de accountSid
y authToken
con tus valores únicos.
Nota: Está bien codificar de forma fija tus credenciales cuando comiences, pero debes utilizar las variables de entorno para mantenerlas en secreto antes de implementarlas en producción. Para obtener más información, fíjate en cómo establecer variables de entorno.
Sustituye los números de teléfono to y from
¿Recuerdas el número de teléfono con voz habilitada que compraste hace solo unos minutos? Sustituye el número from
(de) existente por ese número, y asegúrate de utilizar el formato E.164:
[+][código de país][número de teléfono con el código de área]
A continuación, reemplaza el número de teléfono to
(a) por tu número de teléfono celular. Este número podría ser cualquier teléfono que pueda recibir llamadas, pero es buena idea probar con el tuyo para que veas cómo funciona el proceso. Como se indicó anteriormente, debes utilizar el formato E.164 en este valor.
Guarda los cambios y ejecuta el código con el siguiente comando desde el terminal:
node make_call.js
¡Eso es todo! Tu teléfono debería sonar con una llamada de tu número de Twilio, y escucharás nuestro breve mensaje para ti. 😉
Si utilizas una cuenta de prueba de Twilio, las llamadas telefónicas salientes se limitarán a los números de teléfono que hayas verificado con Twilio. Los números de teléfono se pueden comprobar a través de los ID de agente de llamada verificados de la consola de Twilio. Para conocer las demás restricciones y limitaciones de la cuenta de prueba, consulta nuestra guía sobre cómo trabajar con tu cuenta de prueba gratuita de Twilio.
A continuación, aprenderemos a responder una llamada realizada a tu número de teléfono de Twilio. En primer lugar, necesitaremos poner en funcionamiento un servidor Express.
Recibe y responde llamadas de voz entrantes con Node.js y Express
Cuando tu número de Twilio reciba una llamada telefónica entrante, enviará una solicitud de HTTP a un servidor que controles. Este mecanismo de devolución de llamada se conoce como webhook. Cuando Twilio envía una solicitud a tu aplicación, espera una respuesta en el formato XML en TwiML que le indica cómo responder la llamada.
Para manejar llamadas telefónicas entrantes, necesitaremos una aplicación web ligera que acepte solicitudes de HTTP entrantes desde Twilio. Aunque puedes utilizar distintos marcos web para realizar y recibir llamadas desde tu aplicación, emplearemos Node.js con el marco Express en este inicio rápido.
En la línea de comandos, ejecuta
npm install express --save
Ahora generaremos un archivo llamado "server.js" y usaremos el siguiente código para crear un servidor que pueda manejar mensajes entrantes.
Ejecuta este servidor con el siguiente comando:
node server.js
Si abres el puerto local en http://127.0.0.1:1337/, verás que el servidor que se ejecuta en el puerto 1337 devuelve elementos en XML en el navegador con el mensaje que nos gustaría que se leyera a las llamadas entrantes.
Ahora, todo lo que tenemos que hacer es exponer este punto final a Twilio.
Permite que Twilio hable con tu aplicación
Antes de que puedas indicarle a Twilio qué hacer en respuesta a una llamada entrante, primero necesitas exponer tu servidor al público. Cuando ejecutas tu servidor de desarrollo local, hay probabilidades muy altas de que solo sea accesible desde tu red local. Pero no te preocupes: te mostraremos una forma sencilla de probar tu servidor.
Muchos productos y servicios de Twilio utilizan webhooks para comunicarse con tu aplicación. Por ejemplo, cuando Twilio recibe una llamada entrante, llega a una URL específica que proporcionas para buscar instrucciones sobre cómo manejar la respuesta.
El pequeño fragmento de código en server.js
es un ejemplo de una instrucción que puedes utilizar para "hablarle" al agente de llamada. Solo tenemos que encontrar una manera de exponer este servidor al público.
Aunque hay muchas formas de hacer público este código (por ejemplo, implementándolo en un host), recomendamos una herramienta llamada ngrok. Al iniciar ngrok, este proporciona una URL única en el dominio ngrok.io y reenvía las solicitudes entrantes a tu entorno de desarrollo local.
La arquitectura tiene este aspecto:
Si aún no usas ngrok, dirígete a la página de descarga y selecciona el número binario correspondiente según tu sistema operativo. Una vez descargado, descomprime el paquete.
Si trabajas con Mac o Linux, ya tienes todo listo. Si usas Windows, sigue nuestra guía sobre cómo instalar y configurar ngrok en Windows. Para obtener más información sobre ngrok, incluidos algunos consejos y trucos excelentes, revisa esta publicación detallada del blog.
Expone tu servidor local con ngrok
Una vez descargado, intenta ejecutar el archivo del servidor que creamos anteriormente:
node server.js
Tu aplicación local se debe ejecutar localmente para que ngrok haga su trabajo.
A continuación, abre una nueva pestaña o ventana de terminal, e inicia ngrok con este comando:
ngrok http 1337
Si el servidor local se ejecuta en un puerto diferente, reemplaza el 1337 por el número de puerto correcto.
Deberías ver un resultado similar a este:
Copia la URL pública de este resultado y pégala en el navegador. Deberías ver el mensaje "Hello from your pals at Twilio!" (¡Te saludan tus amigos de Twilio!) de la aplicación de Express.
Configura el webhook de Twilio
Ahora, debes tomar esa URL pública y configurarla como webhook para uno de tus números de teléfono en la consola. Vuelve a la consola, selecciona tu número de teléfono, cambia "A CALL COMES IN" (Entra una llamada) a Webhook y, a continuación, introduce la URL externa a tu servicio, como "https://069a61b7.ngrok.io/", tal como se muestra anteriormente.
Asegúrate de hacer clic en "save" (guardar) y vuelve al terminal. Asegúrate de que ngrok todavía se esté ejecutando en una pestaña y, en otra, ejecuta node server.js
si aún no se está ejecutando.
Realiza una llamada telefónica a tu número de teléfono de Twilio. En unos momentos, verás una solicitud de HTTP en la consola de ngrok y oirás un mensaje breve una vez que la llamada se conecte.
¡Y listo! Ya realizaste y recibiste con éxito una llamada mediante Node.js.
¿Dónde ir a continuación?
Ahora ya conoces los conceptos básicos de realizar y responder llamadas telefónicas con Node.js.
Esta app solo utilizó el verbo <Say> (Decir) en TwiML para leer un mensaje al agente de llamada mediante la conversión de texto a voz. Con diferentes términos en TwiML, puedes crear otras construcciones y flujos de llamada eficaces. Prueba algunos, como <Record> (Grabar), <Gather> (Recopilar) y <Conference> (Conferencia).
Consulta estas páginas para obtener más información:
- Consulta la documentación de referencia de la API de voz programable
- Recopila las entradas del usuario a través del teclado (tonos DTMF) en Node.js
- Obten información sobre cómo grabar llamadas telefónicas entrantes y salientes de Twilio Voice mediante Node.js y Express
- Crea llamadas de conferencia con Node.js
- Obten información sobre cómo modificar llamadas en curso
- Consulta nuestro tutorial de aplicación de muestra completa sobre cómo transferir llamadas de un agente de soporte a otro con Node.js y Express.
¡Nos emociona ver lo que construirás!
¿Necesitas ayuda?
Todos la necesitamos a veces; la programación es difícil. Obtén ayuda ahora de nuestro equipo de soporte, o recurre a la sabiduría de la multitud visitando Stack Overflow Collective de Twilio o navegando por la etiqueta de Twilio en Stack Overflow.