FAQs FAQs

Contestador SMS

								
Descripción: 

Contestador SMS es un proyecto que pretende crear un sistema de aviso y contestación automática de mensajes recibidos en un correo electrónico.

El funcionamiento se basa en la lectura del correo electrónico cada cierto tiempo y de forma periódica, detectando si han llegado nuevos mensajes.En caso de llagar un nuevo mensaje, la aplicación procesa el mismo para identificar remitente:

  • Mail normal: si es un correo normal, se contesta a la dirección del remitente con el mensaje estandar que configura el usuario y se manda un sms de aviso al usuario.
  • Mail procedente de recepción SMS: Los mensajes procedentes del API Recepción SMS  tienen unas características que permiten identificarlos fácilmente. El remitente es open@movilforum.com y el cuerpo del mensaje lo forman dos líneas "Movil:   Texto:". Ante nuevos mensajes de este estilo, la aplicación contesta al remitente con un SMS estandar y avisa al usuario de la recepción de ese mensaje.

Es decir, el sistema contesta esos mensajes con un texto estándar que configura el usuario y avisa al mismo de esa recepción mediante un mensaje de texto. 

NOTA:  La contestación a un mail normal se realiza empleando el API de Envío HTTP de MMS, ante las dificultades encontradas con el servicio SMTP. En los comentarios puedes encontrar el código en Python de envío de mensaje SMTP con archivo adjunto.

Contestador SMS 1.0

Esta versión del programa funciona mediante la petición de los parámetros de funcionamiento que tiene el usuario:

  • Número de teléfono, desde el que se harán los avisos de contestación y recepción de mensajes.
  • Clave del 770 para poder hacer los envíos de los mensajes.
  • Mail de lectura
  • Password del mail, para poder leerlo.
  • Refresco, periodo de descanso entre lecturas.

El usuario previamente a usar este servicio, debe registrar su numero en el API de recepción SMS. De esa forma, entrando al correo tenemos tanto mails normales como mensajes procedentes de recepción.

El programa lo que hace primeramente es una lectura de los mensajes existentes en el inbox, de esa forma toma su puesto de partida, y en las siguientes lecturas se procesan los mensajes nuevos que van entrando en el buzón.

Esta hecho mediante conexión POP3, por lo que en principio debería funcionar sobre cualquier cuenta cuyo servidor soporte este tipo de conexión. En el desarrollo se ha usado gmail como buzón.

Contestador SMS v2.0

La versión 2.0 tiene las mismas funcionalidades que la v1.0, pero cuenta con la ventaja que la carga de datos no se realiza a través de Prompt del sistema sino que se carga a través de un fichero de configuración.

 numero de telefono;
 clave770;
 correo@gmail.com;
 clavecorreo;
 mensajecontestacion;
 ciclolectura;

Es importante dejar el ; del final de línea por lo comentado, es la forma de separar la información deseada (el dato del usuario) del carácter "\n" que introduce readlines() al leer el contenido del fichero. 

De esta forma nos libramos de la molestia de tener que escribir todos los datos cada vez que usamos el programa, sino que teniendo en un único lugar ya nos funciona de una forma más cómoda. 

Contestador SMS Ejecutable.

Versión ejecutable del contestador que permite hacer uso del proyecto sin necesidad de tener instalado Python en la máquina. 

Se basa en la segunda versión desarrollada y para un correcto funcionamiento debe encontrarse en "C:\contestadorsms". 

Una vez ejecutad, podremos ver su estado en Administrador de tareas de Windows (ctrl + alt + sup). Para frenar su ejecución simplemente eliminamos el proceso de la tabla.

Es importante señalar que tanto en el arranque como en el funcionamiento, el usuario no se ve molestado por mensajes en su equipo.

 

Falta realizar la Wiki, un poco de tiempo y estará disponible.


Comentarios

User offline. Last seen 1 año 22 semanas ago. Desconectado
Miembro desde: 31/10/2007
Points: 0

Hola a todos.

Estoy programando el proyecto en Python y en la primera versión se ocupara de la contestación de los mensajes mediante un texto base.

