1. Descripción
La API HTTP admite su uso desde diferentes lenguajes de programación, acontinuación os mostramos un ejemplo realizado en python para enviar SMS.
A continuación le mostramos un script realizado en python, para enviar SMS a móviles desde la plataforma de Descom SMS.
2. Requerimientos
Tener instalado el interprete de python, que puede descargar en http://python.org, el interprete adecuado para su sistema operativo. Python, dispone de un interprete para los SO más conocidos y usados.
3. Código
import sys import getopt import httplib import urllib import xml.dom.minidom from xml.dom.minidom import parseString #################### # Funciones #################### def usage(): print 'Uso del programa:' print '\tArgumentos Obligatorios:' print '\t\t -i\t--id\t\tCodigo de Cliente de la cuenta en Descom SMS' print '\t\t -u\t--username\tNombre de usuario de la cuenta en Descom SMS' print '\t\t -p\t--passwd\tPassword del usuario de la cuenta en Descom SMS' print '\tArgumentos Opcionales:' print '\t\t -s\t--sendsms\tLista de nuemeros de moviles a los que se le envia el mensaje, separado por ",". Si no se define este argumento, se obtiene el saldo de la cuenta.' print '\t\t -m\t--message\tTexto del mensaje a enviar.' print '\t\t -r\t--remitente\tRemitente personalizado del mensaje.' def StrtoHex(s): lst = [] for ch in s: hv = hex(ord(ch)).replace('0x', '') if len(hv) == 1: hv = '0'+hv lst.append(hv) return reduce(lambda x,y:x+y, lst) ####################### # Variables globales ####################### HOSTNAME = 'www.descomsms.com' URL='/AP/descomMessage.servlet.Servlet' VERBOSE=False USERNAME='' PASSWD='' ID='' REMITENTE='' MOVILES='' MENSAJE='' MENSAJESXML='' ####################### # Entrada de datos ####################### try: opts, args = getopt.getopt(sys.argv[1:], "hu:p:i:vs:m:r:", ["help", "username=", "passwd=", "id=","verbose","sendsms=","message=","remitente="]) except getopt.GetoptError, err: print str(err) usage() sys.exit(2) for o, a in opts: if o == "-v": VERBOSE = True elif o in ("-h", "--help"): usage() sys.exit() elif o in ("-u", "--username"): USERNAME = a elif o in ("-p", "--passwd"): PASSWD = a elif o in ("-i", "--id"): ID = a elif o in ("-s","--sendsms"): MOVILES = a elif o in ("-m","--message"): MENSAJE = a elif o in ("-r","--remitente"): REMITENTE = a else: assert False, "unhandled option" if USERNAME=='' or PASSWD=='' or ID=='': usage() sys.exit() if MOVILES<>'' and MENSAJE=='': usage() sys.exit() ############################ # Crear Trama XML de envio ############################ N=0 if MOVILES<>'': for M in MOVILES.split(','): N=N+1 MENSAJESXML+='<Mensaje><Id>'+str(N)+'</Id><Destino>'+M.strip()+'</Destino><Texto>'+StrtoHex(MENSAJE)+'</Texto></Mensaje>' if REMITENTE<>'': REMITENTE=StrtoHex(REMITENTE) REMITENTE='<Remitente>'+REMITENTE+'</Remitente>' XML='<TXEnvio><Autentificacion><Usuario>'+StrtoHex(USERNAME)+'</Usuario><Passwd>'+StrtoHex(PASSWD)+'</Passwd><Idcli>'+ID+'</Idcli>'+REMITENTE+'</Autentificacion>' if MENSAJESXML<>'': XML+='<Mensajes><Total>'+str(N)+'</Total>'+MENSAJESXML+'</Mensajes>' XML+='</TXEnvio>' ################## # Envio de SMS's ################## params = urllib.urlencode({'xml': XML}) headers = {"Content-type": "application/x-www-form-urlencoded"} conn = httplib.HTTPSConnection(HOSTNAME) conn.request('POST', URL, params, headers) response = conn.getresponse() if response.status<>200: print 'Error: ',response.reason sys.exit(2) RXML=response.read() conn.close() dom=parseString(RXML) nodos=dom.childNodes ####################### # Analisis de respuesta ####################### for n in dom.getElementsByTagName("Autentificacion"): Auth=n break for n in Auth.getElementsByTagName("Resultado"): RAuth=n.firstChild.data for n in Auth.getElementsByTagName("Comentario"): Comentario=n.firstChild.data for n in Auth.getElementsByTagName("Saldo"): SALDO=n.firstChild.data if RAuth<>"1": print "Error: ", Comentario sys.exit(2) if MOVILES=='': print "Saldo actual: ",SALDO,"creditos" sys.exit(0) else: for n in dom.getElementsByTagName("Mensajes"): MSGS=n break TOTAL_ERRORES=int(MSGS.attributes["total_error"].value) TOTAL_MENSAJES=int(MSGS.attributes["total_mensajes"].value) TOTAL_OK=int(MSGS.attributes["total_ok"].value) if TOTAL_ERRORES==0: print 'Ok, '+str(TOTAL_OK)+' mensajes enviados' else: if TOTAL_OK==0: print 'Error, ningun mensajes ha sido enviado.' else: print 'Error, '+str(TOTAL_ERRORES)+' mensajes enviados con errores, '+str(TOTAL_OK)+' enviados correctamente:' MMOVILES=MOVILES.split(',') NN=0 for M in MSGS.getElementsByTagName("Mensaje"): for n in M.getElementsByTagName("Resultado"): RMesg=n.firstChild.data break for n in M.getElementsByTagName("Comentario"): CMesg=n.firstChild.data break if RMesg=="0": print '\t['+MMOVILES[NN]+'] ERR ['+CMesg+']' NN=NN+1 print "Saldo actual: ",SALDO,"creditos"
4. Descarga
5. Uso del programa
Llamar al programa:
linux:-$ python dcsms.py Uso del programa: Argumentos Obligatorios: -i --id Codigo de Cliente de la cuenta en Descom SMS -u --username Nombre de usuario de la cuenta en Descom SMS -p --passwd Password del usuario de la cuenta en Descom SMS Argumentos Opcionales: -s --sendsms Lista de numeros de moviles a los que se le envia el mensaje, separado por ",". Si no se define este argumento, se obtiene el saldo de la cuenta. -m --message Texto del mensaje a enviar. -r --remitente Remitente personalizado del mensaje.