jueves, 25 de julio de 2013

Uso de Hangouts (GTalk) para el envío de notificaciones

... y para mucho más

Hace un tiempo publiqué un post (este) sobre el uso de GTalk desde la consola, para el envío de notificaciones. Era un poco tosco, pero funcionaba. Al poco, ratoncio me comentaba que se podía hacer eso mismo pero usando un par de funciones del centerim. Desde entonces lo estoy usando de esa forma, pero no había podido poner unas instrucciones decentes, aquí están.

Para no perder el norte, nuestro objetivo es poder enviar notificaciones vía Hangouts y usar este además para enviar ordenes de todo tipo a nuestro RaspberryPi.
Empezamos instalando:
apt-get update
apt-get install centerim

y ya no hay que instalar más. Antes de seguir, ejecuta al menos una vez centerim con el usuario que va a ejecutarlo automáticamente, para que genere la estructura de archivos necesaria. Tenemos que registrar una cuenta de Gmail en el centerim, así que usaremos una que no tengamos en uso o incluso (it's free!!) crearemos una nueva ¡¡NO USES TU CUENTA PRINCIPAL DE GMAIL!! más que nada porque puedes volverte loco enviándote mensajes a ti mismo ... y además es un poco triste. Para registrar en centerim tu cuenta de Gmail, editamos el archivo /root/.centerim/config y añadimos al final:
jab_nick CUENTA.PARA:RASPBERRY@gmail.com
jab_pass clavesuperseguradelamuerte
jab_server talk.google.com:5223
jab_osinfo 1
jab_prio 4
jab_ssl 1

Si lo vas a ejecutar con un usuario que no sea root, el archivo config está en el home de dicho usuario. Ahora ejecutamos una vez centerim para que ver todo funciona, he incluso comprobaremos que podemos mandar y recibir mensajes.
Ahora vamos a configurar las respuestas automáticas, para ello editamos el archivo /root/.centerim/external :
%action contestador automagico
event msg
proto all
status all
options stdin stdout
%exec
msg=`cat`
/bin/bash /usr/local/bin/contestador.sh $msg

Eso configura centerim para que al recibir cualquier mensaje, ejecute el script contestador.sh pasándole como parámetro el contenido del mensaje. El script /usr/local/bin/contestador.sh lo creamos según nuestras necesidades, un ejemplo puede ser:
#!/bin/bash
#programado por Juanmol para http://rsppi.blogspot.com
case $1 in
        espacio)
                echo "El sistema tiene libre `df -h | grep rootfs | awk '{ print $4,$5 }'`"
        ;;
        domo)
                echo "Ejecutando $@"
                /bin/bash /usr/local/bin/x10.sh $2 $3
        ;;
        laser)
                if [ "$2" = "on" ];
                then
                   echo "Encendiendo el \"LASER\"";
                   /bin/bash /usr/local/bin/laserdedestruccionmasiva.sh on ;
                else
                   echo "Desconectando el \"LASER\"";
                   /bin/bash /usr/local/bin/laserdedestruccionmasiva.sh off ;
                fi
        ;;
        *)
                echo "$1 no lo entiendo, los comandos que entiendo son: espacio, domo, laser"
 ;;
esac

Que yo creo que no necesita explicación. Entre otras cosas lo vamos a usar para mandarle órdenes a nuestro sistema domótico, por Hangouts (GTalk). Si buscas un poco, solo hay una empresa instaladora de domótica que ofrece esto mismo, con su propio sistema cerrado y cobrándote una considerable suma de dinero.
Añadimos esta línea al archivo /etc/rc.local y la ejecutamos tal cual, para que arranque centerim y lo deje en segundo plano:
screen -dmS centerim /usr/bin/centerim

Con esto hemos conseguido que nuestro Raspberry nos hable cuando le preguntamos, si queremos que nos diga cosas sin tener que preguntarle primero, cuando se genera un evento en Asterisk, cuando termina de descargar un torrent, cuando ... lo que sea, simplemente tenemos que ejecutar:
echo "Evento a las: `date`: $contenido" | centerim -s msg -p jab -t CUENTA.DE.DESTINO@gmail.com

Es mucho más fácil y útil. Ya me diréis para que lo vais a usar ;)

