C贸mo enviar SMS por Ruby en 3 pasos

馃晵 8 min.

Ya os hemos hablado en otras ocasiones de los lenguajes de programaci贸n como Python (de hecho Ruby est谩 inspirado en Python) necesarios para simplificarnos distintas tareas.

Ruby es un tipo de lenguaje de programaci贸n interpretado, reflexivo y que nos permite innovar la forma de obtener resultados, adem谩s de flexible para poder usarlo desde cualquier dispositivo, tanto web, iPhone o Android. Otro plus es que tambi茅n Google Cloud pone a disposici贸n de los desarrolladores de Ruby las herramientas que necesitan para crear aplicaciones nativas de la nube.

Entre sus beneficios, podemos encontrar los siguientes:

  • Una amplia variedad de librer铆as (m谩s de 60.000).
  • Es c贸digo libre. 
  • Flexibilidad para modificarlo a tu gusto
  • Modelo-Vista-Controlador permite la escalabilidad del proyecto.
  • Favorece el desarrollo de apps.

C贸mo funciona

Pasos para enviar SMS con Ruby

Lo primero de todo es instalar el kit de desarrollo de software (SDK) de Instasent mediante gem, que es el gestor de paquetes para el lenguaje de programaci贸n Ruby.

Luego se importa la biblioteca en tu aplicaci贸n escrita en Ruby. Casi todas estas bibliotecas se lanzan en forma de聽gema, una biblioteca o aplicaci贸n empaquetada que se puede instalar con una herramienta llamado聽RubyGems.

