
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.
Crear una multiconferencia con Node-RED
Tiempo de lectura: 13 minutos
Nota: Es posible que algunas de las herramientas o métodos descritos en este artículo ya no reciban soporte o no estén actualizados. Para obtener contenido actualizado o soporte, consulta nuestras últimas publicaciones o contáctanos en el Slack de la comunidad de Vonage
En tutoriales anteriores, has tenido la oportunidad de mojarte los pies en el mundo de las APIs de Nexmo, haciendo y recibiendo llamadas telefónicas utilizando la Voice APIy, con suerte, también personalizando estas experiencias.
En el tutorial de hoy, iremos un paso más allá y crearemos un servicio de conferencias basado en voz.
El usuario llama a un número virtual predefinido e introduce un identificador de reunión mediante el teclado de marcación. A continuación, se le coloca en la misma multiconferencia con todas las demás personas que hayan facilitado el mismo identificador.
Pasos:
Requisitos previos
Exponga su servidor local a Internet
Definir el punto final de Webhook para llamadas entrantes
Definir el punto final de Webhook para el evento de entrada
Crear una aplicación Nexmo Voice
Establecer un Numbers para llamar
Gestione sus eventos de llamadas
Pruébelo.
Requisitos previos
Antes de empezar, necesitarás algunas cosas:
Una forma de exponer tu servidor a Internet. Esto significa que estás ejecutando una versión alojada de Node-RED, o en caso de que estés desarrollando localmente, utilizando un servicio de túnel como ngrok-ponte al día con esto Primeros pasos con Ngrok en Node-RED tutorial
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.
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á un número virtual habilitado para voz. Ir a Numbers > Comprar Numbers para conseguir uno.
Buy number Nexmo dashboard
Configuración del editor Node-RED
En primer lugar, tendrá que instalar el tiempo de ejecución y el editor. Esto se puede hacer en tu máquina local, en un ordenador de placa única (por ejemplo, Raspberry Pi), o a través de varias opciones alojadas en la nube. Este ejemplo utilizará tu máquina local, así que una vez que hayas instalado Node-RED globalmente, 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 la parte izquierda de su pantalla-en su paleta de nodos, entre otros nodos por defecto.
Exponga su servidor local a Internet
La API Nexmo necesitará acceso a sus webhooks para hacer llamadas contra ellos, así que vamos a hacerlos accesibles a través de la Internet pública. Si está ejecutando Node-RED en un servidor web público en lugar de su máquina local, ya está todo listo para pasar a la sección Crear una Aplicación Nexmo Voice paso.
De lo contrario, una forma conveniente de hacerlo es utilizando un servicio de tunelización como ngrok.
En primer lugar, tendrás que instalar el nodo ngrok. Para ello, abra Administrar paleta en el menú hamburguesa de su editor Node-RED, busque el paquete node-red-contrib-ngrok y haz clic en instalar. Tras reiniciar el editor, el nodo ngrok debería aparecer en la paleta de nodos.
ngrok manage palette
El nodo ngrok toma las cadenas en o off para iniciar/detener el túnel, y muestra la dirección del host ngrok como la cadena msg.payload.
La forma más sencilla de configurar esto es cablear dos inject como entrada del nodo ngrok uno con la carga útil de la cadena en y el otro con apagado. Para facilitar su uso, también podría establecer el Name de estos nodos en las propiedades del nodo, para que quede claro qué funcionalidad tienen. A continuación, para mostrar la dirección del host en la barra lateral de depuración, conecte un nodo debug nodo después de ngrok.
Como último paso antes de pulsar Despliegueabra las propiedades del nodo ngrok y especifique el número de puerto. En el caso de Node-RED, el valor por defecto es 1880. La Región ngrok por defecto es US, pero también puedes establecerla en Europa o Asia. También puedes añadir tu authtoken para tu Account de ngrok si tienes uno. No te preocupes si no la tienes, omite este paso por ahora. El nodo advertirá que no está completamente configurado pero esto no es un problema.
ngrok node properties
Y ¡listo! Una vez que pulse Despliegue y haga clic en el botón en inject del nodo, navega a la URL mostrada en el área de depuración (YOUR_URL para futuras referencias) para encontrar tu editor Node-RED en una dirección pública.
ngrok node-red
Definir el punto final de Webhook para llamadas entrantes
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.
Cuando atienda llamadas entrantes, necesitará su OCN alojada en una URL de respuesta. En este caso, utilizaremos una acción talk para solicitar el ID de la reunión y, a continuación, una acción input para recogerlo.
Añada un nodo voice webhook a su lienzo, seguido de un nodo talk un nodo input y un nodo return NCCO nodo de salida.
A continuación, en el nodo voice webhook seleccione GET como Method y escriba /answer en el campo URL de respuesta.
En las talk ajuste el campo Text{} con el mensaje que desea que se lea cuando se responda a la llamada. Por ejemplo, "Por favor, introduzca el ID de la reunión". También puede seleccionar un Voice Nameconsulte la Guía de texto a voz para ver la lista completa de opciones.
Por último, abra el input editor de nodos, establece YOUR_URL/input como URL {} y POST como Method.
En este momento también puedes configurar un par de parámetros más para personalizar aún más la experiencia:
| Name | Description |
|---|---|
Submit On Hash: |
Set to true so the caller's activity is sent to your webhook endpoint at YOUR_URL/input after they press #. If # is not pressed the result is submitted after Time Out seconds. The default value is false. |
Time Out: |
The result of the caller's activity is sent to the YOUR_URL/input webhook endpoint Time Out seconds after the last action. The default value is 3. Max is 10. |
Max Digits: |
The number of digits the user can press. The maximum value is 20, the default is 4 digits. |
Más información en la NCCO Referencia.
conference answer url
Definir el punto final de Webhook para el evento de entrada
También necesitará un segundo punto final para capturar la entrada DTMF del usuario y, en función del código que haya enviado, colocarlo en una conversación.
Añada otro nodo voice webhook a su lienzo, seguido de un nodo talk un nodo conversation nodo y un return NCCO nodo de salida.
voice webhook
En las voice webhook propiedades del nodo, seleccione POST como método y escriba /input en el campo URL de respuesta.
Si conectara un debug nodo después de él, tras finalizar y ejecutar el flujo, verías los parámetros devueltos a la /input URL:
| Name | Description |
|---|---|
uuid |
The unique ID of the Call leg for the user initiating the input. |
conversation_uuid |
The unique ID for this conversation. |
timed_out |
Returns true if this input timed out based on the value of Time Out. |
dtmf |
The numbers input by your caller, in order. |
En nuestro caso de uso, estamos intentando obtener el valor dtmf ya que es el ID de la reunión proporcionado por la persona que llama.
Echando un vistazo más de cerca a la barra lateral de depuración en las terminaciones, podemos ver que va a estar en la dtmf del objeto call anidado dentro del objeto msg por lo que podemos referenciarlo como {{msg.call.dtmf}} en los otros nodos de esta ruta.
dtmf debug
talk
A continuación, abra el editor de nodos talk y establezca el campo Text{} con el mensaje que desea que se lea una vez que la persona que llama introduzca el ID de la reunión.
Fíjese en el {} junto a la etiqueta Text que indica que este valor puede definirse dinámicamente mediante la plantilla plantillas Mustachepor lo que podría usar algo como Joining meeting {{msg.call.dtmf}}.
No dude en personalizar aún más la experiencia seleccionando un Voice Name o utilizando las etiquetas etiquetas SSML
conversation
Estamos utilizando la acción conversation para crear una conferencia estándar, por lo que el único parámetro que tenemos que establecer es Name {}. Al utilizar la acción de conversación con el mismo nombre se reutiliza la misma Conversación persistente, por lo que es práctico nombrarla con el ID de la reunión, haciendo referencia a {{msg.call.dtmf}} La primera persona que llama al número virtual asignado a la conversación la crea.
conference conversation node
En el futuro, tal vez quieras ir un paso más allá y crear una Conversación moderada con controles de audio selectivos. Consulte la referencia NCCO para obtener más información.
Una vez que haya terminado con esta ruta, debe ser similar a esto:
conference input url
Crear una aplicación Nexmo Voice
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.
Arrastre cualquiera de estos nodos a su espacio de trabajo y haga doble clic sobre él para abrir las propiedades del nodo.
Junto al icono 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 Conference Call. |
API Key |
Your Nexmo API key, shown in your account overview. |
API Secret |
Your Nexmo API secret, shown in your account overview. |
Answer URL |
YOUR_URL/answer, you'll be hosting a Nexmo Call Control Object (NCCO) here. - more about this later on. |
Event URL |
YOUR_URL/event, you'll need to reference this when setting up the event handler. |
Node-RED creará entonces una nueva Nexmo Application en tu Account y rellenará los campos App ID y Private Key para que los guardes. Después de este paso, no dude en eliminar el nodo Nexmo que utilizó, como un nexmovoiceapp que contiene todas las credenciales Nexmo que este flujo necesita.
conference create voice app
Establecer un Numbers para llamar
A continuación, tendrás que vincular tu número virtual a esta aplicación.
Encuentre la Aplicación Voice que acaba de crear en su Panel Nexmo navegando hasta Voice > Tus Applications.
Haga clic en el nombre de esta aplicación y, a continuación, en la sección Numbers haga clic en el botón Enlace situado junto al número virtual que ha alquilado anteriormente.
Si el número que desea utilizar ya está vinculado a otra aplicación, haga clic en Gestionar número y configúralo para desviar las llamadas entrantes a tu aplicación.
conference link number
Consejo extra: Utilice un comment para anotar el número Nexmo vinculado a tu aplicación, así lo tendrás siempre a mano.
Gestione sus eventos de llamadas
Si desea recibir eventos sobre el progreso de su llamada, también puede configurar un webhook de eventos.
Conectar un http nodo de entrada a un nodo http response así como a un nodo debug para que puedas ver los eventos de llamada en el área de depuración.
En el nodo http nodo de entrada, seleccione POST como Method y rellene el campo URL con /event.
El nodo http response debe tener 200 como Status codepero no se preocupe por ello; éste es también el valor por defecto.
conference final flow
¡Pruébelo!
Y eso es todo. Consigue un amigo o más y ¡dale una vuelta! No olvides echar un vistazo a la zona de depuración para seguir los eventos de tu llamada. Que lo disfrutes.
¿Y ahora qué?
Recursos:
Prueba con otro tutorial:
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.
