Twitterbot cumple su cometido, interactuar con un usuario a través de mensajes directos, pero esa interacción es un tanto lenta, no tiene la rapidez de un chat estándar.
Otro “problema” es la limitación de los 140 caracteres de twitter, pero el mayor de los inconvenientes es que twitter te penaliza con un tiempo de espera si haces demasiadas consultas a su API, y esto si es un problema de verdad.
Una vez acabado twitterbot y viendo sus limitaciones empecé a barajar otras posibilidades que me dieran más flexibilidad y que fuese fácil implementar nuevas funcionalidades, así nació googlebot.
Hablando con Pharizna por el foro me sugirió una serie de funcionalidades que le gustaría que googlebot fuese capaz de realizar, y en gran medida lo he conseguido.
PREPARANDO NUESTRO GOOGLEBOT
Nuestro googlebot recibirá nuestras ordenes a través del servicio Hangouts de Google (antes conocido como gchat) y sólo responderá a los comandos del usuario permitido.
Empecemos entrando al Raspberry Pi como root e instalamos los paquetes necesarios:
apt-get install centerim festival screen festvox-don festvox-rablpc16k festvox-kallpc16k festvox-kdlpc16k gawk wget
Para que nuestro bot nos hable necesitamos usar Festival. Sus voces por defecto son mejorables, por suerte la Junta de Andalucía creó unas voces en castellano mejoradas para integrarlas en la distro Guadalinex pensando en la gente con discapacidades visuales. Para instalar esas voces haremos lo siguiente:
wget http://forja.guadalinex.org/frs/download.php/153/festvox-palpc16k_1.0-1_all.deb
dpkg -i festvox-palpc16k_1.0-1_all.deb
CONFIGURANDO CENTERIM
Ahora empezaremos a configurar Centerim que es el programa de chat. Lo peculiar de Centerim es que podemos decirle que cada vez que reciba un mensaje ejecute un comando, y quien dice un comando, dice todo un script…
Ejecutamos centerim con el usuario que se usará para arrancarse normalmente, en nuestro caso, root.
En la opción jab se rellenan las opciones de la cuenta gmail que usaremos para la Raspberry. Una vez hecho esto se creará una estructura de directorios, salimos del programa pulsando «q» varias veces.
Ahora editamos el fichero /root/.centerim/ config
Deberíamos tener algo similar a esto:
protocolormode
sort_by_status_and_activity
left_panel_width 48
log_panel_height 9
chat_panel_height 7
defaultauthmessage Please accept my authorization to add you to my contact$
jab_nick cuentapararaspberrypi@gmail.com
jab_pass contraseña
jab_server talk.google.com:5223
jab_osinfo 1
jab_prio 4
jab_ssl 1
Modificamos los parámetros jab_nick y jab_pass con los datos de la cuenta de gmail del bot y guardamos los cambios.
El siguiente fichero a editar es el que centerim usa para saber que hacer cada vez que reciba un mensaje, en nuestro caso pondremos la ruta al script que se ejecutará pasandole como parámetro el mensaje recibido. El fichero es /root/.centerim/external, y lo dejaremos así:
%action contestador automatico
event msg
proto all
status all
options stdin stdout
%exec
msg=cat
/bin/bash /root/googlebot/googlebot $msg
Para que nuestro bot sepa traducir al inglés, debemos instalar google translate cli, un cliente de google translator para el terminal. Para ello desde el terminal escribiremos:
cd /tmp
wget https://github.com/soimort/google-translate-cli/archive/master.tar.gz
tar -xvf master.tar.gz
cd google-translate-cli-master/
sudo make install
Finalmente crearemos el script en /root/googlebot y lo llamaremos googlebot. Una vez acabemos le daremos permisos de ejecución con chmod +x /root/googlebot/googlebot y ya estaremos listos.
Las órdenes que googlebot entiende por el momento son:
ayuda :muestra los comandos disponibles.
hola: nos saluda.
traduce: traduce al inglés ele texto indicado.
hora: muestra la hora actual.
ip: muestra la ip externa del raspberry pi.
apunta: guarda como nota el texto que le pongamos.
notas: muestra las notas guardadas.
borranotas: borra todas las notas.
calendario: muestra el mes actual.
ejecuta: ejecuta comandos en el sistema (en el raspbian). MUCHO CUIDADO pues lo ejecutamos como root!
repite: Repite el texto que le digas
Para más información sobre un comando podemos decirle a googlebot ayuda seguido del comando, por ejemplo: ayuda notas
Una vez acabado, he pensado en más características para añadirle, como por ejemplo leer mails o ser capaz de hablarle al bot, pero la cosa se complica, y pese a que he conseguido acceder a la bandeja de entrada de Gmail, no puedo leer mensajes individualmente (de momento)…
Respecto a hablarle al bot, se me ha ocurrido un “truco” para poder hacerlo sin esfuerzo alguno, usando el reconocimiento de voz que Android tiene integrado, la verdad es que ahora si que va pareciendo un robot…
Se aceptan sugerencias de nuevas funcionalidades…
Gerard
696