Una vez importada la librer铆a y configurada con tu token ya puedes crear mensajes mediante los m茅todos de la librer铆a. Por cada m茅todo que se utilice, se lanza una petici贸n HTTP a la API de Instasent (https://docs.instasent.com/1.0/sms/sms), en cada lenguaje se hace de una manera diferente, pero b谩sicamente son simples llamadas a la APIN o se mantienen conexiones abiertas.

Ejemplos de c贸digo para env铆o de SMS

Os dejamos un ejemplo de c贸digo sencillo para enviar un mensaje de texto a trav茅s de cURL. Ten en cuenta que en el apartado de “Authorization” tendr铆as que poner tu API Token:

$> curl – location – request POST 'https://api.instasent.com/sms/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer MY_TOKEN' \
--data-raw '{ "from":"Instasent", "to":"+34666000000", "text":"Test message" }'

La respuesta ser铆a la siguiente:

json
{
  "entity": {
    "id": "588875a72c98d52a6348e701",
    "clientId": null,
    "status": "enqueued",
    "statusCode": null,
    "from": "Instasent",
    "country": "ES",
    "to": "+34666000000",
    "normalizedTo": "+34666000000",
    "charsCount": 28,
    "text": "Test message",
    "deliveredText": "Test message",
    "messagesCount": 1,
    "concatsLimit": 10,
    "finalMessagesCount": 1,
    "encoding": "GSM_7BIT",
    "unicode": false,
    "allowUnicode": false,
    "isSanitized": true,
    "isTruncated": false,
    "charged": true,
    "pricePerSms": 0,
    "priceUser": 0,
    "deliveryReportMask": 0,
    "scheduledAt": null,
    "chargedAt": "2020-01-01T00:00:00+0200",
    "sentAt": null,
    "deliveredAt": null,
    "createdAt": "2020-01-01T00:00:00+0200"
  }
}

C贸mo hacerlo con la API de Instasent paso a paso

Tenemos una API de transferencia de estado representacional (REST) para acciones como el env铆o de SMS masivos. Para poder usarla, debes tener una cuenta activa en Instasent y crear un API Token que te dar谩 acceso al uso de la API.

Estos API tokens pueden estar en uno de los siguientes modos:

  • test: 煤til para hacer pruebas de integraci贸n con la plataforma de Instasent.
  • producci贸n: en este modo los mensajes s铆 se enviar谩n.

Entonces, el env铆o de SMS masivos mediante este software en Instasent solo requiere de unos pocos pasos:

En el panel de Instasent podr谩s encontrar un SKD (software development kit) que te facilitar谩 el uso de la API Rest, entre los que se encuentra Ruby.

Paso 1

Lo primero que hay que hacer es instalar el SDK mediante gem:

$> gem install instasent

O incluyendo la dependencia en tu Gemfile:

gem 'instasent'

Cuando lo tengamos instalado, ya estar谩 listo para usarlo.

Paso 2

Luego, tocar铆a importar la librer铆a.

require 'instasent'

Paso 3

Una vez tengamos estos pasos, solo nos quedar铆a elegir el cliente al que queremos enviar el mensaje de texto. Recuerda que en el apartado “MY TOKEN” deber谩s incluir tu API Token.

ruby
require 'instasent'

client = Instasent::Client.new('MY_TOKEN')

Recomendaciones a la hora de enviar mensajes por Ruby

Existen varios factores a tener en cuenta a la hora de hacer los env铆os. Por ejemplo, debes recordar que el l铆mite de caracteres alfanum茅ricos del campo del remitente (鈥from鈥) es de 11, puede ser tanto el nombre de tu empresa como el n煤mero de tel茅fono.

A la hora de rellenar el campo del destinatario, debes tener en cuenta que existe un orden concreto para este concepto, debe estar en el formato E.164. Esto es que cada pa铆s tiene asignado un c贸digo num茅rico para llamadas y mensajes internacionales, de forma que se construir铆a de esta forma: 

  • el signo m谩s (+)
  • el c贸digo del pa铆s al que nos queremos dirigir
  • el n煤mero de tel茅fono del destinatario

Adem谩s, si nuestra campa帽a va dirigida a M茅xico o Argentina, debemos tener presente que hay que a帽adir un prefijo entre el c贸digo del pa铆s y el n煤mero de tel茅fono:

  • Para M茅xico es el 1
  • Para Argentina es el 9

En cuanto al juego de caracteres que podemos utilizar en los SMS, contamos con dos tipos. 

Por un lado tenemos el GSM, la codificaci贸n est谩ndar para los mensajes con este juego es el alfabeto predeterminado de 7 bits. Est谩 limitado a caracteres latinos (que incluye la letra 脩) y solo a algunos acentos. Adem谩s, tiene una limitaci贸n de 160 caracteres por mensaje (en el caso de los mensajes concatenados, el l铆mite es de 153).

Por otro lado, est谩 el Unicode, que nos permite utilizar emojis y no tiene l铆mite de tipo de caracteres, pero s铆 tiene un l铆mite en la longitud del mensaje, que baja a 70 (en los concatenados, 67). 

C贸digos HTTP de respuesta

Cuando realices acciones como el env铆o de SMS, nuestra API te enviar谩 c贸digos de respuesta, que sirven para que puedas confirmar que el env铆o ha sido correcto o si ha habido alg煤n fallo en el proceso.

En el caso de recibir el c贸digo 201, no hay de qu茅 preocuparse porque este c贸digo significa que todo ha ido correctamente.

Thumb up gif

Sin embargo, si se da el caso que reciben otro tipo de c贸digo, aqu铆 te dejamos el por qu茅.

  • 400 Wrong Request: La petici贸n contiene algo incorrecto.
  • 401 Authentication Failed: El token que se ha usado es inv谩lido.
  • 402 No Funds: No contamos con suficiente saldo para realizar el env铆o.
  • 413 Request entity too large: El env铆o bulk contiene demasiados elementos.
  • 422 Validation Errors: Error de validaci贸n.
  • 429 Rate limit reached: Demasiadas peticiones en poco tiempo.

Postman Collection

Puedes descargarte una colecci贸n de Postman que puede ayudarte a hacerte una idea de c贸mo funciona la API de Instasent y as铆 probarla m谩s f谩cilmente.

Errores t茅cnicos m谩s comunes

Como hemos comentado, es posible que a la hora de crear los env铆os de SMS mediante Ruby nos aparezcan mensajes de error durante el proceso. No nos alarmemos, porque todo error tiene su por qu茅 y su soluci贸n. De los c贸digos de error que hemos visto m谩s arriba, los dos 煤ltimos suelen ser los m谩s comunes. Vamos a verlos:

Uno de ellos es el 422, que significa que la validaci贸n de uno o m谩s campos ha fallado.

json
{
  "errors": {
    "fields": {
      "to": [
        "Invalid number"
      ]
    }
  }
}

El otro es el 429. Cuando recibamos este c贸digo de error, significar谩 que un usuario ha enviado demasiadas peticiones en un corto periodo de tiempo. Para corregirlo, solo tendremos que disminuir la velocidad de env铆o, para que no se colapsen.

Razones para hacerlo con la API de Instasent

Adem谩s de que la interfaz resulta muy intuitiva, en Instasent contamos con algunos bonus que pueden resultarte muy 煤tiles cuando realices env铆os de SMS masivo mediante nuestra API. Por ejemplo, contar谩s con una secci贸n de prueba para que puedas tantear las distintas solicitudes o respuestas de la API.

Podr谩s realizar todas tus operaciones y acceder a ellas desde cualquier dispositivo ya que nuestra interfaz se encuentra en la nube, y analizar en tiempo real los resultados de tus campa帽as.

Y en la secci贸n de documentaci贸n podr谩s encontrar toda la informaci贸n necesaria para aclarar cualquier duda relacionada tanto con los SDKs, Lookup, b煤squedas de n煤meros, modelos, etc.

Nuestros precios

Tenemos distintas tarifas que se adaptan a tus campa帽as de SMS f谩cilmente. Puedes calcular el presupuesto de tus campa帽as con nuestra calculadora, que te da la opci贸n de prever lo que pagar谩s dependiendo de la cantidad de SMS que env铆es o de la cantidad que quieras aportar.

Precios de Instasent

Deja un comentario