Cómo enviar SMS por Python en 5 pasos

🕒 8 min.

Cómo funciona

Python es un lenguaje de programación de alto nivel, muy versátil para llevar a cabo desde el desarrollo de un sitio web hasta aplicaciones para sistemas operativos.

El lenguaje de programación Python utiliza módulos de código que son intercambiables en lugar de una larga lista de instrucciones que era estándar para los lenguajes de programación funcional.

Así es como funciona el intérprete de Python

Cuenta con las siguientes características: 

  • Es sencillo y veloz: Los programas en Python se crean de manera rápida y pueden tener de 3 a 5 líneas de código menos que su equivalente en Java.
  • Es gratuito: Se trata de un lenguaje open source o de código abierto, por lo que no hace falta ninguna licencia especial para usarlo. 
  • Está respaldado por una enorme comunidad: Se desarrollan nuevas librerías y aplicaciones continuamente por programadores, solucionando posibles dudas en multitud de foros. 
  • Es un lenguaje multiparadigma: Combina propiedades de diferentes paradigmas de programación, lo que hace que sea muy flexible y fácil de aprender.
  • El hecho de que sea multiparadigma permite utilizarlo en distintos campos como el diseño de aplicaciones web o la inteligencia artificial.
  • Multiplataforma: Python es apto para todas las plataformas, que se adapta a diferentes softwares (Windows o Linux, por ejemplo).

Este lenguaje de programación nos permite crear multitud de acciones de comunicación de manera sencilla, como bots en la web de nuestra marca, mensajes automáticos para nuestras campañas de marketing, controlar las entradas y salidas de GPIO en una Orange Pi o Raspberry Pi, interactuar con el servidor de WhatsApp con la librería Yowsup cli, e incluso hacer una llamada.

Cómo hacerlo por pasos

Antes de nada, si aún no la tienes, te recomendamos que crees una cuenta en Instasent para poder disfrutar de todos sus productos y contar con un SDK para los lenguajes de programación más comunes.

1 – Lo primero que tienes que hacer es instalar el kit de desarrollo de software (SDK) de Instasent.

2 El siguiente paso será importar la librería:

require __DIR__  . '/vendor/autoload.python';

3 – Luego tocará crear el cliente al que le queremos enviar el SMS. En este código, tienes que asegurarte de incluir tu API token.

$instasentClient = new InstasentClient("MY_TOKEN");

4 Después nos quedará enviar el SMS. Puedes hacerlo con caracteres Unicode (con el que podrás enviar emojis) o GSM (limitado a caracteres latinos que incluye la ñ). Veamos un ejemplo de cada uno:

Unicode:

$response = $instasentClient->sendUnicodeSms("Instasent", "+34666000000", "Unicode test message: ña éáíóú 😀");

GSM:

$response = $instasentClient->sendSms("Instasent", "+34666000000", "Test message");

5 Por último, solamente tendremos que revisar la respuesta:

if ($response["response_code"] === 201) {
    // Send success
    $sms = \json_decode($response["response_body"], true)['entity'];
} else {
    // Send error
}

Ejemplo

Este es el ejemplo más sencillo para enviar un SMS mediante cURL. Aquí, en la sección “Authorization”, tendrás 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:

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"
  }
}

Consideraciones y recomendaciones

Remitente

El campo “from” es el remitente del mensaje que le aparecerá al destinatario. Recuerda que este campo tiene un límite de 11 caracteres, por lo que si el nombre de tu marca es más largo, te recomendamos que que lo “recortes”, por ejemplo, juntando las palabras. 

Destinatario

Cuando vayas a insertar el número de uno de tus contactos, recuerda que este tiene que estar siempre en formato E.164. Como sabrás, cada país cuenta con un prefijo que debemos incluir cuando realizamos una llamada o enviamos un mensaje. El de España es el 34. Por lo tanto, sigue estos pasos:

  • inserta el signo más (+)
  • luego añade el prefijo de país al que vaya dirigido tu SMS
  • por último mete el número de teléfono

Juego de caracteres

Como hemos comentado más arriba, los tipos de codificación difieren dependiendo de lo que quieras usar en tus SMS:

  • GSM: Este se ciñe solamente al alfabeto latino. Incluye algunos acentos, pero no todos.
  • Unicode: No hay ningún tipo de limitación y, además, puedes insertar emoticonos 😀

