sms-python-client

Client library to send SMS using Altiria SMS API


Keywords
altiria, envio-de-sms, envio-sms, http-client, pip, pip3, python, python3, sms-api, sms-gateway, sms-messages, sms-notifications, sms-pasarela, sms-python, sms-transaccional, smsapi
License
MIT
Install
pip install sms-python-client==1.0.32

Documentation

Altiria, cliente SMS Python

Altiria SMS Python es el cliente de env铆o de SMS que simplifica al m谩ximo la integraci贸n del API SMS para Python de Altiria.

  • Env铆os de SMS individuales con las siguientes caracter铆sticas:

    • sencillos
    • concatenados
    • uso de remitente
    • seleccionar codificaci贸n
    • certificaci贸n de entrega con o sin identificador
    • certificado digital de entrega
  • Consultas de cr茅dito

Requisitos

  • python 2.7+, 3.+.

Aunque este m贸dulo es compatible con la versi贸n 2 de python, se recomienda utilizar la versi贸n 3.

Instalaci贸n

La forma recomendada de instalar el cliente Altiria para Python es a trav茅s de pip .

Si tienes PIP instalado

sudo pip install sms-python-client

Si no tienes PIP instalado

git clone https://github.com/altiria/sms-python-client.git

cd sms-python-client

python setup.py install

Ejemplos de uso

Env铆o de SMS

A continuaci贸n se describen cada una de las posibilidades de uso de la librer铆a para realizar env铆os de SMS.

Ejemplo b谩sico

Se trata de la opci贸n m谩s sencilla para realizar un env铆o de SMS.

from sms_api.altiria_client import *

try:
	client = AltiriaClient('miusuario@email.com', 'contrase帽a')
	textMessage = AltiriaModelTextMessage('346XXXXXXXX', 'Mensaje de prueba')
	jsonText = client.sendSms(textMessage)
	print('隆Mensaje enviado!')
except AltiriaGwException as ae:
	print('Mensaje no aceptado:'+ae.message)
	print('C贸digo de error:'+ae.status)
except JsonException as je:
	print('Error en la petici贸n:'+je.message)
except ConnectionException as ce:
	if "RESPONSE_TIMEOUT" in ce.message: 
		print('Tiempo de respuesta agotado:'+ce.message)
	else:
		print('Tiempo de conexi贸n agotado:'+ce.message)

Ejemplo b谩sico con timeout personalizado

Permite fijar el tiempo de respuesta en milisegundos. Si se supera se lanzar谩 una ConnectionException. Por defecto el tiempo de respuesta es de 10 segundos, pero puede ser ajustado entre 1 y 30 segundos.

from sms_api.altiria_client import *

try:
	client = AltiriaClient('miusuario@email.com', 'contrase帽a', False, 5000)
	textMessage = AltiriaModelTextMessage('346XXXXXXXX', 'Mensaje de prueba')
	jsonText = client.sendSms(textMessage)
	print('隆Mensaje enviado!')
except AltiriaGwException as ae:
	print('Mensaje no aceptado:'+ae.message)
	print('C贸digo de error:'+ae.status)
except JsonException as je:
	print('Error en la petici贸n:'+je.message)
except ConnectionException as ce:
	if "RESPONSE_TIMEOUT" in ce.message: 
		print('Tiempo de respuesta agotado:'+ce.message)
	else:
		print('Tiempo de conexi贸n agotado:'+ce.message)

Ejemplo b谩sico con remitente

Se trata de la opci贸n m谩s sencilla para realizar un env铆o de SMS a帽adiendo remitente. En este caso, se ilustra c贸mo realizar una autentificaci贸n mediante APIKEY, donde "XXXXXXXXXX" es el par谩metro apiKey y "YYYYYYYYYY" el par谩metro apiSecret.

from sms_api.altiria_client import *

try:
	client = AltiriaClient('XXXXXXXXXX', 'YYYYYYYYYY', True)
	textMessage = AltiriaModelTextMessage('346XXXXXXXX', 'Mensaje de prueba', 'miRemitente')
	jsonText = client.sendSms(textMessage)
	print('隆Mensaje enviado!')
except AltiriaGwException as ae:
	print('Mensaje no aceptado:'+ae.message)
	print('C贸digo de error:'+ae.status)
except JsonException as je:
	print('Error en la petici贸n:'+je.message)
