You are viewing the Spanish (Mexico) site, but your language preference is set to English. Switch to English site →

Menu

Expand
Calificar esta página:

Inicio rápido de voz programable para Ruby

Con solo unas pocas líneas de código, la aplicación de Ruby puede realizar y recibir llamadas telefónicas con voz programable de Twilio.

Este inicio rápido para Ruby te enseñará a hacerlo con el uso de nuestra API REST, la biblioteca auxiliar de Twilio para Ruby y el marco Sinatra de Ruby a fin de facilitar el desarrollo.

En este inicio rápido, aprenderás a realizar estas acciones:

1. Registrarte en Twilio y obtener tu primer número de teléfono de Twilio con voz habilitada
2. Configurar tu entorno de desarrollo para realizar y recibir llamadas telefónicas
3. Realizar una llamada telefónica saliente que reproduzca MP3
4. 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 realizar y recibir llamadas telefónicas con Ruby en YouTube.

¡Muéstrame cómo se hace!

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 Ruby, necesitarás una cuenta de Twilio. Regístrate aquí para obtener una cuenta de prueba gratuita o inicia 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).

Search for a voice-enabled phone number

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.

Purchase a voice-enabled phone number from Twilio

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 la biblioteca auxiliar oficial de Twilio para Ruby. Instalémosla a continuación.

Guíame a través de la configuración.

Instala Ruby y la biblioteca auxiliar de Twilio

Si ya has visto uno de nuestros otros inicios rápidos para Ruby y tienes Ruby y la biblioteca auxiliar de Twilio para Ruby instalados, puedes saltarte este paso e ir directamente a hacer tu primera llamada telefónica.

Para hacer tu primera llamada telefónica, necesitarás tener Ruby y la biblioteca auxiliar de Twilio para Ruby instalados.

Instala Ruby

Si usas un equipo Mac o Linux, es probable que ya tengas Ruby instalado. Para comprobarlo, abre un terminal y ejecuta el siguiente comando:

ruby --version

Deberías ver algo como así:

$ ruby --version
ruby 2.7.2

Los usuarios de Windows pueden usar RubyInstaller para instalar Ruby.

El SDK de Ruby de Twilio se sometió a pruebas y admite versiones de Ruby desde la 2.4 hasta la 3.0. (¿Tienes una versión anterior de Ruby? Puedes utilizar rbenv, RVM o Homebrew para actualizar a la versión mínima compatible).

Instala la biblioteca auxiliar de Twilio para Ruby

La forma más fácil de instalar twilio-ruby es desde RubyGems.

gem install twilio-ruby


Instalación manual
O bien, puedes clonar el código fuente de twilio-ruby e instalar la biblioteca desde allí.

"Permiso denegado"
Si la línea de comandos te devuelve un mensaje de error largo que dice Permission Denied (Permiso denegado) en medio de ella, intenta ejecutar los comandos anteriores con sudo: sudo gem install twilio-ruby.

¡Todo listo! Hagamos esa llamada telefónica.

Realiza una llamada telefónica saliente con Ruby

