Paso 6: ¿Qué decir?
Así que ahora tenía un conejo (en pedazos todo el Banco) que podía hablar, pero se necesita un mecanismo para recibir notificaciones y pasar al servicio de Ivona para leer. Vieron la posibilidad de mensajes de texto a través de un servicio en línea o adaptador de tarjeta SIM y también Twitter y Dropbox para ofrecer cadenas/archivos de texto, pero finalmente decidió utilizar imaplib, un medio basado en Python de interactuar con las cuentas de correo electrónico IMAP. Me decidí por esta opción principalmente porque integrado bien con el servicio IFTTT, puede ser realmente creativo con el formato de correos electrónicos de notificación. También significaba que yo sería capaz de enviar mensajes de correo electrónico directamente a RabbitPi para ser leído en voz alta.
Miré a través de un montón de ejemplos de python imaplib en línea y después combinando pedazos y trabajando a través de la documentación de imaplib que logré terminar con un guión que revisar Gmail para mensajes no leídos a intervalos regulares e impreso texto en pantalla según el contenido del tema del mensaje. Esto era muy práctico, como podría adaptar una instrucción "IF" en el código de trabajo sólo si el correo electrónico venía de mí mismo y luego cambiar la acción "Imprimir" para el código de llamar al servicio de Ivona.
Pasé un buen rato tratando de adaptar el imaplib & Pyvona código para leer el cuerpo de mensajes de correo electrónico pero esto resultó para ser extremadamente complicada - pronto aprendí que los campos de correo electrónico de base (de, a, tema, etc.) tienen un formato muy simple, pero que el texto del cuerpo del correo electrónico se puede estructurar de muchas maneras diferentes. Al final no importa, pude conseguir lo que necesitaba mediante el asunto del correo electrónico como el campo que sería leer el texto de la notificación de.
Adaptado el ejemplo de código imaplib para que en vez de parar después de cada verificación de correo electrónico que le lazo redondo infinitamente, comprobación de mensajes de correo electrónico un par de veces por minuto y lectura de cualquier nuevos bastante mucho que llegaron. Esto era útil para la prueba pero en la práctica probablemente haría un poco menos a menudo. También merece la pena teniendo en cuenta que el script almacena la contraseña en texto plano así que va a necesitar algunos cifrado añadido en algún momento.
Estoy 100% seguro que esto se puede lograr mucho más elegante y eficiente en Python pero es divertido y desafiante para conseguirlo laborable a todos - pedido dinero prestado a "Python for Kids" de la biblioteca esta semana así que mi código esperemos que se mejore como aprender más.
Con el trabajo de guión básico get-an-email-and-read-it-out he añadido en los bits adicionales de código que el conejo orejas moverse y se iluminan al leer las notificaciones. El código que usé todo se compartirá en GitHub en algún momento, pero tenga en cuenta mi falta de destreza de python!