
Compartir:
Julia está comprometida con la capacitación de los desarrolladores mediante la creación de tutoriales, guías y recursos prácticos. Con experiencia en divulgación y educación, su objetivo es hacer que la tecnología sea más accesible y mejorar la experiencia general de los desarrolladores. A menudo se la puede encontrar en eventos de la comunidad local.
Cómo hacer llamadas de texto a voz con Node-RED
Tiempo de lectura: 11 minutos
Este es el cuarto artículo de la serie de tutoriales "Primeros pasos con Nexmo y Node-RED".
En los tutoriales anteriores has aprendido cómo enviar y recibir mensajes SMS de forma programática utilizando la API Nexmo y cómo manejar las llamadas entrantes. A continuación, aprenderás sobre las llamadas salientes y, al final de este artículo, habrás realizado tu primera llamada telefónica de texto a voz (TTS) con Node-RED.
Requisitos previos
Antes de empezar, necesitarás algunas cosas:
Opcional: ngrok - póngase al día con Aaron's blog post
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Obtener sus credenciales
Para interactuar con la Voice API, tendrás que tener en cuenta un par de cosas. Una vez que haya creado una Account de Nexmo, vaya al panel de control para encontrar tu clave y secreto API. A continuación, necesitarás un número virtual habilitado para Voice. Ir a Numbers > Comprar Numbers para conseguir uno.

Configuración del editor Node-RED
En primer lugar, tendrá que instalar el tiempo de ejecución y el editor. Esto puede hacerse en tu máquina local, en un ordenador de placa única (por ejemplo, Raspberry Pi), o en una serie de opciones alojadas en la nube. Este ejemplo utilizará tu máquina local, así que una vez que hayas instalado Node-RED globalmente, simplemente escribe el siguiente comando en tu terminal para empezar.
A continuación, puede acceder al editor Node-RED dirigiendo su navegador a http://localhost:1880.
Una vez que tengas tu editor abierto, necesitarás instalar los nodos Nexmo. Puedes hacerlo en la Gestionar paleta buscando el paquete node-red-contrib-nexmo y haciendo clic en instalar.

Ahora debería ver todos los nodos Nexmo aparecer en el lado izquierdo de su pantalla, entre los otros nodos por defecto.
Haz una llamada de texto a voz con Node-RED
Creación de una aplicación Nexmo
Algunas de las API de Nexmo, incluida la Voice API, utilizan Nexmo Applications para mantener la información de seguridad y configuración necesaria para conectarse a los puntos finales de Nexmo.
En la paleta Nexmo Node-RED, varios nodos tienen la capacidad de crear estas Applications: getrecording, earmuff, mute, hangup, transfer, createcall, playaudio, playtts y playdtmf.
Dado que el objetivo final es realizar una llamada saliente, utilice el nodo createcall que realizará una llamada saliente utilizando la OCNC creada anteriormente.
Una vez que lo tenga en su espacio de trabajo, haga doble clic en el nodo createcall para abrir el editor de nodos. Junto al nodo Nexmo Credentialsseleccione "Añadir nueva nexmovoiceapp..." en el menú desplegable y haga clic en el botón de edición. Rellene los siguientes datos y haga clic en Create New Application.
| KEY | DESCRIPTION |
|---|---|
Name |
Choose a name for your Voice Application, for example TTS call Node-RED. |
API Key |
Your Nexmo API key, shown in your account overview. |
API Secret |
Your Nexmo API secret, shown in your account overview. |
Answer URL |
The URL that Nexmo makes a request to when handling inbound calls. Won't need one for this tutorial, so use http://example.com for now. |
Event URL |
Nexmo will send call events (e.g. ringing, answered) to this URL. If you’d like to receive events about the progress of your call, make sure your server is exposed to the internet, then use YOUR_URL/event for this field.\ |
\
Si no, puede utilizar http://example.com, que responderá con 200 OK.
\
También puede anular este eventURL para un nodo específico createCall en sus propiedades.
Node-RED creará una nueva Nexmo Application en tu Account y rellenará los campos App ID y Private Key para que los guardes. Ahora puedes encontrar esta aplicación en tu Panel Nexmo bajo Voice > Tus Applications.

Construir el Objeto de Control de Llamada Nexmo (NCCO)
Las llamadas de Nexmo se controlan mediante Objetos de control de llamadas Nexmotambién conocidos como NCCOs. Un NCCO define una lista de acciones a seguir cuando se gestiona una llamada. Hay muchas acciones diferentes disponibles, encuentra los nodos correspondientes bajo la paleta Nexmo en tu editor Node-RED o consulta la Referencia NCCO para obtener más información.
En este tutorial, utilizaremos la acción talk acción.
Una vez que la OCNC esté lista, se pasará al nodo createcall que se utilizará para realizar la llamada saliente. Este nodo createcall nodo toma 3 tipos de entrada para NCCO en el Answer campo: JSON, URL o msg.ncco. Dependiendo de cuál elija, hay 3 formas correspondientes de construir la NCCO, como sigue.
msg.ncco
Arrastre y suelte el nodo talk en su área de trabajo, haga doble clic sobre él para abrir las propiedades del nodo y establezca el campo Text{} con el mensaje que desea que se lea cuando se responda a la llamada. Fíjate en el signo {} junto a la etiqueta Text que indica que este valor puede establecerse dinámicamente utilizando la plantilla plantillas Mustache. También puede seleccionar un Voice Nameconsulte la Guía de texto a voz para consultar la lista completa de opciones.
A continuación, conecte talk al nodo createcall y en las propiedades del nodo createcall propiedades del nodo seleccione msg.ncco en el menú Answer del menú desplegable.