except ConnectionException as ce:
	if "RESPONSE_TIMEOUT" in ce.message: 
		print('Tiempo de respuesta agotado:'+ce.message)
	else:
		print('Tiempo de conexi贸n agotado:'+ce.message)

Ejemplo con todos los par谩metros

Se muestra un ejemplo utilizando todos los par谩metros e integrando el m贸dulo de logging. La implementaci贸n de este m贸dulo permite depurar el log de la librer铆a.

La siguiente limitaci贸n afecta solamente a python 2**:

Tal y como se indica en el c贸digo, se recomienda desactivar la excepciones generadas por el m贸dulo de logging si se utiliza la versi贸n 2 de python. De lo contrario, este m贸dulo lanzar谩 excepciones si el mensaje contiene caracteres no ASCII. Hay que tener en cuenta que las l铆neas de log que terminan en error son omitidas.

from sms_api.altiria_client import *
import logging

logging.basicConfig(filename='app.log',
                            filemode='a',
                            format='%(asctime)s %(levelname)s %(module)s.%(funcName)s:%(lineno)d [%(thread)d, %(threadName)s] - %(message)s',
                            datefmt='%d/%m/%Y %H:%M:%S',
                            level=logging.DEBUG)
# Uncomment only to python 2
#logging.raiseExceptions = False

try:
    	logging.debug('Enviando SMS...')
	client = AltiriaClient('miusuario@email.com', 'contrase帽a')
	client.setConnectionTimeout(1000)
	client.setTimeout(5000)
	textMessage = AltiriaModelTextMessage('346XXXXXXXX', 'Mensaje de prueba')
	textMessage.senderId='miRemitente'
	textMessage.ack=True
	textMessage.idAck='idAck'
	textMessage.concat=True
	textMessage.encoding='unicode'
	textMessage.certDelivery=True
	jsonText = client.sendSms(textMessage)
	print('隆Mensaje enviado!')
except AltiriaGwException as ae:
	print('Mensaje no aceptado:'+ae.message)
	print('C贸digo de error:'+ae.status)
except JsonException as je:
	print('Error en la petici贸n:'+je.message)
except ConnectionException as ce:
	if "RESPONSE_TIMEOUT" in ce.message: 
		print('Tiempo de respuesta agotado:'+ce.message)
	else:
		print('Tiempo de conexi贸n agotado:'+ce.message)

Consulta de cr茅dito

Ejemplos de consulta del cr茅dito de SMS en la cuenta de Altiria.

Ejemplo b谩sico

Este ejemplo no incluye los par谩metros opcionales.

from sms_api.altiria_client import *

try:
	client = AltiriaClient('miusuario@email.com', 'contrase帽a')
	credit = client.getCredit()
	print('Cr茅dito disponible: '+credit)
except AltiriaGwException as ae:
	print('Solicitud no aceptada:'+ae.message)
	print('C贸digo de error:'+ae.status)
except JsonException as je:
	print('Error en la petici贸n:'+je.message)
except ConnectionException as ce:
	if "RESPONSE_TIMEOUT" in ce.message: 
		print('Tiempo de respuesta agotado:'+ce.message)
	else:
		print('Tiempo de conexi贸n agotado:'+ce.message)

Ejemplo con timeout

Este ejemplo permite definir el timeout de la conexi贸n.

from sms_api.altiria_client import *

try:
	client = AltiriaClient('miusuario@email.com', 'contrase帽a')
    	client.setConnectionTimeout(1000)
	client.setTimeout(5000)
	credit = client.getCredit()
	print('Cr茅dito disponible: '+credit)
except AltiriaGwException as ae:
	print('Solicitud no aceptada:'+ae.message)
	print('C贸digo de error:'+ae.status)
except JsonException as je:
	print('Error en la petici贸n:'+je.message)
except ConnectionException as ce:
	if "RESPONSE_TIMEOUT" in ce.message: 
		print('Tiempo de respuesta agotado:'+ce.message)
	else:
		print('Tiempo de conexi贸n agotado:'+ce.message)

Licencia

La licencia de esta librer铆a es de tipo MIT. Para m谩s informaci贸n consultar el fichero de licencia.

Ayuda

Utilizamos la secci贸n de problemas de GitHub para tratar errores y valorar nuevas funciones. Para cualquier problema durante la intergraci贸n contactar a trav茅s del email soporte@altiria.com.