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:

Enviar mensajes SMS y MMS en Ruby

En esta guía, te mostraremos cómo utilizar los SMS programables a fin de enviar mensajes SMS y MMS en tu aplicación web de Ruby.

Si bien es posible enviar mensajes SMS de solo texto en casi cualquier parte del mundo, el envío de contenido multimedia solo está disponible en EE. UU. y Canadá actualmente. Obtén más información en este artículo de soporte.

Los fragmentos de código de esta guía se han escrito con la versión 2.0.0 o una posterior del lenguaje Ruby y utilizan el SDK para Ruby de Twilio. ¡Empecemos!

Inicia sesión en tu cuenta de Twilio (o regístrate para obtener una)

Si tienes una cuenta y un número de teléfono de Twilio con funcionalidades de SMS, ya estás listo. Puedes pasar directamente al código.

Antes de poder recibir llamadas telefónicas y enviar mensajes, deberás registrarte para obtener una cuenta de Twilio y adquirir un número de teléfono de Twilio.

Si eres nuevo en Twilio, puedes registrarte para obtener una cuenta de prueba gratuita para comenzar. Una vez que te hayas registrado, dirígete a la consola, y obtén tu Account SID (SID de cuenta) y Auth Token (Token de autenticación). Necesitarás esos valores para los ejemplos de código siguientes.

Obtener un número de teléfono con funcionalidades de SMS (y MMS)

Para enviar mensajes, necesitas un número de teléfono de Twilio con funcionalidades de SMS. Si actualmente no posees un número de teléfono de Twilio con funcionalidades de SMS, deberás comprar uno. Después de explorar la página Buy a Number (Comprar un número), marca la casilla SMS y haz clic en Search (Buscar).

Buy an SMS-capable Twilio Number

Si vives en EE. UU. o Canadá y deseas enviar mensajes MMS, puedes seleccionar la casilla MMS. En los resultados de búsqueda, aparecen los íconos de funcionalidad en la lista de números disponibles:

Click Buy Button to Purchase an SMS-capable Number

Busca un número que te guste y haz clic en "Buy" (Comprar) para agregarlo a tu cuenta.

Si estás utilizando una cuenta de prueba, deberás verificar tu número de teléfono personal a través de la consola para probar el envío de SMS a ti mismo.

Obtén más información sobre cómo usar tu cuenta de prueba gratuita.

Ahora que tienes un número de teléfono de Twilio, puedes empezar a enviar mensajes a dispositivos móviles.

Enviar un mensaje SMS en Ruby mediante la API REST

A fin de enviar un mensaje SMS saliente desde tu cuenta de Twilio, deberás crear una solicitud HTTP POST para el recurso de mensajes de Twilio.

La biblioteca para Ruby de Twilio te ayuda a crear una instancia nueva del recurso de mensajes mediante la especificación de los parámetros To, From y Body del mensaje.

Si aún no tienes instalada la biblioteca auxiliar de Ruby, puedes instalarla con RubyGems:

gem install twilio-ruby

También puedes instalar la biblioteca de forma manual. Las instrucciones se encuentran aquí.