90 comentarios:

  1. Hola, no encuentro la ruta
    Como root hago nano /. centerim/config y me aparece en blanco que hago mal??

    ResponderEliminar
    Respuestas
    1. seguramente no haces nada mal. Ejecuta primero centerim, a ver si tiene que generar la estructura de archivos para el usuario root. Tambien la primera vez que lo ejecutas te sale el configurador de cuentas, por si prefieres hacerlo desde ahí, en lugar de tocando el archivo.

      Eliminar
    2. Vale creo que faltan pasos
      Una vez instalado pones en el terminal centerim y se te abre un configurado, configuras una cuenta y ya te aparece lo que tu dices

      Eliminar
    3. No había visto tu respuesta muchas gracias!!!

      Eliminar
  2. Aqui esta de nuevo el pesado
    pi@raspberrypi ~/.centerim $ ls
    actions groups modelist
    captcha j3baz4ia6s9zen3rbyh7ncvp42q@public.talk.google.com pid
    colorscheme jmorale991@gmail.com sounds
    config keybindings

    como ves no existe el archivo external pero si que existe el archivo actions y lo tengo de la siguiente forma
    http://pastebin.com/pvuZvtC1

    existe el archivo contestador.sh y le he dado permisos de ejecucion, pero no hace nada...que me olvido???

    ResponderEliminar
    Respuestas
    1. vale, joer que bobo estoy, hay que crear un fichero que se llame external y ahi ya puedes poner lo que quieras

      Eliminar
    2. no te preocupes por insistir, eso demuestra interés. También ha sido un poco culpa mía, porque he explicado el paso a paso teniéndolo ya configurado, por lo que puede que esos archivos que te faltan se hayan generado de alguna otra forma. Esta tarde actualizo el post para que no le pase a nadie más.

      Eliminar
  3. vale, tengo otro pequeño problemilla
    cuando intento configurar esto para que cada vez que se descargue un torrent me llegue un hang, no me lo envia (Eso es otra historia que me estoy pegando con ello), pruebo a poner a mano en consola

    echo "Prueba" | centerim -s msg -p jab -t loquesea@gmail.com

    me llega perfectamente pero luego entra en un bucle y dice todo el rato: "no lo entiendo, los comandos que entiendo son: espacio, domo, laser" Esta asi todo el rato y aunque mate el proceso screen -dmS centerim /usr/bin/centerim si luiego lo arranco de nuevo me vuelve a salir y tengo que reiniciar la rasp para que se solucione

    Me imagino que tendria que crear en el script de acciones externas algo que para que no entre en la ultima parte del script no?

    ResponderEliminar
    Respuestas
    1. eso mismo me ha pasado a mi, por eso pongo en el post que es recomendable usar una cuenta nueva. Lo que te esta pasando es que tienes el usuario registrado en varios sitios o algo tan tonto como tener abierto gmail en el navegador, ya que el chat se activa solo. Prueba crearte una cuenta nueva, cerrar la sesion de esa cuenta en el navegador y dejarla abierta solamente en el centerim.

      Eliminar
  4. Gran aporte, lo he probado y va genial. :D

    ResponderEliminar
  5. Buenas a todos.
    Entiendo que es muy facil para correr/matar scripts por ejemplo o devolver comandos que uno pueda poner en la consola.
    Lo que no termino de darme cuenta es como devolver info sobre aplicaciones especificas u otro tipo de info, como por ejemplo (como dicen mas arriba) como avisar que termino una descarga de torrent.

    Veo que Franastor uso como ejemplo
    'echo "Prueba" | centerim -s msg -p jab -t loquesea@gmail.com'
    No termino de entender (en ese caso) que es el '-p jab -t' o como, partiendo de este ejemplo, puedo hacer lo mismo con el Transmission.

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola, aqui tienes el ejemplo de envío de notificaciones después de terminar un torrent http://rsppi.blogspot.com.es/2012/11/torrents-solucionado.html usa whatsapp, pero para que envíe un Hangout solo tienes que cambiar una linea.
      Lo del -p y -t son opciones que el propio centerim pide, en ese caso "protocolo jabber" y en -t pones el destinatario del mensaje. Tu ve poco a poco ¿te envía mensajes?

      Eliminar
    2. Gracias por tu respuesta.
      Puedo enviar y recibir mensajes. El problema que tengo es que no puedo ejecutar el centerim al inicio.
      Podrías poner como debería quedar el rc.local completo?

      Por otro lado, invito a todos a postar su "contestador.sh" para poder compartir que hace cada uno y generar ideas en los demás.

      Eliminar
    3. Para ejecutar centerim al inicio, tienes que añadir la línea:
      screen -dmS centerim /usr/bin/centerim
      al archivo /etc/rc.local Asegúrate de tener instalado 'screen'.

      Eliminar
    4. Y que es el programa 'screen'?
      No puedo hacer un 'update-rc.d defaults' o similar?

      Eliminar
    5. pos un pograma ;)
      apt-get install screen
      lo que ejecutes despues de screen , lo dejas en segundo plano. Si buscas screen en el blog verás que se usa con bastante frecuencia.
      Para usar update-rc.d, con un script que tu mismo hagas, necesitas ... ser un maquina ;)

      Eliminar
  6. juan mol cual es tu email soy nuevo en esto y queria ver si podria consultarte algo mi email es netzaq80@gmail.com

    ResponderEliminar
    Respuestas
    1. Hola, a la derecha tienes un formulario de contacto, el link de facebook, google+ y twitter. Pregúntame lo que quieras por ahí y así aprendemos todos.

      Eliminar
  7. Hola,
    yo no encuentro el directorio /root/.centerim, ni el /pi/.centerim, configuro centerim desde ssh y soy capaz de enviar y recibir mensajes, pero no encentro la ruta que indicas...

    ResponderEliminar
  8. prueba ejecutar centerim con el usuario que vaya a usarlo, te sale un asistente y te genera los archivos.

    ResponderEliminar
    Respuestas
    1. Ya lo he hecho y nada... ejecuto centerim con el usuario pi desde ssh y nada. Y como ya he dicho, configuro centerim desde ssh y todo muy bien, pero no encuentro el archivo de configuración...

      Eliminar
    2. o_O cuando ejecutas por primera vez centerim te genera los archivos, seguro. Prueba con el asistente, a ver si así se deja. Tienes que ir a la parte de jabber y poner la misma configuración que explico en el post.

      Eliminar
  9. Buenas Juan Mol, acabo de seguir este tutorial. Lo que me pasa es que cuando ejecuto screen -dmS centerim /usr/bin/centerim
    No se me ejecuta el centerim... la linea no da error, pero no se me conecta la cuenta que tengo configurada. cuando miro las sesiones me sale 7393.centerim:detached
    Alguna idea??

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. screen es para dejarlo en segundo plano. Antes de nada, asegúrate de no tenerlo en marcha, prueba con "ps aux | grep -i centerim" si sale algo, mátalo con kill.
      prueba ejecutar después:
      screen centerim
      para salir pulsa ctrl+a d
      con eso lo dejas en segundo plano. Para que se lance con el sistema usamos las opciones -dmS, que también deberían funcionarte.
      Prueba y me cuentas.

      Eliminar
    3. Oh! muchas gracias por la respuesta tan rápida. Mientras respondías he toqueteado todo lo toqueteable (de nuevo) y me he dado cuenta de que lo estaba ejecutando sin el usuario root. Ahora en el /etc/rc.local he puesto sudo screen -dmS centerim /usr/bin/centerim y me funciona!
      Gracias!!

      Eliminar
  10. Hay otra cosita que no me sale, y es que cuando intento:
    sudo echo "probando probando" | centerim -s msg -p jab -t micorreo@gmail.com

    Me dice:
    event sending error: error creating directory for the contact

    Es lo único que me falta para tener el post funcionando al 100%! tienes idea de que es lo que estoy haciendo mal??

    ResponderEliminar
    Respuestas
    1. pues me temo que tiene que ser culpa de los permisos otra vez. Lo primero, asegúrate de tener a la persona a la que vas a enviar las notificaciones en la lista de direcciones. Después de eso lo mas fácil es que hables a través de centerim al menos una vez con ese contacto. Pero ya te digo que tiene pinta de seguir siendo problema de permisos.

      Eliminar
    2. A ver, te explico lo que he hecho ahora y cual ha sido el resultado, para empezar he cambiado los permisos " a saco" de las tres cosas que he modificado, no se si he hecho bien haciéndolo así :S
      $ sudo chmod 777 /root/.centerim/config
      $ sudo chmod 777 /root/.centerim/external
      $ sudo chmod 777 /usr/local/bin/contestador.sh

      despues he ejecutado centerim y he enviado un mensaje desde mi correo personal, y me llega el mensaje a la cuenta de la raspberry, y viceversa. Luego he entrado desde la rasbperry a editar el único contacto que tiene (mi correo personal) y he visto que en el apartado correo no habia nada, así que he añadido mi correo personal. ahora está así:
      https://www.dropbox.com/s/n7ks5f7etcy9nyk/Sin%20t%C3%ADtulo.png

      He vuelto a probar el comando: pi@raspberrypi ~ $ sudo echo "probando probando" | centerim -s msg -p jab -t micorreo@gmail.com
      y me salta el mismo error, así que he dicho, pues... si es por permisos... vamos a darle permisos a lo bestia, y he hecho esto: sudo chmod -R 777 /root/.centerim

      sigue petando: event sending error: error creating directory for the contact
      :(

      Eliminar
    3. No se si funcionará en el Raspberry o no, pero a mi en un debian wheezy (en un pc) también me daba este error cuando lo ejecutaba al inicio en el fichero /etc/rc.local. Para solventarlo después de reiniciar el equipo he ejecutado el comando siguiente: screen -r centerim
      Esto hace que se muestre la ventana de la aplicación que se ejecuta en la terminal virtual. Ahora le configuras de nuevo los datos que necesites. Cuando termines sal (pulsando la tecla q). Reincia de nuevo a ver si ahora te funciona.

      Espero que te sirva.

      Saludos,

      Eliminar
  11. Hola, ante todo felicidades siempre sorprendes, seria una caña que cuando le envies las ordenes a las raspberry pueda hablarlo por los altavoces, por ejemplo una opcion extra en el menur que sea Di lo que sea, y en las raspberry por los altavoces dijese: lo que sea.
    estuve mirando voces digitales pero ivan mal y lentisimo, no se entendia.
    ya me contaras si se puede
    gracias

    ResponderEliminar
    Respuestas
    1. no seria complicado:
      tts )
      texto=$(echo $@ | sed 's/tts\ //g')
      echo "reproduciendo $texto"
              wget -F -U "Mozilla/5.0 (X11; U; Linux x86_64; pl-PL; rv:2.0) Gecko/20110307 Firefox/4.0" "http://translate.google.com/translate_tts?tl=es&q=$texto" -O /tmp/tts.mp3
              mplayer /tmp/tts.mp3
      ;;

      con eso y unos altavoces ...

      Eliminar
    2. Genial como siempre!!! lo acabo de añadir y funciona perfecto, reproduce sin problemas y con una voz mucho mas limpia de lo que esperaba mil gracias campeón

      Eliminar
    3. Juan de lujo me encanta, he añadido algo de codigo para que cuando reproduces un texto no me envie la salida del fichero que suele ser algo largo y no interesa, añado en la linea de mplayer /tmp/tts.mp3 > /dev/null 2>&1 y asi unicamente te dice reproduciendo $texto y el resto no aparece :)
      mil gracias

      Eliminar
  12. Lo siento pero por mas que ejecuto el centerim no me genera los archivos de configuracion.

    ResponderEliminar
  13. Buenas Juan mol, gracias por este magnífico blog. Mi problema es el siguiente, quisiera que cuando se descargara un torrent me mande un hang, vamos como Franastor, pero al hacer la prueba con:

    echo "Prueba" | centerim -s msg -p jab -t loquesea@gmail.com

    Me sale:

    mensaje a [jab] f.javi.fm@gmail.com ha sido colocado en cola

    y no me lo envía, ¿Por qué podría ser?


    ResponderEliminar
    Respuestas
    1. la verdad es que no sabría decirte. He configurado desde 0 el centerim en otro Raspberry recién instalado y me funciona perfecto, con estas mismas instrucciones. Mira los logs a ver si nos da una idea del fallo.

      Eliminar
    2. Me pasa exactamente igual. Ahí me he quedado atascado :S
      Y en los logs no aparece nada

      Eliminar
    3. Es curioso, yo ayer lo hice desde cero, y al principio me salió ese error, hice un apt-get update y ahora cuando ejecuto el código me vuelve a salir: event sending error: error creating directory for the contact

      Eliminar
    4. Hola, a mi me pasaba lo mismo y lo solucione de esta forma.

      Probar a mandar un hangout desde vuestra cuenta normal hasta la que tenéis en el Raspberry utilizando gmail o google+ .
      Después ejecutar centerim en la consola del Rasp. Si habéis configurado bien centerim y se conecta al servidor, os aparecerá el contacto que os manda el mensaje a la izquierda.
      Sin entrar a ver el chat, pulsar la tecla "?" o F2 -> User's Details. Ahí aparece un alias del tipo XXXXXXXXXXXXXXXXX@public.talk.google.com. Probar a mandar un mensaje a esa dirección.

      Eliminar
  14. hola tengo una duda el archivo /root/.centerim/external , no se me crea hago un find de ese de archivo y nunca lo encuentra D:, alguna idea?, ya inicie el programa y se crearon un par de archivos config entre otros, gracias de antemano :D

    ResponderEliminar
  15. Ese es un archivo que tienes que crear tú. Sudo nano /root/.centerim/external

    ResponderEliminar
  16. Se puede mandar imagenes desde centerim? serial un punto...

    ResponderEliminar
    Respuestas
    1. gracias por contestar :) es una pena seria ya la caña pero bueno esperaremos :)

      Eliminar
  17. Muchas gracias por el blog. Este tema de centerim me pareció muy interesante cuando lo leí antes de vacaciones y ya lo tengo funcionando aunque pendiente de pulir pero por ejemplo para que el minidlna haga un force-reload desde el móvil o la tablet me va muy bien.
    He visto otra utilidad distinta a screen que seguramente ya la conocerás pero por si acaso la pongo por aquí: es "Tmux", la verdad que está muy bien también. La pega que le veo de momento es que consume más recursos o eso me ha parecido a mí. Por si alguien quiere mirar algo más hay un tutorial disponible aquí http://it-ebooks.info/book/2709/

    Saludos,

    Chus

    ResponderEliminar
  18. Ante todo agradecer el post. Me ha ayudado mucho.

    Veo que el tema de el uso de screen para ejecutar en segundo plano es bastante común... He probado, tal y como describes, a agregar la línea "screen -dmS centerim /usr/bin/centerim"
    en "/etc/rc.local" pero, cada vez que reinicio la rpi no me arranca el servicio y tengo que hacerlo manualmente.

    ¿Algún consejo?

    Gracias!

    ResponderEliminar
    Respuestas
    1. prueba con:
      sudo screen -dmS centerim /usr/bin/centerim

      o bien con:
      screen -dmS centerim sudo /usr/bin/centerim

      a ver si hay suerte.

      Eliminar
    2. gracias, he probado con el primer SUDO y me funciona correctamente. gracias.

      Eliminar
  19. Correcto! Me ha funcionado con: sudo screen -dmS centerim /usr/bin/centerim

    Hago un aporte al archivo /root/.centerim/external

    msg=`cat`
    msg=`echo "$msg" | tr '[:upper:]' '[:lower:]'`

    Con esto pasamos el mensaje a minúsculas para luego hacer las comparaciones. El Hangouts desde movil siempre empieza escribiendo en mayúsculas!

    ResponderEliminar
    Respuestas
    1. Perfecto, lo que estaba buscando! (pongo un aporte mio mas abajo)

      Eliminar
  20. Hola tengo un problema, si yo ejecuto centerim desde la terminal y mando espacio me funciona todo, mi problema reside en que en segundo plano no me funciona y tengo añadido la linea sudo screen -dmS centerim /usr/bin/centerim en el archivo rc.local pero no me funciona.

    Porque puede ser?


    graciass

    ResponderEliminar
    Respuestas
    1. me lo comentan mucho y la verdad es que tiene perdido, mira primero en los logs a ver si hay algo raro. Algo tengo que hacer yo, que se me pasa explicar.
      Prueba tambien una tonteria, cuando estes como root, ejecuta passwd, ponle una clave a root (que puede ser la misma de ahora) y reinicia a ver si hay suerte.

      Eliminar
    2. Puedes hacer algo como esto:

      1.- Crear en /etc/ini.d/ un fichero centerim, similar a este:
      https://gist.github.com/vrdominguez/7219379

      2.- Dale permisos de ejecución:
      chmod +x /etc/init.d/centerim

      3.- Ejecuta el comando:
      update-rc.d centerim defaults

      La próxima vez que reinicies tu raspberry ya debería de estar funcionando el centerim

      Eliminar
    3. Buenas tardes, creo haber encontrado la respuesta :) (op por lo menos en mi caso en particular)

      En mi caso, ejecutándolo normalmente funciona a las mil maravillas, ahora bien, cuando lo añado al fichero /etc/rc.local no se me ejecuta, porque?

      La respuesta es facil, en mi caso, realmente si se ejecuta, pero con una peculiaridad, si haces:

      sudo screen -x centerim

      podras ver que ocurre. En mi caso, me aparecia el asistente del comienzo. pues bien, esto es se soluciona indicando al centerim que tiene que escoger al directorio de /root/.centerim.

      En el /etc/rc.local hay que añadir una opcion al centerim:

      screen -dmS centerim /usr/bin/centerim -b /root/.centerim

      Si te fijas, tienes que tener una carpeta llamada .centerim en la raiz del disco. Eliminar sudo rm -rf /.centerim para eliminar esta carpeta y no tenerla donde no debe.

      Ahora el centerim coge de forma predeterminada la ruta /root/.centerim.

      ;)

      Eliminar
    4. Ahora que lo he leido, esto de ir escribiendo a ratos no es bueno para el que lo lea. Si hay alguna duda comentarmela y lo explico mejor. ;)

      Eliminar
  21. Mi aporte, meterle identificacion al contestador (y una clave para poder ejecutar comando aun estando sin identificar):

    https://gist.github.com/AlexandreGZ/7200970

    ResponderEliminar
  22. Hola

    Cuando le envio un mensaje al centerim (que se esta ejecutando con screen) me devuelve un mensaje con un contenido como este:

    1cmcr6o5k7x6x5ql7loddfon5e@public.talk.google.com

    solo eso
    ¿que puede estar pasando?

    ResponderEliminar
  23. al probar este comando.
    sudo echo "probando probando" | centerim -s msg -p jab -t xxxxxxx@gmail.com
    me sale:
    message to [jab] xxxxxxx@gmail.com has been put to the queue
    por favor me pueden ayudar.

    Gracias

    ResponderEliminar
  24. Fantastico post.
    Ayer estube trasteando con el centerim.
    Aunque tengo que ver mas profundamente como funciona, lo que no me quedo claro es como enviar un mensaje a un un usuario de google, poniendo el correo como aquí:
    echo "Evento a las: `date`: $contenido" | centerim -s msg -p jab -t CUENTA.DE.DESTINO@gmail.com
    No lo envía, se queda "offline", para enviar-lo y que centerim establezca una conversación, antes la tienes que tener activa o hacerla desde un terminal de teléfono o desde la web

    La segunda cosa que no se si se puede hacer, es enviar mensajes a grupos, en el Hangout tengo creado un grupo de dos personas, pero en el Centerim solo veo la opción de enviar un mensaje multiple

    Felicidades por el post y el blog

    ResponderEliminar
  25. Estupenda aportación, tiene mucho potencial esto, a mis favoritos el blog.

    Gracias por compartir el conocimiento.

    ResponderEliminar
  26. La verdad es que tu blog es realmente interesante. Esta entrada y la de motion me han ayudado un monton. Gracias!

    ResponderEliminar
  27. Hola!

    Muy interesante tu blog Juan, intentaré hacer todos los proyectos posibles que has publicado... :D

    Acabo de conseguir este tuto y quería comentar una cosa: A los que teneis problemas porque centerim no os arranque al principio al ponerlo en el rc.local... comprobad que la orden que pongáis lo hacéis ANTES del exit (0), yo lo tenía despues y obviamente, el script no llega más allá del exit.

    Y otra cosa importante! esta mañana iniciando sesión con centerim y mi dirección personal para probarla, no se como, me ha modificado la mayoría de contactos de google, dejandolos a la mayoría con la dirección de correo y no el nombre. Para solucionar esto, entrad en vuestro gmail, cambiais arriba a la izquierda a Contactos, y desde el menú "Más", pulsais sobre Restablecer contactos, Google hace copia del estado de los contactos durante 30 días (me ha salvado, la verdad ;))

    Gracias por estos tutos, Juan!

    ResponderEliminar
    Respuestas
    1. pero no uséis vuestra cuenta principal para las pruebas!!! ;)

      Eliminar
  28. Hola Juan,
    tengo asterisk con spa3102, funcionando bien. me gustaría agregar la notificación del callerid con centerim, y que me llegue el mensaje del numero que entro la llamada. ya que por lo regular no estoy en casa.
    Creo que donde iria la linea para la notificacion es en:
    exten => s,1,NoOp(llamada analogica entrante del numero: ${CALLERID(num)})
    same => n,Dial(SIP/1002&SIP/Juanlu,${TIMEOUT},${opc})
    same => n,Goto(nulo,s,1)

    como seria Juan?
    gracias y felicidades por tu labor.

    ResponderEliminar
    Respuestas
    1. exten => s,1,NoOp(llamada analogica entrante del numero: ${CALLERID(num)})
      same => n,NoOP(${SHELL(echo "llamada recibida del ${CALLERID(num)}" | centerim -s msg -p jab -t CUENTA.DE.DESTINO@gmail.com)})
      same => n,Dial(SIP/1002&SIP/Juanlu,${TIMEOUT},${opc})
      same => n,Goto(nulo,s,1)

      o puedes afinar un poco más:
      exten => s,1,NoOp(llamada analogica entrante del numero: ${CALLERID(num)})
      same => n,Dial(SIP/1002&SIP/Juanlu,${TIMEOUT},${opc})
      same => n,ExecIf($[ "${DIALSTATUS}" = "NOANSWER" ]?NoOP(${SHELL(echo "llamada recibida del ${CALLERID(num)}" | centerim -s msg -p jab -t CUENTA.DE.DESTINO@gmail.com)}))
      same => n,Goto(nulo,s,1)

      Eliminar
    2. Gracias Juan,
      No salen los mensajes con la linea que agregamos, centerim con screen si esta funcionando correctamente ya que realize las pruebas por separado.
      donde podria detectar la falla?
      gracias nuevamente.

      Eliminar
    3. tendria que ver el log. Conectate a la consola de asterisk con:
      asterisk -r
      en la consola ejecuta:
      core set verbose 10
      y llama al spa, si hay algun fallo tiene que salir ahí, copia lo que ves y pegalo en pastebin, a ver que puede ser.

      Eliminar
    4. Juan, lo que arroja:

      http://pastebin.com/index/WtY60Kca

      saludos. gracias

      Eliminar
    5. queda claro que el error es "event sending error: error creating directory for the contact", que me da a mi que es básicamente el mismo error que le da al resto de la gente, no se esta ejecutando con el usuario adecuado o con el directorio correcto. Prueba estas cosas:

      exten => s,1,NoOp(llamada analogica entrante del numero: ${CALLERID(num)})
      same => n,NoOP(${SHELL(echo "prueba 1 llamada recibida del ${CALLERID(num)}" | centerim -s msg -p jab -t CUENTA.DE.DESTINO@gmail.com)})
      same => n,NoOP(${SHELL(echo "prueba 2 llamada recibida del ${CALLERID(num)}" | sudo centerim -s msg -p jab -t CUENTA.DE.DESTINO@gmail.com)})
      same => n,NoOP(${SHELL(sudo echo "prueba 3 llamada recibida del ${CALLERID(num)}" | centerim -s msg -p jab -t CUENTA.DE.DESTINO@gmail.com)})
      same => n,Dial(SIP/1002&SIP/Juanlu,${TIMEOUT},${opc})
      same => n,Goto(nulo,s,1)

      prueba eso primero, si sigue sin ir, dejalo tal cual y usa lo que +Fran Diaz dice un par de comentarios mas abajo, arranca el centerim con:
      screen -dmS centerim /usr/bin/centerim -b /root/.centerim
      y vuelve a probar. Si sigue sin ir, deja los cambios tal cual te lo he puesto y vuelve a mandar el el verbose.

      Eliminar
    6. hola Juan,

      aplique lo de +Fran Diaz y realizo la prueba, sequimos sin recibir mensajes, te dejo el verbose que me solicitas:

      http://pastebin.com/bnMvKSCg

      gracias

      Eliminar
    7. Buenas !!, no pude responder porque estuve de viajes :). Conseguiste solucionar el problema??

      Eliminar
    8. Hola Franz,
      logro que se ejecute con root desde el inicio. pero mi asterisk no logra mandarlo aun. :(
      gracias.

      Eliminar
  29. Buenos días!

    Tras seguir al pie de la letra tu mega manual y conseguir que funcione el envío de mensajes desde centerim y el contestador, se me plantea el siguiente error:

    Si pruebo "screen -dmS centerim /usr/bin/centerim" directamente en la consola, me arranca centerim y ya responde a los mensajes automáticamente, sin embargo, no me hace ni caso si le copio esa misma orden en el rc.local, es decir, si reinicio la rasp, tengo que escribir manualmente ese comando en la consola para que todo vuelva a funcionar...

    Copio el contenido de rc.local por si alguien me puede echar un cable:

    GNU nano 2.2.6 File: /etc/rc.local

    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.

    screen -dmS centerim /usr/bin/centerim
    echo "hola, bienvenido!"
    exit 0

    Por cierto, el "hola, bienvenido", lo ejecuta sin problemas.

    Gracias de antemano por la ayuda!

    Saludos.

    ResponderEliminar
    Respuestas
    1. Eso mismo me ocurrió a mi y lo expliqué un poco más arriba :). Te copio mi respuesta y espero que te ayude:

      Buenas tardes, creo haber encontrado la respuesta :) (op por lo menos en mi caso en particular)

      En mi caso, ejecutándolo normalmente funciona a las mil maravillas, ahora bien, cuando lo añado al fichero /etc/rc.local no se me ejecuta, porque?

      La respuesta es facil, en mi caso, realmente si se ejecuta, pero con una peculiaridad, si haces:

      sudo screen -x centerim

      podras ver que ocurre. En mi caso, me aparecia el asistente del comienzo. pues bien, esto es se soluciona indicando al centerim que tiene que escoger al directorio de /root/.centerim.

      En el /etc/rc.local hay que añadir una opcion al centerim:

      screen -dmS centerim /usr/bin/centerim -b /root/.centerim

      Si te fijas, tienes que tener una carpeta llamada .centerim en la raiz del disco. Eliminar sudo rm -rf /.centerim para eliminar esta carpeta y no tenerla donde no debe.

      Ahora el centerim coge de forma predeterminada la ruta /root/.centerim.

      ;)

      Eliminar
    2. Lo mismo me ocurrió en el otro post. Por motivos de trabajo no puedo contestar muy detalladamente pero la cuestión es que centeim se instala como root, lo cual creará la carpeta de configuración en esa ruta /root. Claro, cuando se ejecuta en el rc.local no se le indica la ruta de los ficheros de configuración y por eso me saltaba el asistente.

      Así que viendo el manual de centerim con la opción -b se le indica el directorio donde se encuentra los ficheros de configuración.

      Espero que te sirva y te solucione tu rpoblema.

      Un saludo de nuevo!

      Eliminar
    3. Ante todo, gracias por tu respuesta, Fran. Siento no haberme dado cuenta de que ya habías tratado este tema más arriba,

      Lamentablemente, he probado con la solución que me has propuesto y tras varios reboot, sigo sin ver la cuenta de hangout de mi rasp, online.

      La única forma que tengo de que funcione es arrancar una consola y ejecutar gráficamente centerim.

      En fin, seguiré buscando la solución y, cuando la encuentre, la postearé aquí.

      Gracias de nuevo!

      Eliminar
    4. Vamos a ir viendolo pasao a paso a ver que le puede ocurrir :).

      Haz una cosa, con la línea añadida en el /etc/rc.local para iniciar el centerim, cuando reinicies la raspberry, entra en consola y ejecuta sudo screen -x centerim

      Con esto, se muestra la pantalla "virutal" en la que se está ejecutando centerim. y vamos a comprobar si se ha ejecutado y espero que esté en la pantalla de configuración de las cuentas :)

      Haz esto y comenta lo que te ocurre.

      otra cosa, vamos a ver si tienes el directorio .centerim en la carpeta /root. para ello ejecuta este comando ls -la /root , con esto se nos mostrará los archivos ocultos.

      Ya me cuentas y tranquilo que esto lo solucionamos ;)

      Eliminar
    5. Con gente así, da gusto!. Gracias Fran :)

      He ejecutado sudo "screen -x centerim" y me aparece la ventana de CenterIM configuration, sin embargo, el usuario de hangouts sigue indicando "XXX no está en Hangouts ahora. Verá tus mensajes más tarde" y no responde a los mensajes.

      Al comprobar tu segundo consejo es cuando he descubierto el error. La carpeta .centerim no estaba en /root sino en /home/pi. He procedido con un sudo mv /home/pi.centerim /root/... reboot y... FUNCIONA!

      No sé cómo agradecértelo... MILLONES DE GRACIAS, Fran!!!!!

      Eliminar
    6. Para eso estamos y si podemos ayudar pues mejor que mejor :)

      Eliminar
  30. Hola a todos:
    Mi archivo de history crece de forma continua. Se encuentra en la carpeta ./centerim
    ¿Os pasa a vosotros también?
    Debo comentar que soy capaz de hacer que me responda las raspi pero no me manda ningún mensaje por línea de comando. ¿Será eso?

    ResponderEliminar
  31. Hola:

    No consigo que funcione el enviar mensajes desde comandos, ni como root ni como otro usuario. Sí que me funciona cuando desde otra cuenta le mando un mensaje, me responde según el script contestador. También si entro en centerim puedo mandar mensajes.

    En rc.local tengo puesto sudo screen -dmS center /usr/bin/centerim -b /root/.centerim/

    ¿Alguna sugerencia?

    Gracias, Rafa vidal

    ResponderEliminar
  32. Me auto-respondo, funciona. Debió ser problema de mi red. Gracias por el artículo.

    ResponderEliminar
  33. Una pregunta, ¿a alguien más le pasa que se quedan procesos zombie con cada chat que se le manda al gtalk?

    Gracias

    ResponderEliminar
  34. Hola:

    Por si alguien necesita mensajes con acentos, eñes, etc existe centerim-utf8 , el archivo config que yo uso es

    mailcheck
    screensocketpath /var/run/screen
    chatmode icq yahoo msn aim irc jab gg
    convert icq yahoo msn aim irc jab rss lj gg infocard
    fromcharset sp1250
    tocharset utf-8
    nobidi
    smtp localhost:25
    browser mozilla
    ptp 0-0
    protocolormode
    sort_by_status_and_activity
    left_panel_width 25
    log_panel_height 6
    chat_panel_height 5
    defaultauthmessage Please accept my authorization to add you to my contact list.

    jab_nick tu_nick
    jab_pass tu_password
    jab_server talk.google.com:5223
    jab_osinfo 1
    jab_prio 4
    jab_ssl 1
    jab_status o


    Un saludo

    ResponderEliminar
  35. He tenido bastantes problemas para hacer que me funcionase y además no me mola tener la aplicación en segundo plano siempre abierta. El uso que yo le doy es mandar hangouts desde un script. Finalmente he optado por usar la librería XMPP desde Python. Dejo el enlace por si a alguien le es de utilidad: http://www.administracion-linux.com/2014/07/enviar-mensajes-por-hangout-desde.html

    ResponderEliminar
  36. estimado, como puedo hacer una video llamada desde la rapberry hacia hangout de gmail. Saludos

    ResponderEliminar
    Respuestas
    1. No se puede :( para la voz y video Google tomó la malísima decisión de abandonar xmpp jingle y jabber. Antes si se podía, registrando el canal con Asterisk.

      Eliminar
  37. Excelente!!! tiene algunos puntos que confunden, pero ya quedo ok para controlar las luces de mi casa...

    Gracias!

    ResponderEliminar