Voy teniendo problemas en la interpretación de los mensajes, hago la lectura y comprobación del mensaje mediante POP3 ya que con SMTP-IMAP al tener que abrir conexiones y sesiones (al menos eso he ido viendo) puede que diera problemas con algunos servidores y sobre todo configuraciones de equipos.

Tengo pensado ir poco a poco integrando más APIs en el mismo, si alguien se anima a participar del desarrollo... invitado está y aprendemos todos con ello.

v1.0: Contestación estándar de los mensajes.(API de envío SMS y recepción SMS)

v1.0.1: Integración con API Copiagenda para identificar el número remitente.

v1.0.2: Crear ejecutable. 

v2.0: Usar el API de MMS para enviar imágenes y darle algo más de alegría a las contestaciones.

Se acepta igualmente ideas o sugerencias al respecto... tengo una en mente con Localízame pero tengo que darle todavía una vuelta.

La idea es convertir luego después todo en ejecutable independiente de si se tiene Python o no instalado, he visto algo por Internet pero no se yo si funcionará.

 

 

 

User offline. Last seen 1 año 22 semanas ago. Desconectado
Miembro desde: 31/10/2007
Points: 0

Menuda locura que ha llegado sorprendentemente a buen puerto.

Empece el proyecto sin tener ni idea de Python, pero gracias a los SDKs que viene bien detallado todo, a la información de la página de Python y la multitud de información existente en la red...   se puede decir que se ha llegado a buen puerto, si bien no de la forma o con las escalas deseadas.

El primero problema que encontre fue la imposibilidad de poder enviar un mail de respuesta cuando se recibe un correo que es un mail, no procedente del API de recepción SMS. Por más códigos, pruebas realizadas, intentos...  no lograba conectar con el servidor smtp del correo. Para salvar este problema y de paso introducir una mejora en el proyecto compensatorio, implemente el envío de un MMS a ese correo como destinatario en el que poder personalizar la imagen a enviar. 

Ha habido muchas dudas, se han llegado a soluciones que si bien resuelven el problema pueden resultar no óptimas... así, que si alguien quiere optimizar,mejorar, depurar, usar...  bienvenido sea.

 

User offline. Last seen 1 año 22 semanas ago. Desconectado
Miembro desde: 31/10/2007
Points: 0

Hola a todos.

A ver si alguien puede echarme una mano con el tema del smtp que me esta volviendo loco, no logro hacer la conexión con el servidor de smtp de Gmail.com y me parece realmente raro.

He visto diferentes códigos por Internet para resolver el problema, pero con todos me ha salido el mismo problema de conexión al servior smtp de Gmail. Incluso he activado esta opción en el perfil de la cuenta pero ni con esas.

Os dejo enlaces a los códigos usados:

#!/usr/bin/python

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
import os

gmail_user = "your_email@gmail.com"
gmail_pwd = "your_password"

def mail(to, subject, text, attach):
msg = MIMEMultipart()

msg['From'] = gmail_user
msg['To'] = to
msg['Subject'] = subject

msg.attach(MIMEText(text))

part = MIMEBase('application', 'octet-stream')
part.set_payload(open(attach, 'rb').read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition',
'attachment; filename="%s"' % os.path.basename(attach))
msg.attach(part)

mailServer = smtplib.SMTP("smtp.gmail.com", 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmail_user, gmail_pwd)
mailServer.sendmail(gmail_user, to, msg.as_string())
# Should be mailServer.quit(), but that crashes...
mailServer.close()

mail("some.person@some.address.com",
"Hello from python!",
"This is a email sent with python",
"my_picture.jpg")

 Encontrado en: http://kutuma.blogspot.com/2007/08/sending-emails-via-gmail-with-python.html

El problema siempre me aparece en mailServer = smtplib.SMTP("smtp.gmail.com", 587) y ya no sé a que puede deberse, ¿ideas?.

Seguiremos haciendo pruebas a ver si logro salvar ese problemilla.

Tambien he visto que existe una libreria para Python para trabajar directamente sobre Gmail, libgmail , pero igualmente me da problemas en la autenticación contra el servidor.

