https://d226lax1qjow5r.cloudfront.net/blog/blogposts/build-a-conference-call-with-the-nexmo-voice-api-and-ruby-on-rails-dr/ruby-conference-call-1.png

Crear una multiconferencia con Nexmo Voice API y Ruby on Rails

Publicado el May 14, 2021

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

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:

  1. Crear una aplicación Rails

  2. Exponer nuestra aplicación externamente para que Nexmo pueda comunicarse con ella.

  3. Configurar nuestra cuenta Nexmo, adquirir un número de teléfono Nexmo y crear una aplicación Nexmo Voice.

  4. Creación del controlador y las rutas Rails

Crear una aplicación Rails

Desde la línea de comandos ejecute lo siguiente:

rails new rails-conference-call --database=postgresql

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:

ngrok http 3000

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:

Voice menu options

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 name introducir campo de texto conference-call-demo

  • Event URL introduzca su URL ngrok: https://[ngrok url here]/event

  • Answer URL introduzca 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:

Number menu options

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.

buy numbers

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ú:

conference call

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:

  1. Da la bienvenida a la persona que llama con una talk acción

  2. Poner 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:

rails s

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:

https://a.storyblok.com/f/270183/384x384/e5480d2945/ben-greenberg.png
Ben GreenbergAntiguos alumnos de Vonage

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).