
Compartir:
Ben es un desarrollador de segunda carrera que anteriormente pasó una década en los campos de la educación de adultos, la organización comunitaria y la gestión de organizaciones sin ánimo de lucro. Trabajó como defensor de los desarrolladores para Vonage. Escribe regularmente sobre la intersección entre el desarrollo comunitario y la tecnología. Originario del sur de California y residente durante mucho tiempo en Nueva York, Ben reside ahora cerca de Tel Aviv (Israel).
Crear una multiconferencia con Nexmo Voice API y Ruby on Rails
Tiempo de lectura: 8 minutos
En este tutorial vamos a crear una aplicación Ruby on Rails de multiconferencia que utiliza la Voice API de Nexmo. Dentro de la documentación de Nexmo, una llamada de conferencia también se conoce como una conversacióny utilizaremos estos términos indistintamente.
Puede encontrar el código completo de este ejemplo en GitHub.
Requisitos previos
ngrok para exponer nuestra aplicación Rails al exterior
Crear una multiconferencia con Ruby on Rails
Vamos a realizar las siguientes tareas para crear una multiconferencia ("conversación") con la Voice API de Nexmo:
Crear una aplicación Rails
Exponer nuestra aplicación externamente para que Nexmo pueda comunicarse con ella.
Configurar nuestra cuenta Nexmo, adquirir un número de teléfono Nexmo y crear una aplicación Nexmo Voice.
Creación del controlador y las rutas Rails
Crear una aplicación Rails
Desde la línea de comandos ejecute lo siguiente:
El comando anterior creará una nueva aplicación Rails con PostgreSQL como base de datos por defecto.
A continuación vamos a instalar nuestras dependencias de gemas en nuestra aplicación. Lo haremos ejecutando bundle install desde la terminal. También podemos ejecutar rake db:migrate para configurar la base de datos. No vamos a utilizar la base de datos en este tutorial para persistir los datos, pero usted podría agregar esa característica a su propia aplicación, si lo prefiere.
En este punto, configuraremos ngrok para obtener nuestra URL accesible externamente, que será utilizada por Nexmo para comunicarse con nuestra aplicación.
Exposición de la aplicación
Hay varias formas de hacer que nuestro servidor de desarrollo local sea accesible externamente, pero una de las formas más sencillas es con ngrok. Puedes leer este artículo para una explicación más detallada de cómo funciona ngrok. Sin embargo, para nuestros propósitos, sólo necesitamos ponerlo en marcha y copiar la URL que nos proporciona.
Para iniciar ngrok, abra una nueva ventana de terminal y ejecute lo siguiente desde la línea de comandos:
Ahora verá una interfaz de registro ngrok en su ventana de terminal. Cerca de la parte superior de la interfaz hay una línea que comienza con Forwarding y contiene dos URLs. La primera es la URL ngrok accesible externamente, que termina con ngrok.io seguido de http://localhost:3000que es tu servidor de desarrollo local. Ahora, cuando tú o Nexmo contacte con la URL ngrok.io URL, lo reenviará a tu servidor local.
Asegúrese de copiar la ngrok.io URL en un lugar seguro. La utilizaremos en el siguiente paso de configuración de nuestra cuenta Nexmo, número de teléfono y aplicación Voice.
Create a Nexmo Account with Phone Number and Voice Application (Crear una cuenta Nexmo con número de teléfono y aplicación de voz)
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.
Para que nuestra aplicación de voz funcione, necesitamos una cuenta Nexmo, un número de teléfono provisto por Nexmo, una aplicación Nexmo y, por último, necesitamos vincular nuestra aplicación a nuestro número de teléfono.
En el menú de la izquierda, haga clic en el Voice menu . Verá las cuatro opciones siguientes bajo APPLICATIONS:

Haga clic en la opción Create an application y accederá a una página en la que podrá configurar una nueva aplicación Nexmo.
Rellene el formulario con lo siguiente:
Application nameintroducir campo de textoconference-call-demoEvent URLintroduzca su URL ngrok:https://[ngrok url here]/eventAnswer URLintroduzca de nuevo su URL ngrok:https://[ngrok url here]/webhooks/answer
Cuando haya terminado, haga clic en el botón azul Create Application azul.
Ya ha creado una aplicación Nexmo Voice. Nuestro siguiente paso es comprar un número de teléfono Nexmo y vincularlo a esta aplicación.
En el Panel de control de Nexmo, haga clic en el elemento de menú Numbers en el menú de la izquierda. Verá que aparecen tres opciones:

