# Tecnologías Multimedia e Interacción/Curso 2016-2017: Caso 3
## BOTMI

Nuestro proyecto de TMI consta de un bot para Telegram el cual para poder poder transcribir audios traducir los mensajes que llegan o hacer encuestas de una manera más sencilla.

### Motivación e idea

Los comienzos de la aplicación fueron complicados ya que en un principio no se le ocurriría a ningún miembro del equipo que se podía desarrollar, pero un día estando en clase a un miembro del equipo le llegó un audio y quería escucharlo pero no era el mejor momento por lo que se planteó al resto del grupo que se podría comenzar haciendo un proyecto para transcribir audios.
Siguiendo en la línea de la transcripción de audios también se pensó en la posibilidad de que nos llegase un mensaje de una persona que no hable nuestro idioma y que deseamos traducirlo, por lo que además de lo anteriormente mencionado se incluyó la opción de traducir mensajes que nos llegasen en otro idioma.
Por último cuando se quería quedar con los amigo era muy complicado porque al hacer las votaciones para ir a algún sitio era muy complicado porque se colaban mensajes entre medias de las votaciones y no se sabia quien había votado y quien no, por lo que se decidió añadir una funcionalidad más al bot, la cual era la posibilidad de añadir una encuesta para que se pudiese votar de una manera más sencilla, ya sea dónde ir el fin de semana o la fecha de los exámenes.
Todas estas funcionalidades se implementaron en un bot para telegram ya que era el único servicio de mensajería que proporciona una API para poder crear bots y contaba con una gran cantidad de información en la web.

## Desarrollo

Para llevar a cabo el proyecto se ha hecho uso de una gran herramientas de las que vamos a hablar a continuación:
* BotFather: este bot ya existente en Telegram permite crear de una forma sencilla un bot además de cambiar la configuración del bot que estemos desarrollando como por ejemplo el permitir que el bot participe en los grupos o que cuando se ponga “/” salgan los posibles comandos. Además, una vez se ha creado el bot nos devuelve un Token único el cual será necesario para poder hacer uso de la API de Telegram.
* Python y Telebot: Se usó ya que es un lenguaje que todos conocíamos y nos era más sencillo de implementar el bot, además se usó Telebot que es una biblioteca en Python que se usó para implementar la funcionalidad principal del bot.
* Bing Speech Api: se hizo uso de la API de Bing para poder transcribir los mensajes de audio que se enviaban al Bot. Para poder hacer uso de está API nos tuvimos que registrar para así nos proporcionasen una KEY con la cual se nos daba un número limitado de palabras que podría transcribir al mes.
* Google Translate: El uso de este servicio fue algo más complejo ya que en un principio hacíamos uso de una biblioteca de python que nos facilitó la tarea de traducir pero Google bloqueaba las peticiones que se hacían desde dicha biblioteca ya que era un servicio que incluían en sus servicios de pago. Como era imposible hacer uso de esta biblioteca decidimos seguir buscando y encontramos un código que hacía consultas mediante Json a google translate y que no era bloqueado por google, así que decidimos incorporarlo a nuestro proyecto.
* Eclipse: Es el entorno que usamos para llevar a cabo el proyecto, para que fuese capaz de compilar programas en python tuvimos que instalar la extensión de PyDev.
* GitHub: Se proporciona el repositorio con las fuentes de nuestro proyecto para poder ejecutarlo. https://github.com/mizadri/telegramBot. Con el Token actual de Telegram, el alias del bot es @Transcrypt_Bot.

## Comandos

* /help: Este comando muestra al usuario una ayuda indicándole todos los comando que existen en la aplicación y además una breve descripción.
* /config: Este comando es el encargado de mostrar al usuario un teclado especial en el que se muestran una serie de idiomas para que seleccione su el idioma al que quiere que le traduzca las cosas el bot.
* /status: Este comando muestra la configuración actual del bot, es decir, si el bot traducirá y transcribirá además del idioma que se ha establecido por defecto.
* /auto: Activa la traducción y transcripción automática.
* /auto translate: Activa únicamente la traducción automática.
* /auto transcribe: Activa únicamente la transcripción automática.
* /manual: Desactiva la traducción y la transcripción. Este comando sólo está disponible en los grupos.
* /translate [texto]: Este comando es el encargado de traducir un texto, hay dos opciones enviarle un texto acompañando al comando o no introducir el texto en cuyo caso se traducirá el último mensaje que se haya enviado.
* /transcribe [idioma]: Este comando se encarga de transcribir un audio, en este caso se le puede indicar el idioma en el que viene el audio junto con el comando y en caso de que no se indique el idioma se considerará que es el idioma por defecto del usuario.
* /initPoll: Este comando es el encargado de crear la encuesta seguido de una cadena en formato JSON con los campos y los valores.
* /endPoll: Finaliza la encuestra y genera una gráfica con los resultados.

## Componentes

* Verónica del Valle
* Adrián García García
* Alfonso Tomé Coronas