Cuando escribas tu SMS, Instasent captará el tipo de símbolos que estás usando.

Longitud del mensaje

Según el juego de caracteres que uses, tendrás distinto margen en cuanto a la largura de tu mensaje de texto. Piénsalo bien antes de usar uno de los dos porque la diferencia entre los dos es importante:

  • GSM: El número máximo de caracteres es de 160 (153 para SMS concatenados).
  • Unicode: Este se limita solo a 70 caracteres (67 para SMS concatenados).

Si te pasas de caracteres, el sistema lo detectará como varios SMS (independientemente del juego de caracteres que uses). Al destinatario le llegará como solo un SMS (todo junto), pero a ti te lo contará (y cobrará) como varios. Ten esto muy en cuenta para no llevarte sustos.

Postman Collection

En la sección de Documentación de Instasent, tendrás a tu disposición la carpeta denominada InstasentAPI.postman_collection.json para que puedas incluirlo en Postman y así usar la API.

SDK de Python

Instasent proporciona SKD para encapsular y facilitar el uso de nuestra API Rest en varios lenguajes, entre ellos Python.

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

$> pip install instasent

Una vez tenemos instalado el SDK ya podemos usarlo:

python
import instasent

client = instasent.Client('MY_TOKEN')

Asegúrate de incluir tu API token en la parte de los paréntesis.

Envío de SMS solo con caracteres GSM:

response = client.send_sms('Instasent', '+34666000000', 'Test message')

Envío de SMS con caracteres Unicode:

response = client.send_sms_unicode('Instasent', '+34666000000', 'Unicode test message: ña éáíóú 😀')

if response['response_code'] != 201:
    // Send success
    print response['response_code']
    print response['response_body']
else:
    // Send error

Errores técnicos más comunes

Los errores más usuales suelen ser los código de respuesta, que a ti te llegarán como códigos HTTP desde la API. Vamos a ver lo que significa cada uno:

El código 201 es un código positivo, que significa que el mensaje ha sido enviado adecuadamente.

El problema viene cuando el código que recibimos es distinto a ese. En este caso, cada código tiene su motivo:

  • 400 Wrong Request: El cuerpo de la solicitud tiene un formato incorrecto o algo salió mal con tu solicitud
  • 401 Authentication Failed: El token usado no es válido
  • 402 No Funds: Te has quedado sin crédito en tu cuenta
  • 413 Request entity too large: Tu envío masivo de SMS tiene elementos de más
  • 422 Validation Errors: Error de validación (por ejemplo, cuando el número de destino no es válido)
  • 429 Rate limit reached: Hay muchas demandas de SMS por minuto

Uno de los errores que más llega es el 422, el cual nos indica qué es exactamente lo que ha fallado en el envío de SMS. En el ejemplo de abajo vemos que el error es que el número no es válido.

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

Otro de los errores habituales es el 429, el cual significa que queremos enviar demasiados SMS por minuto. La solución a este problema sería sencillamente disminuir la velocidad en la que enviamos los mensajes al minuto.

Por qué hacerlo con la API de Instasent

En Instasent contamos con una interfaz muy amigable que te facilitará y agiliza cualquier tarea de programación y envíos. Asimismo, nuestra API HTTP te permite:

  • Enviar SMS
  • Buscar números
  • Verificar números de teléfono

Para cada acción que mencionamos arriba, tenemos una sección de prueba en la que podrás hacer intentos de cómo funcionan para ver si se adaptan a lo que estás buscando. Además, contamos también con una herramienta que puede generar códigos automáticamente.

Precios

Te lo ponemos fácil para que pagues solo por los SMS que envíes, con tarifas adaptadas a lo que realmente necesitas, sin cuotas de alta ni cuotas mensuales. Además, te ofrecemos una calculadora de precios para que puedas hacerte una idea de cuánto te costarán los envíos que desees realizar (el precio varía dependiendo del país de destino y la cantidad de SMS que quieras mandar).

Disponemos de diferentes métodos de pago, entre ellos Paypal, Tarjeta de crédito y Transferencia bancaria, y trabajamos en más de 200 países.

Deja un comentario