Ahora, crea un archivo con el nombre send_sms.rb e incluye el siguiente código:

        
        
        

        Enviar un SMS mediante la API de SMS programables

        Reemplaza los valores del marcador de posición para account_sid y auth_token con tus valores únicos. Puedes encontrarlos en tu consola de Twilio.

        Ten en cuenta lo siguiente: está bien codificar de forma fija tus credenciales cuando comiences, pero debes utilizar variables de entorno para mantenerlas en secreto antes de implementarlas en producción. Para obtener más información, consulta el artículo sobre cómo establecer variables de entorno.

        Para indicarle a Twilio qué número de teléfono utilizar para enviar este mensaje, reemplaza el número que aparece en from con el número de teléfono de Twilio que adquiriste anteriormente.

        A continuación, para especificar que tú eres el destinatario del mensaje, reemplaza el número que aparece en to con tu número de teléfono celular. Tanto en el parámetro from como to, se debe utilizar el formato E.164 (+ y un código de país; por ejemplo, +16175551212).

        También incluimos el parámetro body, que tiene el contenido del SMS que enviaremos.

        Una vez que hayas actualizado el código de ejemplo, puedes probarlo al ejecutarlo desde la línea de comandos:

        ruby send_sms.rb
        

        En unos instantes, deberías recibir un SMS.

        Si utilizas una cuenta de prueba, notarás que los mensajes que envíes siempre comenzarán con “Sent from a Twilio trial account” (Enviado desde una cuenta de prueba de Twilio). Una vez que actualices tu cuenta, dejarás de ver este mensaje. Obtén más información sobre el envío de mensajes SMS y MMS desde una cuenta de prueba.

        Dediquemos un momento a entender lo que ocurre en segundo plano cuando se envía esta solicitud a Twilio.

        Respuesta de Twilio

        Cuando Twilio reciba tu solicitud para enviar un SMS mediante la API REST, verificará si se incluyó un número de teléfono válido en el campo from. Twilio pondrá en cola el SMS o devolverá este error de HTTP en su respuesta a tu solicitud.

        Outgoing SMS Diagram

        Si tu solicitud no genera ningún error, la respuesta de HTTP de Twilio incluirá el SID del mensaje nuevo. Este identificador único nos ayudará a hacer referencia a este mensaje más adelante: en el código anterior, el SID se imprimió en el terminal.

        La respuesta JSON de Twilio incluye una gran cantidad de datos sobre el mensaje. La siguiente es una respuesta de ejemplo:

        {"sid": "SMxxxxxxxxxxxxxxx", 
         "date_created": "Thu, 09 Aug 2018 17:26:08 +0000", 
         "date_updated": "Thu, 09 Aug 2018 17:26:08 +0000", 
         "date_sent": null, 
         "account_sid": "ACxxxxxxxxxxxxxxxx", 
         "to": "+15558675310",
         "from": "+15017122661",
         "messaging_service_sid": null,
         "body": "This is the ship that made the Kessel Run in fourteen parsecs?", 
         "status": "queued", 
         "num_segments": "1", 
         "num_media": "0",
         "direction": "outbound-api",
         "api_version": "2010-04-01",
         "price": null,
         "price_unit": "USD",
         "error_code": null,
         "error_message": null,
         "uri": "/2010-04-01/Accounts/ACxxxxxxxxx/Messages/SMxxxxxxxxxxxx.json",
         "subresource_uris": {
             "media": null
         }
        }

        Puedes acceder a cualquiera de estos atributos desde el código de Ruby, como lo hicimos cuando imprimimos el message.sid como cadena.

        Intenta agregar una instrucción puts como puts message.status. Guarda el archivo y, a continuación, vuelve a ejecutar el código con ruby send_sms.rb una vez más. Deberías ver el estado del mensaje "queued" impreso en el terminal.

        Si recibes un error en la respuesta de Twilio o no recibes el mensaje, puedes consultar estos consejos para solucionar problemas con mensajes no entregados.

        Si deseas realizar un seguimiento del estado de los mensajes en tiempo real, deberás configurar la URL StatusCallback. Obtén más información en nuestro tutorial sobre la confirmación de la entrega de mensajes en Ruby.

        Enviar un mensaje a varios destinatarios

        Si quieres enviar un mensaje a varios destinatarios, puedes crear un conjunto de destinatarios e iterar cada número de teléfono del conjunto:

        numbers_to_message = ['+15558675310', '+14158141829', '+15017122661']
        numbers_to_message.each do |number|
            message = @client.messages.create(
                body: 'Hello from my Twilio number!',
                from: '+15017122661',
                to: number
            )
            puts message.status
        end

        De esta manera, se creará una instancia de mensaje nueva para cada número de teléfono de la lista.

        Nota sobre los límites de frecuencia de los mensajes

        A medida que vayas enviando más mensajes a través de la API, Twilio los pondrá en cola para su entrega según el límite de frecuencia prescrito. Las solicitudes de API para mensajes que superen las frecuencias especificadas se pondrán en cola y se ejecutarán según la capacidad disponible.

        Si la aplicación móvil intenta poner en cola más de 4 horas de tráfico saliente (p. ej., más de 14 400 mensajes a Canadá a través de un número de teléfono de código largo), la API empezará a devolver errores 429.

        Si necesitas poner en cola un gran volumen de mensajes, puede que te resulte útil aprovechar los servicios de mensajería de Twilio. Consulta nuestra guía sobre cómo configurar y enviar mensajes desde un servicio de mensajería para obtener más consejos.

        Enviar un mensaje con contenido multimedia (MMS) en Ruby

        Si bien es posible enviar mensajes SMS de solo texto en casi cualquier parte del mundo, el envío de contenido multimedia solo está disponible en EE. UU. y Canadá actualmente.

        Para incluir contenido multimedia en un mensaje de texto impulsado por Twilio, es necesario agregar algo al código que escribimos anteriormente. Esta vez, debemos agregar el parámetro media_url.

        Crea un archivo con el nombre send_mms.rb e incluye el siguiente código:

              
              
              

              Enviar un mensaje con una URL de imagen

              Vuelve a actualizar los parámetros from y to a fin de utilizar tu número de teléfono de Twilio y tu teléfono celular.

              El parámetro media_url nuevo de este código le indica a Twilio dónde ir para obtener el contenido multimedia que queremos incluir. Debe ser una URL de acceso público: Twilio no podrá acceder a ninguna URL que se encuentre oculta o que requiera autenticación.

              Al igual que cuando envías un SMS simple, Twilio enviará datos sobre el mensaje en su respuesta a tu solicitud. La respuesta JSON contendrá el SID y URI únicos de tu recurso de contenido multimedia:

              "subresource_uris": {"media": "/2010-04 01/Accounts/ACxxxxxxxx/Messages/SMxxxxxxxxxxxxx/Media.json"}

              Cuando la API REST de Twilio cree el recurso de mensajes nuevo, guardará la imagen que se encuentra en el parámetro media_url especificado como un recurso de contenido multimedia. Una vez creado, puedes acceder a este recurso en cualquier momento mediante la API.

              Puedes imprimir este valor desde tu código de Ruby para ver dónde se almacena la imagen. Agrega la siguiente línea al final del archivo send_mms.rb para ver el URI de contenido multimedia recién aprovisionado:

              puts message.media.instance_variable_get :@uri

              Guarda el archivo y ejecútalo desde la línea de comandos:

              ruby send_mms.rb
              

              En tan solo un instante, deberías recibir un mensaje de texto con una imagen.

              ¿Qué sigue?

              Acabas de enviar correctamente algunos mensajes con la API de SMS programables de Twilio y la biblioteca auxiliar de Ruby.

              Consulta estos recursos detallados para llevar tu mensajería programática al siguiente nivel:

              Kevin Segovia Daniel Erazo
              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