# -*- coding: utf-8 -*-
# Copyright (c) 2021, Altiria TIC SL
# All rights reserved.
# El uso de este código de ejemplo es solamente para mostrar el uso de la pasarela de envío de SMS de Altiria
# Para un uso personalizado del código, es necesario consultar la API de especificaciones técnicas, donde también podrás encontrar
# más ejemplos de programación en otros lenguajes de programación y otros protocolos (http, REST, web services)
# https://www.altiria.com/api-envio-sms/
import requests
import json as JSON
 
def altiriaSms(destinations, message, senderId, debug):
	if debug:
	        print 'Enter altiriaSms: '+destinations+', message: '+message+', senderId: '+senderId
		try:
                        
                        #Se fija la URL base de los recursos REST
                        baseUrl = 'http://www.altiria.net/apirest/ws'
			
			#Se construye el mensaje JSON
			#YY y ZZ se corresponden con los valores de identificación del usuario en el sistema.
			credentials = {'login': 'YY', 'passwd': 'ZZ'}
		  	destination = destinations.split(",")
			messageData = {'msg': message
                                       #No es posible utilizar el remitente en América pero sí en España y Europa
                                       #Descomentar la línea si se cuenta con un remitente autorizado por Altiria
                                       #,'senderId': senderId
                        }
			jsonData = {'credentials': credentials, 'destination': destination, 'message': messageData}	
			#Se fija el tipo de contenido de la peticion POST
			contentType = {'Content-Type':'application/json;charset=UTF-8'} 
			#Se añade el JSON al cuerpo de la petición 
			#Se fija el tiempo máximo de espera para conectar con el servidor (5 segundos)
			#Se fija el tiempo máximo de espera de la respuesta del servidor (60 segundos)
			#timeout(timeout_connect, timeout_read)
			#Se envía la petición y se recupera la respuesta
			r = requests.post(baseUrl+'/sendSms', data=JSON.dumps(jsonData), headers=contentType, timeout=(5, 60)) 
			if debug:
				#Error en la respuesta del servidor
				if str(r.status_code) != '200':
					print 'ERROR GENERAL: '+str(r.status_code)
					print r.text
				else:
					#Se procesa la respuesta capturada
					print 'Código de estado HTTP: '+str(r.status_code)
					jsonParsed = JSON.loads(r.text)
					status = str(jsonParsed['status'])
					print 'Código de estado Altiria: '+status
					if status != '000':
						print 'Error: '+r.text
					else:
						print 'Cuerpo de la respuesta:'
						print "details[0]['destination']: "+str(jsonParsed['details'][0]['destination'])
						print "details[0]['status']: "+str(jsonParsed['details'][0]['status'])
						print "details[1]['destination']: "+str(jsonParsed['details'][1]['destination'])
						print "details[1]['status']: "+str(jsonParsed['details'][1]['status'])
			return r.text
		except  requests.ConnectTimeout:
			print "Tiempo de conexión agotado"
		
		except  requests.ReadTimeout:
			print "Tiempo de respuesta agotado"
		except Exception as ex:
			print "Error interno: "+str(ex)
		
print 'The function altiriaSms returns: \n'+altiriaSms('346xxxxxxxx,346yyyyyyyy','Mensaje de prueba', 'remitente', True)