Ahora que tenemos Ruby y twilio-ruby instalados, podemos hacer una llamada telefónica saliente con una sola solicitud de API desde el número de teléfono de Twilio que acabamos de comprar. Crea un nuevo archivo llamado make_call.rb y escribe o pega este ejemplo de código.

        
        
        

        Make a phone call using Twilio

        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 (Twilio Markup Language), que le indica 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 account_sid y auth_token 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:

        Reveal Your Auth Token

        Abre make_call.rb y reemplaza los valores de account_sid y auth_token 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.

        Sustituir 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. Podría ser cualquier número de teléfono que pueda recibir llamadas, pero es buena idea probar con tu teléfono 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 guion desde el terminal:

        ruby make_call.rb


        ¡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 Sinatra.

        ¡Vamos!

        Instala Sinatra y configura el entorno de desarrollo

        Con el fin de recibir y responder los mensajes SMS entrantes, necesitaremos crear una aplicación web muy ligera que pueda aceptar solicitudes entrantes. Usaremos Sinatra para este inicio rápido, pero si prefieres utilizar Rails, puedes encontrar instrucciones en esta publicación de blog.

        Primero, necesitas un Gemfile con el siguiente contenido:

        # Gemfile
        source 'https://rubygems.org'

        gem 'sinatra'
        gem 'twilio-ruby'

        Los proyectos de Ruby usan Bundler para administrar dependencias, por lo que el comando para extraer Sinatra y el SDK de Twilio en nuestro entorno de desarrollo es bundle install (si todavía no tienes Bundler instalado en tu equipo, deberás ejecutar gem install bundler primero).

        $ bundle install
        ...
        Utiliza "bundle show [gemname]" para ver dónde está instalado el archivo gem empaquetado.

        Crea una aplicación de Sinatra simple

        Para probar que nuestro entorno de desarrollo esté configurado correctamente, podemos crear una aplicación de Sinatra simple. Tomaremos el ejemplo de la documentación de Sinatra y lo colocaremos en un nuevo archivo llamado "quickstart.rb".

        require 'sinatra'
        require 'twilio-ruby'

        get '/' do
        content_type 'text/xml'

        Twilio::TwiML::VoiceResponse.new do | response |
        response.say(message: "Hello World")
        end.to_s
        end

        Entonces podemos intentar ejecutar nuestra nueva aplicación de Sinatra con el comando ruby quickstart.rb. A continuación, puedes abrir http://localhost:4567 en el navegador y deberías ver la respuesta <?xml version="1.0" encoding="UTF-8"?><Response><Say>Hello World</Say></Response>.

        Todo listo. ¿Cómo se comunica Twilio con mi nueva aplicación?

        Permite que Twilio hable con tu aplicación de Sinatra

        Estamos creando una pequeña aplicación de Sinatra para aceptar llamadas telefónicas entrantes. Antes de hacerlo, necesitamos asegurarnos de que Twilio pueda llegar a nuestra aplicación.

        La mayoría de los servicios de Twilio utilizan webhooks para comunicarse con ella. Cuando Twilio recibe una llamada telefónica, por ejemplo, llega a una URL en tu aplicación para obtener instrucciones sobre cómo gestionar la llamada.

        Cuando trabajas en tu aplicación de Sinatra en el entorno de desarrollo, la app solo es accesible a través de otros programas de tu computadora, por lo que Twilio no podrá comunicarse con ella. Para resolver este problema, debemos hacer que la aplicación sea accesible a través de Internet.

        Aunque hay muchas maneras de hacerlo, como implementar la aplicación en Heroku o AWS, probablemente querrás una forma menos laboriosa de probar tu aplicación de Twilio. Para hacer que la app esté disponible en Internet de manera ligera, te recomendamos una herramienta llamada ngrok. Una vez iniciado, ngrok proporciona una URL única en el dominio ngrok.io que reenvía las solicitudes entrantes a tu entorno de desarrollo local.

        Funciona así:

        How ngrok helps Twilio reach your local server

        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.

        Una vez que hayas configurado ngrok, inicia la aplicación de Sinatra que hicimos anteriormente:

        ruby quickstart.rb

        Tu aplicación 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 4567

        4567 es el puerto predeterminado para las aplicaciones de Sinatra. Si el servidor local se ejecuta en un puerto diferente, reemplaza el 4567 por el número de puerto correcto.

        Deberías ver un resultado similar a este:

        Ngrok server terminal output

        Copia la URL pública de este resultado y pégala en el navegador. Si todo funciona correctamente, deberías ver el mensaje <?xml version="1.0" encoding="UTF-8"?><Response><Say>Hello World</Say></Response> de la aplicación de Sinatra.

        Mi servidor es de acceso público. Enséñame a recibir llamadas telefónicas.

        Responde llamadas entrantes con Twilio

        Cuando tu número de Twilio reciba una llamada telefónica entrante, enviará una solicitud de HTTP a tu servidor pidiendo instrucciones sobre qué hacer a continuación. Una vez recibida la solicitud, puedes indicarle a Twilio cómo responder a la llamada.

        En este inicio rápido, haremos que la app de Sinatra responda la llamada telefónica y transmita un mensaje breve al agente de llamada. Vuelve a abrir quickstart.rb y actualiza el código para que se parezca a este ejemplo de código:

              
              
              
              Respond to an incoming request from Twilio with instructions on how to handle the call

              Respond to an incoming call with a brief message

              Respond to an incoming request from Twilio with instructions on how to handle the call

              Responde una solicitud entrante desde Twilio con instrucciones sobre cómo manejar la llamada

              Guarda el archivo y reinicia la app con

              ruby quickstart.rb

              Ahora deberías poder abrir un navegador web en http://localhost:4567/answer. Si visualizas el código fuente de la página, deberías ver el siguiente texto:

              <?xml version="1.0" encoding="UTF-8"?>
              <Response>
              <Say">Thank you for calling! Have a great day.</Say>
              </Response>

              Este código fuente es XML en TwiML generado por tu código con la ayuda de la biblioteca auxiliar de Twilio.

              Verifica que ngrok todavía se esté ejecutando en el host local con el mismo puerto que antes. Ahora Twilio podrá encontrar tu aplicación. Solo hay una última cosa que necesitamos antes de estar listos para llamar a tu app: debemos indicarle a Twilio a dónde enviar su solicitud.

              Configura la URL de tu webhook

              A fin de que Twilio sepa dónde buscar, necesitas configurar tu número de teléfono de Twilio para llamar a la URL de tu webhook siempre que ingrese una llamada.

              1. Inicia sesión en twilio.com y ve a la página de números de la consola.
              2. Haz clic en el número de teléfono habilitado para voz.
              3. Busca la sección Voice & Fax (Voz y fax). Lo que necesitas es la opción predeterminada "CONFIGURE WITH" (Configurar con): "Webhooks, TwiML Bins, [etc.]"
              4. En la sección "A CALL COMES IN" (Entra una llamada), selecciona "Webhook" y pega la URL que deseas utilizar (no olvides el punto final /answer).

              Configure webhook on phone number for voice

              Guarda los cambios. ¡Ya tienes todo listo!

              Prueba tu aplicación

              Siempre que tu host local y los servidores de ngrok estén en funcionamiento, estamos listos para la parte divertida: probar nuestra nueva aplicación de Flask.

              Realiza una llamada desde tu teléfono celular a tu número de teléfono de Twilio. Deberías ver una solicitud de HTTP en la consola de ngrok. Tu app de Sinatra procesará la solicitud entrante y responderá con tu TwiML. A continuación, oirás el mensaje una vez que se conecte la llamada.

              ¡Funcionó! Todo listo. ¿Qué sigue?

              ¿Dónde ir a continuación?

              Ahora ya conoces los conceptos básicos de realizar y responder llamadas telefónicas con Ruby.

              Nuestra app de Sinatra aquí solo utilizó el verbo <Say> (Decir) en TwiML para leer un mensaje al agente de llamada mediante la conversión de texto a voz, pero puedes hacer mucho más con diferentes términos en TwiML, como <Record> (Grabar), <Gather> (Recopilar) y <Conference> (Conferencia).

              Consulta estas páginas para obtener más información:


              ¡Nos emociona ver lo que construirás!

              Calificar esta página:

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

                    
                    
                    

                    Gracias por tus comentarios.

                    Selecciona los motivos de tus comentarios. La información adicional que nos brindas nos ayuda a mejorar nuestra documentación:

                    Enviando tus comentarios…
                    🎉 Gracias por tus comentarios.
                    Se produjo un error. Inténtalo de nuevo.

                    Gracias por tus comentarios.

                    thanks-feedback-gif