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 Node.js

En este tutorial, te mostraremos cómo utilizar los SMS programables de Twilio a fin de enviar mensajes SMS y MMS en tu aplicación móvil de Node.js.

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 ejemplos de código en este tutorial utilizan la biblioteca auxiliar para Node 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 enviar mensajes desde la API de Twilio, necesitarás una cuenta de Twilio y 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 y seleccionado un proyecto (la plantilla "Learn and Explore" [Aprender y explorar] sirve para este tutorial), 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 Node.js mediante la API REST

Para 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 auxiliar de Twilio para Node.js 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 Node, puedes instalarla mediante npm:

npm install twilio

Esto instalará el módulo twilio para que lo puedan usar los scripts de Node.js en el directorio actual.

Ahora, crea un archivo con el nombre sms.js e incluye el siguiente código.

        
        
        

        Enviar un SMS mediante la API de SMS programables

        Reemplaza los valores del marcador de posición para accountSid y authToken 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. Consulta nuestra publicación de blog "Trabajar con variables de entorno en Node.js" para obtener orientación.

        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:

        node sms.js

        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:

        {"accountSid":"ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
         "apiVersion":"2010-04-01",
         "body":"This is the ship that made the Kessel Run in fourteen parsecs?",
         "dateCreated":"2018-09-11T17:29:05.000Z",
         "dateUpdated":"2018-09-11T17:29:05.000Z",
         "dateSent":null,"direction":"outbound-api",
         "errorCode":null,
         "errorMessage":null,
         "to":"+15558675310",
         "from":"+15017122661",
         "messagingServiceSid":null,"numMedia":"0",
         "numSegments":"1",
         "price":null,"priceUnit":"USD",
         "sid":"SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
         "status":"queued",
         "uri":"/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX7/Messages/SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.json",
         "subresourceUris":{
           "media": null
         }
        }​
        

        Puedes acceder a cualquiera de estos atributos desde el código de Node.js, como lo hicimos cuando registramos el message.sid.

        Intenta actualizar la instrucción de registro existente en el código para que sea .then(message => console.log(message.status)) en su lugar. Guarda el archivo y, a continuación, vuelve a ejecutar el código. 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 Node.js.

        Enviar un mensaje a varios destinatarios

        Si quieres enviar un mensaje a varios destinatarios, puedes crear una lista de destinatarios (u obtener una lista de una base de datos) e iterar cada número de teléfono de la lista:

        var numbersToMessage = ["+15558675310", "+14158141829", "+15017122661"]
        
        numbersToMessage.forEach(function(number){
          var message = client.messages.create({
            body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
            from: '+16468635472',
            to: number
          })
          .then(message =>  console.log(message.status))
          .done();
        });

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

        A note on message rate limiting

        As you send more messages via the API, Twilio will queue them up for delivery at your prescribed rate limit. API requests for messages that exceed the specified rates will be queued and executed as capacity is available.

        If your application tries to enqueue more than 4 hours worth of outbound traffic (e.g., enqueuing more than 14,400 messages to Canada over one long code phone number), the API will start returning 429 errors.

        If you need to enqueue a large volume of messages, you may find that it's helpful to leverage Twilio's Messaging Services. See our guide on how to set up and send messages from a messaging service in your language of choice for more tips.

        Enviar un mensaje con contenido multimedia (MMS) en Node.js

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

              
              
              

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

              "subresourceUris": {"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 mediaUrl 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 Node.js para ver el lugar de almacenamiento de la imagen. Actualiza la función console.log del archivo sms.js para ver el URI de contenido multimedia recién aprovisionado:

              console.log(message.subresourceUris.media)

              Guarda el archivo y ejecuta el proyecto. En tan solo un instante, deberías recibir un mensaje de texto con una imagen y ver el URI de contenido multimedia nuevo impreso en la consola.

              ¿Qué sigue?

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

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

              David Prothero 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