:-(

 

Imagen de sistemasorp
User offline. Last seen 50 semanas 4 horas ago. Desconectado
Miembro desde: 19/08/2008
Points: 22

Hola

En mi caso ha funcionado el script que has mandado. Solo he tenido que cambiar el usuario, el password, la dirección de destino y el fichero adjunto.

User offline. Last seen 1 año 22 semanas ago. Desconectado
Miembro desde: 31/10/2007
Points: 0

Buenas, ¿qué tal?.

Muchas gracias por la ayuda, la verdad que ya no sé que pensar...  seguramente tenga cortado el tráfico smtp bien por el router o el cortafuegos o el propio cortafuegos del sistema operativo. 

Para quien quiera modificarlo e integrar ese interfaz de comunicación con Gmail, es mas o menos sencillo...  no soy un "guru" de la programación en Python, pero si no me equivoco:

Al inicio del contestador, include gmail

Siendo gmail el fichero de python donde esta el código que deje en el comentario y ha probado el compañero (de nuevo gracias!).

Y en la parte de análisis del contestador, sustituir la línea mms.SendMessage(subject, prueba, contest) por la que hace uso de la función de envío de gmail: mail(to, subject, text, attach), con los campos correspondientes.

De esa forma deberia funcionar enviando un correo a través de Gmail, en lugar de un MMS como hace actualmente.

;-)

 

User offline. Last seen 1 año 22 semanas ago. Desconectado
Miembro desde: 31/10/2007
Points: 0

Hola a todos.

He estado probando a hacer más cómodo el funcionamiento del Contestador SMS, la cosa es que en lugar de pedirte los datos por Prompt del sistema se haga la carga de los mismos empleando un archivo de texto. 

Ha estado emocionante, lo tenía hace un tiempo pero no lo había probado decentemente para ver si realmente estaba correcto.

El caso es que parece funcionar, mediante la lectura del fichero de configuración (un simple archivo txt) y el comando readlines(), voy leyendo cada línea del archivo hasta que este se cierra. 

Tenía el problema que al final de la línea se introducía un "\n" o salto de línea, así que después de mucha pelea he alcanzado la solución "óptima". 

Cada línea de ese archivo txt tiene un campo de datos del contestador, y finaliza con un ";". Mediante readlines() leo la línea y separo la cadena a partir de ";" como referencia. A la izquierda me queda el dato deseado y a la derecha "\n"...   es una forma de escapar de ese carácter que tanta guerra da. 

Lo siguiente en mente es probar si es posible realizar un ejecutable que nos permita "independizar" el contestador de tener o no instalado Python...  he visto en un blog la forma de hacerlo, aquí podéis verlo... es usando el módulo Py2exe.

Tengo pendiente la Wiki, no me olvido, pero quería hacerla cuando tenga ya superada la parte de ejecutable. 

 

 

User offline. Last seen 1 año 22 semanas ago. Desconectado
Miembro desde: 31/10/2007
Points: 0

Versión ejecutable del contestador.

Después de un tiempo de no hacer mucho con el código, he podido ponerme y generar el ejecutable que os había comentado. 

Para hacerlo hay que instalar el paquete o añadido  Py2exe

y una vez que lo tenemos hay que generar un archivo .py para indicarle a ese paquete sobre que archivo debe crear el ejecutable:

 # setup.py
 from distutils.core import setup
 import py2exe

 setup(windows=["miaplicacion.py"])

Lo que hace este ejemplo es inidcar a Py2exe que cree el ejecutable de miaplicacion.py.  Este paquete mira que import e includes tiene ese archivos, e ir agregando lo necesario para hacer independiente la ejecución completamente de si tenemos o no Python instalado. 

La forma de llamarlo: Python setup Py2exe

El resultado es la creación de dos directorio, uno bult y otro llamado dist. El que nos interesa es este segundo, donde está el ejecutable y todo lo necesario para usarlo.

Bien explicadito, e incluso con capturas de pantalla, podéis verlo en:

http://www.fpress.com/revista/num0505/art.htm

 

OMF Plataformas

Plataformas para desarrolladores




Plataformas sociales