Haga clic en la opción Buy numbers y accederá a una página en la que podrá elegir el país, las características, el tipo y los cuatro dígitos que desea que tenga el número.

Para nuestros propósitos: elija el país en el que se encuentra actualmente, para que la llamada sea una llamada local para usted; elija Voice para las características y móvil o fijo para el tipo. No necesita introducir nada en el campo Number campo de texto. Cuando pulse Searchverás una lista de números de teléfono disponibles.
Elija uno haciendo clic en el botón naranja Buy y volviendo a pulsar el botón naranja Buy una vez más en el mensaje de confirmación.
Una vez que posea el número, podrá vincularlo a su aplicación de conference-call-demo aplicación Voice. Para ello, haz clic en el icono de engranaje situado junto al número de teléfono y verás el siguiente menú:

Seleccione la conference-call-demo Applications de la lista desplegable y haga clic en el botón azul Ok azul. Su número de teléfono Nexmo está ahora vinculado a su aplicación Voice y listo para aceptar y reenviar llamadas telefónicas entrantes a través de proxy de voz.
Nuestro último paso antes de estar listos para ejecutar nuestra aplicación es definir nuestras acciones y Rutas del Controlador Rails.
Creación de controladores y rutas Rails
Cree un archivo Controller llamado conference_controller.rb en /app/controllers/. Dentro del Controlador vamos a definir una única acción de Controlador. La acción contendrá el Objeto de Control de Llamada Nexmo (NCCO) para crear la multiconferencia.
# conference_controller.rb
class ConferenceController < ApplicationController
skip_before_action :verify_authenticity_token
def answer
render json:
[
{
:action => 'talk',
:text => 'Welcome to the Nexmo powered conference call'
},
{
:action => 'conversation',
:name => 'nexmo-conversation'
}
].to_json
end
def event
end
end
La instrucción NCCO definida en el método #answer contiene dos acciones:
Da la bienvenida a la persona que llama con una
talkacciónPoner a la persona que llama en la conferencia telefónica, también denominada
conversation.
El nombre del conversation en la segunda acción de la OCNC se define en este punto. Puede llamarse cualquier cosa, y una vez definida inicialmente, todas las llamadas posteriores pueden dirigirse a ella. Además, todas las demás acciones NCCO conversation opciones pueden definirse para esta teleconferencia haciendo referencia al conversation nombre.
Por último, tenemos que definir las rutas en routes.rb para que nuestra aplicación Rails sepa a dónde dirigir la petición de Nexmo GET y a dónde dirigir POST las actualizaciones de estado que nuestra aplicación recibe de la API de Nexmo. Abrimos /config/routes.rb y añade lo siguiente:
# routes.rb
get '/webhooks/answer', to: 'conference#answer'
post '/event', to: 'conference#event'Observará que las rutas para los archivos GET y POST son las mismas URL que proporcionamos cuando configuramos nuestra aplicación Nexmo Voice en el Panel de control de Nexmo.
¡Nuestra aplicación está lista para funcionar! ¡Enhorabuena!
Ejecutar la aplicación
Para ejecutar su aplicación sólo tiene que ejecutar lo siguiente desde la línea de comandos:
Esto iniciará tu servidor Rails. En otra ventana de terminal, asegúrese de que ngrok también se está ejecutando. Ahora, llama a tu número de teléfono Nexmo y oirás que tu aplicación te dice: "Bienvenido a la multiconferencia impulsada por Nexmo". Puedes invitar a otras personas a unirse a tu multiconferencia facilitándoles el número de teléfono.
Lecturas complementarias
Si le interesa explorar y leer más, tenga en cuenta lo siguiente:
Compartir:
Ben es un desarrollador de segunda carrera que anteriormente pasó una década en los campos de la educación de adultos, la organización comunitaria y la gestión de organizaciones sin ánimo de lucro. Trabajó como defensor de los desarrolladores para Vonage. Escribe regularmente sobre la intersección entre el desarrollo comunitario y la tecnología. Originario del sur de California y residente durante mucho tiempo en Nueva York, Ben reside ahora cerca de Tel Aviv (Israel).