JSON
Si prefieres escribir tu OCNC como JSON, en lugar de utilizar los nodos de acción, puedes hacerlo en el nodo createcall nodo. Abra las propiedades del nodo y seleccione JSON en el campo Answer campo. Despliega el editor JSON y pega el fragmento que aparece a continuación:
[
{
"action": "talk",
"text": "This is a text to speech message from Nexmo"
}
]Asegúrese de que ha establecido talk como action, pero siéntase libre de personalizar el text.

Respuesta URL
Alternativamente, puede servir la NCCO en un AnswerURL. En este caso, también tendrás que exponer tu servidor local a Internet.
Arrastre y suelte el nodo talk a su espacio de trabajo, luego conéctelo a un nodo de voice webhook nodo de entrada y un return NCCO nodo de salida. A continuación, en el nodo voice webhook seleccione GET como método y escriba algo como /answer en el campo URL de respuesta.
Por último, vaya a las propiedades del nodo talk y establezca el campo Text{} con el mensaje que desea que se lea cuando se responda a la llamada. Fíjate en el signo {} junto a la etiqueta Text que indica que este valor puede establecerse dinámicamente utilizando la plantilla plantillas Mustache.
También puede seleccionar un Voice NameConsulte la Guía de texto a voz para ver la lista completa de opciones.

Exponer su servidor local a Internet
A continuación tendrás que exponer tu servidor local a Internet, para que Nexmo pueda acceder a él. Si está ejecutando Node-RED en un servidor web público en lugar de su máquina local, puede saltarse esta etapa.
De lo contrario, una forma conveniente de hacerlo es utilizando un servicio de tunelización como ngrok.
Descargue e instale ngroky ejecútelo en el terminal para iniciar un túnel en el puerto 1880.
Navegue hasta la URL mostrada, para encontrar su Editor Node-RED.
Por último, vaya a las createcall propiedades del nodo, seleccione URL en el menú Answer y rellene el campo con YOUR_URL/answer

Realización de la llamada saliente
A continuación, echemos un vistazo a las propiedades del nodo createcall propiedades del nodo. Para realizar realmente la llamada saliente, hay que rellenar algunos datos más.
En primer lugar, seleccione Phone en el menú Endpoint del menú desplegable. Esto desviará la llamada a un número de teléfono, que puede especificar en el campo de texto situado junto a la etiqueta Number{} etiqueta.
Observe el signo {} que significa que Plantillas Mustache para estos campos. Puede introducir aquí un número de teléfono, o pasarlo dinámicamente utilizando un nodo inject y, en este caso, referenciarlo con {{msg.payload}}.
Pasando al siguiente paso, configure uno de sus números virtuales como From{} número.
Añade un nodo inject al flujo y conéctalo como entrada para createcall. En las propiedades del nodo, selecciona Number en el menú desplegable Payload y rellena el campo de texto situado junto a él con el número de teléfono al que deseas llamar en formato E.164. Por ejemplo 447401234567.
Para tener una idea más clara de lo que ocurre al realizar la llamada, conecte la salida de createcalla un nodo debug nodo.
Ahora pulse Despliegue y haz clic en el botón inject tu teléfono debería estar sonando en cualquier momento.

Opcional: Webhook de eventos
Si quieres recibir eventos sobre el progreso de tu llamada, también puedes configurar un webhook de eventos. En primer lugar, tendrás que configurar un controlador de eventos y, a continuación, exponer tu servidor local a Internet.
Configurar un manejador para el evento URL
Conectar un http nodo de entrada a un nodo http response así como a un nodo debug nodo, para que pueda ver su recibo de entrega en el área de depuración.
En el nodo http nodo de entrada, seleccione POST como Method y rellene el campo URL con algo como /event. El nodo http response debe tener 200 como Status codepero no te preocupes, este es también el valor por defecto.

Exponer su servidor local a Internet
A continuación tendrás que exponer tu servidor local a Internet, para que Nexmo pueda acceder a él. Si estás ejecutando Node-RED en un servidor web público, o has optado por servir la NCCO en un AnswerURL, puedes saltarte este paso.
De lo contrario, una forma conveniente de hacerlo es utilizando un servicio de tunelización como ngrok.
Descargue e instale ngroky ejecútelo en el terminal para iniciar un túnel en el puerto 1880.
Navegue hasta la URL mostrada, para encontrar su Editor Node-RED.

Actualizar la URL del evento
Por último, abra las propiedades del nodo createcall propiedades del nodo y rellene el campo Event URL con YOUR_URL/event.

Visite Despliegue y haga clic en el botón inject su teléfono sonará en cualquier momento. Ahora también puedes seguir el flujo de tu llamada en la barra lateral de depuración.
¿Y ahora qué?
Más información sobre la Voice API
Consulte la Referencia NCCO para conocer las múltiples formas de controlar su llamada.
Eche un vistazo a Node-RED
Compartir:
Julia está comprometida con la capacitación de los desarrolladores mediante la creación de tutoriales, guías y recursos prácticos. Con experiencia en divulgación y educación, su objetivo es hacer que la tecnología sea más accesible y mejorar la experiencia general de los desarrolladores. A menudo se la puede encontrar en eventos de la comunidad local.
