martes, 9 de octubre de 2012

Uso de WhatsApp para el envio de notificaciones

"... se bueeeno"

Ya tenemos notificaciones por email, Gtalk, llamadas con Asterisk ... ahora vamos a hacer que nuestro querido RaspberryPi tenga la capacidad de enviar mensajitos por Whatsapp, seguro que a más de uno le resulta interesante. Además, como no quiero perder el Whatsapp de mi móvil, voy a explicar como usar el número de FonYou. Veamos cuales son los pasos.

Lo primero es registrarnos en FonYou y conseguir un número extra. Si no lo tienes ya, pásate por su web.
Ahora tenemos que registrar ese número en WhatsApp, esto nos llevará un rato. Para ello vamos a necesitar Windows, lo siento, ya que tenemos que hacer uso de un programa llamado BlueStacks, que no es más que un gestor de la máquina virtual del emulador de Android ... que también necesitas. Vamos por partes:
  • Descargar e instalar el SDK de Android. Lo hacemos desde la web oficial, no tiene dificultad, se instala como cualquier programa de windows (siguiente, siguiente, siguiente ...). Cuando lo tengamos instalado, no hace falta ni ejecutarlo.
  • Descargar e instalar BlueStacks, desde su web oficial. Tampoco es complicado (siguiente, siguiente, siguiente ...). Como pequeña particularidad, una vez que acaba la instalación, se arranca sólo, lo dejamos abierto y continuamos.
  • Desde BlueStacks buscamos dos aplicaciones: WhatsApp y una que se llama "System info", las instalamos.
  • Abrimos el WhatsApp de BlueStacks y nos preguntará qué móvil queremos registrar, ponemos el número de FonYou.
  • Toca esperar 5 minutos, teóricamente envían un sms de confirmación, pero hay algunos problemillas con FonYou. Esperamos hasta que nos salga el siguiente mensaje:
  • Le damos entonces a "Llámame" y WhatsApp te llamará a tu número Fonyou, acuérdate antes de configurar tu cuenta de Fonyou. Una locución nos dirá nuestro código de activación, lo ponemos en el sitio indicado.
  • ¡PERFECTO! ya solo queda poner un nombre y darle a siguiente.
  • Desde este momento ya tenemos un cliente de Whatsapp para Windows, pero lo más interesante es que ya tenemos el número de FonYou registrado en Whastapp.
  • Ahora en Bluestacks, abrimos la otra aplicación que descargamos antes.
  • Es una app que nos da información de nuestro sistema Android (virtual), números de serie, estado de memoria ... y lo que en realidad andamos buscando: el IMEI.
  • Cómo todos los días hay que aprender algo nuevo, te comentaré que el IMEI, en caso de los Androids, se usa para la clave de la cuenta de WhatsApp ¿clave Whatsapp? Pues si. Se usa el hash MD5, y creo que además se le daba la vuelta ... no me acuerdo.
Desde este momento podemos desinstalar el BlueStacks, el SDK de Android y pegarle fuego al Windows. Ya tenemos lo que andábamos buscando: número, registro y clave. Ahora vamos a usar una Api de Whatsapp que se llama: Whatsapi. Si no sabes usar git, simplemente dale al botoncito que pone ZIP y te lo descargas.
Copiamos el ZIP a nuestro RaspberryPi, por ejemplo a /usr/src y desde el RaspberryPi:
root@raspberrypi:~# cd /usr/src
root@raspberrypi:/usr/src# unzip venomous0x-WhatsAPI-c2b9e19.zip
root@raspberrypi:/usr/src# cd venomous0x-WhatsAPI-c2b9e19/src/php/
Vienen algunos ejemplos, que para el que tenga conocimientos de PHP, seguro que le son muy útiles, a mi me interesa el archivo: testprotocol.php . Lo editamos y lo dejamos así:
Connect();
$w->Login();
$w->Message(time() . "-1", "34destino", "mensaje");
?>
¡¡PON TUS DATOS!! el que pone 34666777888 es tu número FonYou con el 34 delante. El número 12345678901234 es el IMEI que vimos en BlueStacks. Donde pone 34destino y mensaje, lo dejamos así, ahora veréis porque. Voy a hacer un script supersimple, /usr/local/bin/envia_whatsapp.sh:
#!/bin/bash
# programado por Juanmol para http://rsppi.blogspot.com
ruta=/usr/src/venomous0x-WhatsAPI-c2b9e19/src/php
cat $ruta/testprotocol.php | sed "s/destino/$1/g" | sed "s/mensaje/$2/g" > $ruta/elphp.php
php $ruta/elphp.php
rm $ruta/elphp.php
permisos:
chmod +x /usr/local/bin/envia_whatsapp.sh
y ahora vamos a probarlo:
envia_whatsapp.sh 600700800 "prueba desde RSPPI"
y en WhatsApp del 600700800 veremos algo así como:

¡¡¡SI SEÑOR!!! Ahora configuramos el Nagios, la domótica, los torrents o lo que nos de la gana y tendremos un sistema de notificaciones que será la envidia el barrio. Este post ... es la leche!
ACTUALIZACIÓN:
pásate por este post

ACTUALIZACIÓN 07-12-2012:
por lo visto han cambiado un poco la API, veamos:
cd /usr/src
wget wget https://github.com/venomous0x/WhatsAPI/archive/master.zip
unzip master.zip
cd WhatsAPI-master/src/php/
el archivo testprotocol lo dejamos más o menos así:
el copipaste me esta traicionando, tenéis el código aquí.
como ya sabeis 666777888 lo cambiais por vuestro número de FonYou y 000111222333444 es el IMEI que hemos conseguido con BlueStacks. Y el script revisado /usr/local/bin/envia_whatsapp.sh lo teneis en este otro post.

ACTUALIZACIÓN 11-12-2012:
Sigo sin entender por qué no os funciona, pero bueno, por si se ha colado algún carácter raro, o no se a copiado bien, aquí tenéis los archivos involucrados, tenéis que dejarlos tal y como yo los pongo, solo hay que cambiar los números de teléfono y el IMEI:
/usr/local/bin/envia_whatsapp.sh -> aqui
/usr/src/WhatsAPI-master/src/php/testprotocol.php -> aqui
ya esta, esos dos son, a ver si se había colado algo que no debía, ya me contareis.

ACTUALIZACIÓN 27-12-2012:
incomprensiblemente, hay gente a la que no le funciona y gente que si. A mi me funciona, no entiendo donde puede estar el problema. El caso es que hasta que no saquen una versión más estable de la API o los de Whatsapp se animen y saquen la suya, no voy a actualizar más esta parte. Así que os recomiendo usar las notificaciones vía GTalk, como muy bien explico en este post. O bien esperáis a que termine las pruebas con Line ;)

119 comentarios:

  1. Uala!!! Realmente es la leche!!!
    Lo encuentro una pasada... Con que nos sorprenderas luego. Notificaciones por señales de humo? Geolocalización y monitorización por Google maps?

    ResponderEliminar
  2. La verdad es que este blog al completo es la leche!
    Otro que te sigue desde los comienzos
    Un saludo

    ResponderEliminar
  3. Muy buen Blog, mis felicitaciones por lo que haces y compartir tus conocimientos.
    Estoy ansioso en la espera de mi RaSPberry PI.
    Saludos

    ResponderEliminar
  4. Yo estoy aun esperando la mia... Leva un retraso de mas de 9 semanas... La pedí a finales de julio y me llega sobre el 15 del mes que viene.... Me desespera!

    Por suerte al ver este blog voy haciendo las pruebas en virtual como se recomienda. Realmente genial y lo sigo desde el principio.

    ResponderEliminar
  5. Hola FELICIDADES por tu web es una gran aporte a este raspberry
    he seguido el tutorial al pie del cañon y cuando he ejecutado el script me decia que php no lo reconocia como comando...
    asi que he instalado php5-cli y he modificado el script para que sea php5 $ruta/elphp.php
    y me dice todo esto... (¡¡¡eso si ha llegado el whatsapp aunque se queda la consola sin movimiento alguno con lo siguiente)
    root@raspberrypi:/usr/local/bin# envia_whatsapp.sh 643234516 "prueba de raspberry"
    PHP Warning: fopen(tests/thumb.jpgb64): failed to open stream: No such file or directory in /usr/src/venom/src/php/elphp.php on line 20
    PHP Warning: filesize(): stat failed for tests/thumb.jpgb64 in /usr/src/venom/src/php/elphp.php on line 21
    PHP Warning: fread() expects parameter 1 to be resource, boolean given in /usr/src/venom/src/php/elphp.php on line 21
    PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /usr/src/venom/src/php/elphp.php on line 22

    que puedo hacer??

    ResponderEliminar
    Respuestas
    1. nada olvidate de lo dicho anteriormente ya he encontrado el fallo culpa mia se me olvidó eliminar ciertas lineas que venian en el fichero de test al final, pero con la modificacion de php5 va todo bien y perfecto.

      estoy ansioso por ver tus nuevos post, por cierto estaria de muerte ver un freenas corriendo en estos bichitos!!!

      Eliminar
  6. Felicidades, me encanta tu blog y con este post se me han puesto los ojos como lunas!!! Solo tengo un problema, no tengo mucha técnica con scripts como el que has creado. Si tienes tiempo podrías explicar en un post como por ejemplo unir esto con las descargas de transmission. Un saludo y felicidades de nuevo!

    ResponderEliminar
    Respuestas
    1. Hola Adri, estuve haciendo pruebas con el transmission-daemon y precisamente la version que tengo, tiene un bug en la parte de la ejecucion del script post-descarga. Cuando lo solucione pondré un post con el script.

      Eliminar
    2. Ok, muchas gracias!! Eres un crack. Añado otra cosa como sugerencia/petición, estoy súper interesado en instalar un hdd externo que tengo (con alimentación propia) al rsppi para almacenar todas las descargas y usarlo como Nas pero no tengo ni idea del manejo de HDDs. Si te parece interesante el tema y te apetece estaría genial un post explicando como hacerlo. Un saludo y gracias de nuevo!!

      Eliminar
  7. He seguido los pasos al pie de la letra, pero cuando voy a hacer la prueba el rpi me devuelve este error:

    cat: /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/testprotocol.php/usr/local/bin/envia_whatsapp.sh: línea 3: /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/elphp.php: No existe el fichero o el directorio
    : No existe el fichero o el directorio
    Could not open input file: /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/elphp.php
    rm: no se puede borrar «/usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/elphp.php»: No existe el fichero o el directorio

    ResponderEliminar
    Respuestas
    1. Hola Francisco, parece que tienes un poco de lio con las rutas. El script envia_whatsapp.sh va en el directorio /usr/local/bin y segun comentas lo tienes en /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/testprotocol.php/usr/local/bin/ revisa eso y asegurate que cuando usas la variable $ruta no le pones un / delante ;)

      Eliminar
    2. Hola Juanmol, tengo el script envia_whatsapp.sh en la ruta /usr/local/bin y el contenido del script es el siguiente:

      #!/bin/bash
      # programado por Juanmol para http://rsppi.blogspot.com
      ruta=/usr/src/venomous0x-WhatsAPI-c2b9e19/src/php
      cat $ruta/testprotocol.php | sed "s/destino/$1/g" | sed "s/mensaje/$2/g" > $ruta/elphp.php
      php $ruta/elphp.php
      rm $ruta/elphp.php

      y al ejecutar la orden envia_whatsapp.sh 666123123 "mensaje" me devuelve esto:

      /usr/local/bin/envia_whatsapp.sh: línea 3: /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/elphp.php: No existe el fichero o el directorio
      cat: /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/testprotocol.php: No existe el fichero o el directorio
      Could not open input file: /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/elphp.php
      rm: no se puede borrar «/usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/elphp.php»: No existe el fichero o el directorio

      Eliminar
    3. o_O y si haces un ls -l /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php/testprotocol.php te dice que el archivo existe?

      Eliminar
    4. Ya me funciona, tenías razón y estaba mal la ruta,

      mi ruta es /usr/src/venomous0x-WhatsAPI-97b1900/src/php

      También me he dado cuenta de que en el script envia_whatsapp.sh que has puesto, en la línea 3 sobra la última /, ya que al hacer el cat de testprotocol.php daría error

      cat /usr/src/venomous0x-WhatsAPI-c2b9e19/src/php//testprotocol.php

      Eliminar
    5. ciertamente, dependiendo de las variables de entorno, una doble / puede dar problemas, como seguro que no da es dejando solo una. Gracias por la observación.

      Eliminar
  8. Magnífico aporte. He estado trasteando y ya lo he configurado para que me mande un whatsapp cuando acabe una descarga de torrent.

    ResponderEliminar
  9. Buenas, primero agradecerte tu aportación y enhorabuena por tu blog.

    Yo quiero usar el script directamente desde mi server php pero cuando lo ejecuto me da el siguiente error:
    Fatal error: Call to undefined function getopt() in C:\AppServ\www\venomous0x-WhatsAPI-97b1900\src\php\testprotocol.php on line 3

    A ver si puedes echarme un cable. Muchas gracias y saludos !!

    ResponderEliminar
    Respuestas
    1. Hola, eso de c:\appserv ... me marea un poco ¿no sera windows verdad? ahí me temo que poco te voy a poder ayudar, lo siento.

      Eliminar
    2. Hola Juanmol, gracias de antemano.

      He seguido los mismos pasos que indicas pero solo centrandome en la parte del php.

      Mira, me web server es linux y me canta esto:

      Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /web/htdocs/www.magnetik.cc/home/wapp/src/php/testprotocol.php on line 4

      Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /web/htdocs/www.magnetik.cc/home/wapp/src/php/testprotocol.php on line 4

      Fatal error: Call to undefined function socket_create() in /web/htdocs/www.magnetik.cc/home/wapp/src/php/whatsprot.class.php on line 232

      ;) Gracias otra vez !!

      Eliminar
  10. Lo que me gustaría conseguir es un script en php que envíe notificaciones a whatsapp no importando la plataforma.

    Saludos

    ResponderEliminar
    Respuestas
    1. en la misma descarga de la Api de Whatsapp, viene un ejemplo para tener incluso el whatsapp en modo chat via PHP. Si tienes conocimientos en PHP (seguro que más que los mios), no te costará ponerlo en marcha.

      Eliminar
  11. Gracias!!!, ya me llegan los WAPP, voy a tunear el script.

    Saludos !!!!

    ResponderEliminar
  12. Hola de nuevo Juanmol, como ya te dije gracias por tu ayuda, ya me rula el script de alerta tal y como quiero.

    Ahora me ha surjido otro problema que no soy capaz de resolver, he mirado la documentación del API pero no soy capaz de solucionarlo.

    Quiero mandar esa alerta a cuantos número desee pero solo soy capaz de mandarla a dos números.

    Sabrías guiarme en este laberinto?

    Gracias !!

    ResponderEliminar
    Respuestas
    1. creo que segun esta montada la api, solo puedes enviar de 1 en 1. Tendras que currarte un script o algo por el estilo para un envio masivo.

      Eliminar
  13. Increible este blog, estoy empezando con esto de Raspberry-PI y hasta que me llegue estoy mordiendome las uñas viendo todo lo que se puede hacer, una pequeña duda respecto a este tutorial, ¿porqué necesitamso un segundo número con fonyou?, ¿es posible usar mi número normal de movil para configurar whatsApp? ¿afecta en algo al funcionamiento normal de whatsapp en mi movil?

    ResponderEliminar
    Respuestas
    1. ¡Gracias! he probado usar mi numero en el whatsapp del android y con la api, funciona pero no va muy bien, puede que si te mandan uno, te llegue al pc y no al movil. Ademas puede que los del whatsapp tr bloqueen la cuenta por seguridad.

      Eliminar
  14. que cliente torrent usas en el raspberry? como hacer para que mande notificaciones por whatsapp? y como lo haces con la domotica?? flipo

    ResponderEliminar
    Respuestas
    1. cliente: transmission-daemon
      para que mande notificaciones: http://rsppi.blogspot.com.es/2012/11/torrents-solucionado.html (en la actualización)
      y con la domótica ... no hago nada esto. Aunque pensándolo bien ...

      Eliminar
  15. Me parece super iteresante este blog!!!! Que ganas de ponerme a ello tengo!!!!
    Saludos y felicitaciones!!!!

    ResponderEliminar
  16. Creo que la API de WhatsApp esa ha cambiado y la han modificado, porque no encuentro las líneas que dices para poner el IMEI ni el teléfono. Mira pongo unas capturas a ver si las puedes echar un vistazo:

    testprotocol.php:
    http://img9.imageshack.us/img9/3677/testprotocol.jpg

    Al principio del PHP dice algo de un whatsprot.class.php, esta es la captura de ese archivo que se encuentra en la misma carpeta:
    http://img72.imageshack.us/img72/1237/whatsprot.jpg

    ¿Nos orientas un poco Juanmol?

    Muchas gracias =)

    ResponderEliminar
  17. Otra cosilla... ¿hace falta tener un servidor PHP instalado en la Raspi para ejecutar tu script?

    ResponderEliminar
    Respuestas
    1. hace falta tener el "cliente" php, que en realidad no es cliente, es un intérprete de órdenes.
      @JuAnMa me comenta lo mismo, han cambiado la api, pero no creo que sea muy difícil localizar los cambios y rehacer el script, cuando tenga un rato me pongo.

      Eliminar
    2. ¿Me podrías decir cómo se llama el cliente PHP que tenéis instalado en la raspi?

      Eliminar
    3. el intérprete de órdenes para php que tengo en el Raspberry, es php ;)
      apt-get install php
      o bien
      apt-get install php5

      Eliminar
    4. Vale, como instalé Apache+MySql+PHP5+PhpMyAdmin para hacer pruebas en un "servidor barato", ya lo tengo instalado sin darme cuenta. Gracias :P

      Por cierto, estoy ansioso por aprender cómo configurar la nueva API de WhatsApp. Sin duda es una de las cosas con las que más se puede "fardar" con los amigotes, jaja. A la espera de una mini-actualización del post =D

      Eliminar
  18. Se sabe ya donde colocar el numero de destino y el imei en la nueva api. Estoy a un paso de conseguirlo!!!

    ResponderEliminar
  19. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  20. Si nadie ha dado como hacerlo, juanmol podrías poner la api anterior para descargarla

    saludos

    ResponderEliminar
  21. post actualizado, probado y comprobado ;)

    ResponderEliminar
  22. lo he hecho actualizado manso el sudo envia_whatsapp.sh... no da error pero no llega el el mensaje al mobil, he probado poniendole 34 delante tambien y nada

    ResponderEliminar
    Respuestas
    1. a mi tampoco me están llegando ahora, tiene pinta de que Whatsapp intenta bloquear la api, a ver si la vuelven a actualizar.

      Eliminar
    2. bueno ... he vuelto a probar con 3 mensajes seguidos y me han llegado los 3

      Eliminar
  23. ok, juanmol, crea un foro jejej. De momento esto es a lo más que he llegado pero tengo muchisimas dudas y sugerencias como:

    Sugerencia:
    Tengo motion con una camara web vieja y fotografia lo que detecta, supongo que no seria dificil tambien que te mandara un whatsapp (cuando funcione) a la vez y encender algo atraves de x10

    Dudas:
    como hacer que cargue de inicio cosas, como el servidor vnc, o motion, o incluso whatsapp cuando se activan circuitos x10
    tampoco me rula el vpn no se conecta.

    esto de ser novato en linux cuesta

    gracias de todas formas juanmol

    ResponderEliminar
  24. lo he modificado probando el envio progresivo y ahora me da este error
    wc: invalid option -- '1'
    Try `wc --help' for more information.
    /usr/local/bin/envia_whatsapp.sh: line 7: [: -gt: unary operator expected

    porque?????


    ResponderEliminar
    Respuestas
    1. o_O es " wc -l" lease como "uve doble ce espacio guion ele minuscula.

      Eliminar
  25. ahora llego a esto:
    movil: 6*******
    mensaje: hola caracola
    mensaje 1 encolado
    pero no llega
    me voy acercando

    ResponderEliminar
  26. si se manda con la opcion modificada de prograsivos hay que mandarlos con el script encola... verdad? no con el envia_...? con encola_whatsapp.sh no me da error pero no llegan

    si lo mando con el envia_whatsapp.sh en el progresivo me sigue diciendo:
    wc: invalid option -- '1'
    Try `wc --help' for more information.
    /usr/local/bin/envia_whatsapp.sh: line 7: [: -gt: unary operator expected

    si unso la forma no progresiva no me da ningun error pero no llega tampoco


    ResponderEliminar
  27. C**o en to lo que se menea.

    2 dias intentandolo y nada!!!!!!!!!!

    arrrrgggghhhh

    ResponderEliminar
  28. Ahora estoy aqui:
    "el mensaje no se ha enviado, se reencola
    root@raspberrypi:/home/pi# movil: 3466666666
    mensaje: "poooh"
    mensaje 27 encolado"

    ResponderEliminar
  29. en uno de los intento me ha dado este error:

    PHP Notice: Undefined property: WhatsProt::$challengeData in /usr/src/WhatsAPI-master/src/php/whatsprot.class.php on line 84
    PHP Notice: Undefined property: WhatsProt::$challengeData in /usr/src/WhatsAPI-master/src/php/whatsprot.class.php on line 87
    el mensaje no se ha enviado, se reencola
    root@raspberrypi:/home/pi# movil:

    ResponderEliminar
  30. Una pregunta. El testprotocol.php lo borramos entero y sólamente dejamos esas 3 líneas, o añadimos esas 3 líneas a lo que ya viene escrito?

    A ver si no me funciona por eso, que lo he borrado entero xD

    ResponderEliminar
    Respuestas
    1. el testprotocol hay que dejarlo asi http://pastebin.com/Qci8pt5s

      Eliminar
  31. Por cierto, me acabo de enterar que si logueas con "root" en vez de con "pi" entras como administrador y no hace falta usar "sudo" todo el tiempo. Estaba hasta los 'webos' de 'sudar'. (dios que malo... xD)

    Con todo esto he descubierto que hay más mundo fuera de 'güindous' y que soy un completo ignorante en informática. Juanmol, me debes 30 años de falsas creencias T_T

    ResponderEliminar
    Respuestas
    1. no hombre, son 30 años que te van a ayudar a apreciar aun más todo esto ;)

      Eliminar
    2. Me rindo, ya no se que puedo hacer, he instalado el raspbian de nuevo, he seguido todos los pasos milimetricamente, he probado con el numero y imei del mobil...


      has conseguido que funcione Yllelder??

      juanmol no podrias subir la imagen de tu raspbian para instalarla directamente nosotros con todo funcionando? jeje

      saludos

      Eliminar
    3. rendirse no es una opcion.
      A ver a ver que podemos hacer ... ummm ... podrias probar con otro programa que tambien envie whatsapps, no vaya a ser que te haya fallado la parte del imei o algo asi. El programita que probé en su momento es ThatsaPC, requiere los mismos campos que pide la whatsapi (supongo que hasta la usa). Si el ThatsaPC tampoco te funciona, ya sabemos que no es fallo de tu Raspberry ¿no? Ya me contaras.

      Eliminar
  32. no conocia tampoco el thatsapc, lo he probado y no me funciona, da error de runtime y no lo consiguo solucionar pero el numero fonyou si me funciona en la tablet android, ademas tambien probé con el de mi mobil y tampoco iba

    ResponderEliminar
  33. Bueno, me he dejado whatsapp y me he instalado twidge con una cuenta a la que sigo y activo las notificaciones, con eso me llegan avisos, ahora a configurar motion y demás, si puedo

    ResponderEliminar
    Respuestas
    1. a ver si saco un rato y hago un tar.gz con los archivos que yo tengo que funcionan.

      Eliminar
  34. Hola a tod@s,

    Ante todo agradecer este blog y todas las ideas que aporta. Al menos en mi caso, todo me atrae y fascina.

    Esto probando a instalar el Whatsapp en mi Raspberry Pi pero no lo consigo. El Whatsapp desde el Bluestacks me funciona correctamente, envío y recibo.

    Pero desde el Raspberry me pone el siguiente error:

    PHP Warning: socket_read(): unable to read from socket [107]: Transport endpoint is not connected in /usr/src/Whatsapp/src/php/whatsprot.class.php on line 125

    PHP Warning: socket_send(): unable to write to socket [32]: Broken pipe in /usr/src/Whatsapp/src/php/whatsprot.class.php on line 113


    He revisado las líneas y no veo nada raro. ¿alguna idea?

    ResponderEliminar
    Respuestas
    1. Hola, como solucionaste este error?¿¿??¿ me encuentro en ese punto y no salgo.

      Eliminar
  35. Hola de nuevo,

    Solucionado el problema anterior, pero ahora me indica que el password es erróneo. Partiendo del IMEI de un Android, cuál es la formula para conseguir el password.

    numero=mi IMEI
    echo -n $numero | rev | md5sum

    pero no funciona y tampoco

    echo -n $numero | md5sum
    echo -n $numero | md5sum | rev

    ResponderEliminar
    Respuestas
    1. la verdad es que no lo se, era algo como lo que estas poniendo, pero no me acuerdo. Usa mejor la solucion de BlueStaks ¿no?

      Eliminar
  36. Nada sigue sin funcionar hace como que se envía pero no se recibe nada en el móvil. Podrías hacer un videotutorial si puedes :D

    ResponderEliminar
  37. Como no nos funciona a muchos os pongo mis alternativas para notificaciones:

    Twitter desde terminal:
    http://www.howtogeek.com/62018/how-to-use-the-linux-terminal-to-update-twitter/

    sudo apt-get install twidge
    sudo twidge setup

    la direccion que sale se pega en el navegador con tu cuenta twitter y el codigo se pega como key en la ventana del terminal. ya esta

    mensaje directo = twidge -d dmsend cuentadestinosin@ "texto a mandar"

    mensaje normal = twidge update “......algo”

    Email: (si tiene push mejor claro)
    sudo apt-get install ssmpt
    sudo apt-get install mailutils

    sudo nano /etc/ssmtp/ssmtp.conf
    Agregar al final del fichero de configuracion anterior lo siguiente:
    AuthUser=tudirección@gmail.com
    AuthPass=tupassword
    FromLineOverride=YES
    mailhub=smtp.gmail.com:587
    UseSTARTTLS=YES

    enviar
    echo "texto que quieras" | mail -s "Asunto" usuario1@dominio.com

    ResponderEliminar
    Respuestas
    1. gracias! prometo robarte el comentario en un post muy próximo ;)

      Eliminar
    2. Hola he intentado instalar twidge, aparentemente sin problemas, al ejecutar twidge setup me pide Authorization key inserto mi usuario y pass en twitter, me da la Authorization key para esta aplicación, lo inserto en twidge y aparentemente todo va bien con el siguiente mensaje:
      Successfully authenticated!
      Twidge has now been configured for you and is ready to use

      Pero cuando intento enviar un mensaje recibo el siguiente:
      twidge: user error (Bad response: 403)

      ¿Sabes a que puede ser debido?

      Gracias

      Eliminar
    3. A mi me ha pasado alguna vez, pero no se porque. La aplicación no tiene más historia, supuestamente cuando haces la autentificacion ya lo tienes con tu usuario correctamente

      Eliminar
    4. mira disculpa instale el twidge como puedo aser que me envie twitte cuando descague algo ??? soy nuevo en esto?? ya que whatsapp no me funciono T-T

      Eliminar
    5. Estimados, eso es porque no lo estas siguiendo, o no te esta siguiendo, no recuerdo cual era el problema, pero se que es eso !! comprobado. !!

      Eliminar
  38. Buenas. Yo he conseguido hacerlo funcionar pero solo con el testprotocol.php que viene incluido en la API. En concreto, he llegado a la conclusión de que si edito ese archivo, tal como indicas, y elimino el contenido a partir de la línea "$pn = new ProcessNode($w,$target);", o si elimino el "while" deja de funcionar. En cambio si lo edito para que cojas las variables que pasamos desde los scripts funciona.
    Lo que sucede es que parece que se queda colgado recuperando mensajes y no envía más que el primero de la cola. ADemás, si compruebo en un movil el estado del whatsapp en la raspi, veo que esta En Línea.

    Adjunto fichero testprotocol.php funcionando (pero con el fallo de que se queda colgado):
    Connect();
    $w->Login();
    $w->Message($target, "mensaje");
    $pn = new ProcessNode($w,$target);
    $w->setNewMessageBind($pn);

    while(1)
    {
    $w->PollMessages();
    $msgs = $w->GetMessages();
    foreach ($msgs as $m)
    {
    # process inbound messages
    //print($m->NodeString("") . "\n");
    }
    }

    class ProcessNode{
    protected $_wp = false;
    protected $_target = false;
    function __construct($wp,$target)
    {
    $this->_wp = $wp;
    $this->_target = $target;
    }
    public function process($node)
    {
    # Example of process function, you have to guess a number (psss it's 5)
    # If you guess it right you get a gift
    $text = $node->getChild('body');
    $text = $text->_data;
    if($text && ($text == "5" || trim($text)=="5")){
    $this->_wp->Message($this->_target, "¡Congratulations you guessed the right number!");
    }else{
    $this->_wp->Message($this->_target, "¡I'm sorry, try again!");
    }
    }

    }
    ?>





    Y ahora me pregunto si a alguien le ha sucedido esto o alguien sabría indicarme donde está el error....

    Saludos y gracias.

    ResponderEliminar
  39. Pues tienes razón, funciona, pero solo llega uno y no más. Ya es un paso adelante, muchas gracias =)

    A ver si alguien descubre porqué no llega el resto.

    ResponderEliminar
  40. tengo una duda me quete en donde poner el imei ???? va en el -1? no soy muy bueno con scrip pero quisera saber como conectarlo con transmission para que me envie la notificacion a whatsapp si te apiadas de mi y suerte

    ResponderEliminar
  41. me tira el siguiente error ?

    /usr/local/bin/envia_whatsapp.sh: fork: No se pudo asignar memoria
    /usr/local/bin/envia_whatsapp.sh: línea 3: /tmp/enviawhatsapp.log: Permiso denegado
    /usr/local/bin/envia_whatsapp.sh: línea 5: /usr/src/WhatsAPI-master/src/php//elphp.php: Permiso denegado
    /usr/local/bin/envia_whatsapp.sh: fork: No se pudo asignar memoria
    /usr/local/bin/envia_whatsapp.sh: línea 9: [: -gt: se esperaba un operador unario
    parece que el mensaje se ha enviado
    rm: ¿borrar el fichero regular «/usr/src/WhatsAPI-master/src/php//elphp.php» protegido contra escritura? (s/n)
    y se vuelve a repetir aunque le de s o n

    ResponderEliminar
  42. jajaja complete con el otro post me asi falta unos scrip pero aun no lo envia pero ahora no me da erro solo el problema de permiso denegado pero con sudo su supuesta lo manda ???

    ResponderEliminar
  43. hola te ya prove y ya no me da error perno me llega el mensaje O.o porq no creas una carpeta ya con todos los arhvios modificado y por crear y solo los pegamos en los lugares donde van porq no se si la api esta mal pero no me funcionada ya no marco ningu error dice enviado y no llega

    ResponderEliminar
  44. Pues nada, yo no consigo hacerle funcionar por python, ni por php. Veo raro (haciendo var_dump($w) que una de las variables ponga "iPhone" ya que según tengo entendido en iphones requiere MAC en vez del imei... Yo que me había hecho ilusiones :(

    ResponderEliminar
    Respuestas
    1. Daniel, lo haces con PhoneYou y el programa arriba indicado? Espero que no pongas datos de tu telefono...

      En un comentario en otro post pongo el script que a mi SI me va bien. A ver si te es de ayuda...

      http://rsppi.blogspot.com.es/2012/12/asegura-tu-raspberrypi-del-ataque-de.html?showComment=1356736010186

      FELIZ 2013!

      Eliminar
    2. Algo me dice que soy de esos pocos a los que no le funciona...

      Rumoku uso los datos de fonyou en el php, y mi numero de telefono para enviar un mensaje de prueba.

      http://pastebin.com/R9xQQG1d

      Finalmente haciendo "cat elphp.php" veo que se han sustituido el destino y mensaje correctamente...

      Tengo php instalado, el phpinfo() funciona
      Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l

      Sigo aceptando ideas... xDDD

      Eliminar
  45. Buenas,

    No se si alguien ya lo a dicho antes, pero creo que es mucho mejor utilizar el yowsup (https://github.com/tgalal/yowsup). Yo he conseguido registrar el numero de Fonyou sin necesidad de instalar ni Bluestacks ni nada.
    Simplemente bajar el zip. Descomprimir.
    cd src

    Editar el config.Example.
    cc=34
    phone=34666777888 (tu numero Fon you)
    id= (vacio)
    password= (vacio)

    Registrar el numero con:
    python python yowsup-cli -c config.example --requestcode sms
    Recibiremos un codigo via sms en el numero Fonyou
    python yowsup-cli -c config.example --register CODIGO
    Recibimos el password via sms en Fonyou.
    Modificamos config.example e incluimos el password.

    Mandamos mensajes via: python yowsup-cli -c config.example -s 34666000000 "hola esto es una prueba"
    Y a mi me ha funcionado.




    ResponderEliminar
    Respuestas
    1. interesante ... gracias por la info.

      Eliminar
    2. Buenas,

      He comprobado que funciona tanto con un número no registrado (uno nuevo de FonYou) así como uno de una linea que en su dia registre en whatsapp en android y que ya no utilizaba. OJO me imagino q sí registras uno q utilizas en tu móvil, este va ha dejar de funcionar en el móvil.

      Este método ya utiliza la nueva validación de whatsapp via password que recibes al registrar y por eso no necesitas el IMEI/MAC.

      Eliminar
    3. Estoy formateando la Raspi para empezar todo de cero porque la había metido mucha "mierda" que no iba a volver a usar, y como no se desinstalar paquetes...

      A ver si acabo y pruebo ese método a ver si funciona de una vez :D

      Eliminar
    4. lo acabo de probar y es tan fácil como parece. No voy a ponerlo en el post, porque esta claro que whatsapp cambia más de métodos que de bragas y tristemente esto quedará obsoleto en un par de semanas, como pasó con métodos anteriores, con el mio, con la actualización ... en fin. Yo os propongo firmemente dejar a un lado whatsapp (para todo) y usar GTalk.

      Eliminar
    5. Genial y muchisimas gracias !!! me acaba de funcionar... he necesitado una librería : sudo apt-get install python-dateutil

      Y poco mas... aun así lo del register parece que te da otra vez el codigo de activacion tipico que ya deberia tener el movil... ¿puede servir esto para tener whatsapp gratis siempre? Me pone existing osea que creo que detecta que ya existia, pero de vuelve la clave... que raro xDDD
      Y tienes un error en el primer comando, que has puesto python dos veces! xD

      Eliminar
    6. FUNCIONA PERFECTAMENTE
      lo que ha comentado este anonimo
      No se si alguien ya lo a dicho antes, pero creo que es mucho mejor utilizar el yowsup (https://github.com/tgalal/yowsup). Yo he conseguido registrar el numero de Fonyou sin necesidad de instalar ni Bluestacks ni nada.
      Simplemente bajar el zip. Descomprimir.
      cd src

      Editar el config.Example.
      cc=34
      phone=34666777888 (tu numero Fon you)
      id= (vacio)
      password= (vacio)

      Registrar el numero con:
      python python yowsup-cli -c config.example --requestcode sms
      Recibiremos un codigo via sms en el numero Fonyou
      python yowsup-cli -c config.example --register CODIGO
      Recibimos el password via sms en Fonyou.
      Modificamos config.example e incluimos el password.

      Mandamos mensajes via: python yowsup-cli -c config.example -s 34666000000 "hola esto es una prueba"
      Y a mi me ha funcionado.

      Eliminar
    7. Hola cabgutpe
      he seguido todo tus pasos y no hay manera al ejecutar "python python yowsup-cli -c config.example --requestcode sms" me da el siguiente mensaje:
      status: fail
      reason: old_version

      he probado de bajar el fichero desde la direccion que pones :(https://github.com/tgalal/yowsup),
      con "git clone git://github.com/tgalal/yowsup.git"
      con " wget https://github.com/tgalal/yowsup/archive/master.zip"
      y nada, todos me dicen lo mismo old_version
      que puedo hacer???
      he probado el whatsAPI pero no me aclaro, hablan de un fichero testprotocol.php pero no esta en la carpeta src.
      No se que hacer, alguien purede ayudarme
      gracias

      Eliminar
  46. Todo ésto:
    --------------------------------------
    Registrar el numero con:
    python python yowsup-cli -c config.example --requestcode sms
    Recibiremos un codigo via sms en el numero Fonyou
    python yowsup-cli -c config.example --register CODIGO
    Recibimos el password via sms en Fonyou.
    Modificamos config.example e incluimos el password.

    Mandamos mensajes via: python yowsup-cli -c config.example -s 34666000000 "hola esto es una prueba"
    Y a mi me ha funcionado.
    -----------------------------------
    ¿dónde se hace?

    ResponderEliminar
    Respuestas
    1. en la consola a pelo, en el directorio donde tengas el ejecutable yowsup-cli

      Eliminar
  47. He descomprimido y no me sale ningún ejecutable. Perdona, pero no soy un experto.

    ResponderEliminar
    Respuestas
    1. perdonado, estamos para aprender. Cuando lo descomprimes sale:
      MIT-LICENSE.txt README.md src

      src es el directorio que contiene el ejecutable que estas buscando.

      Eliminar
    2. El yowsup-cli no hace nada. Esto es lo que tengo.



      config
      countries
      yowsup-cli

      ¿necesito algún otro programa para ejecutar el yowsup-cli?

      Eliminar
    3. También tengo estos dos directorios:

      Examples
      Yowsup

      Eliminar
    4. El yowsup-cli es un script en Python. Para ejecutarlo debes utilizar:
      python yowsup-cli y la opcion que necesites.

      Para solicitar el codigo inicial:
      python yowsup-cli -c config.example --requestcode sms

      Para solicitar el password
      python yowsup-cli -c config.example --register CODIGO

      Y una vez actualizado el config file, entonces:
      python yowsup-cli -c config.example -s 34666000000 "hola esto es una prueba"

      Se me olvidó decir lo de la dependencia con python-dateutil, pero ya ha sido nombrado en el Foro.
      Pero advierto que me imagino que si registras un numero en whatsapp que utilizes actualmente en el movil entonces entiendo que el whatsapp del movil va ha dejar de funcionar. (Aunque seria bueno saber si no es así).

      Eliminar
    5. Estimados, hago todo tal cual, solo que el primer paso lo omiti haciendo:
      http://whitesoft.dyndns.org:2222/whatsapp_sms

      el segundo me devuelve el pass
      coloco tal cual en el config.example
      es decir password=XXXXXXXXXXXXXXXXXXXXXXXXXXX=

      en el tercero pongo el numero al cual quiero enviar el sms,
      y luego me dice :

      "Connecting to c.whatsapp.net"
      "Auth Fail"
      "Auth Failed"

      Que puede ser? Gracias
      Tolosafacundo@hotmail.com

      Eliminar
  48. Hola de nuevo Juan Mol. He instalado python, he edita el config.exampe, pero en vez de poner = dejo : como viene ¿no?
    Abro la pantalla de comandos con el fondo negro ¿y ahora que hago?

    ResponderEliminar
    Respuestas
    1. vas al directorio donde esta descomprimido el yowsup, por ejemplo:
      cd /home/pi/Descargas/yowsup/src/

      y pones los comandos de las instrucciones:
      python yowsup-cli -c config.example --requestcode sms
      ...

      fasi fasi

      Eliminar
    2. No hay manera Juan Mol. Esto es lo que me sale:
      ------------------------------------------------
      C:\yowsup-master>dir
      El volumen de la unidad C es ACER
      El número de serie del volumen es: *

      Directorio de C:\yowsup-master

      10/01/2013 09:04 DIR .
      10/01/2013 09:04 DIR ..
      10/01/2013 09:04 1.090 MIT-LICENSE.txt
      10/01/2013 09:04 3.430 README.md
      24/01/2013 01:42 DIR src
      2 archivos 4.520 bytes
      3 dirs 256.398.516.224 bytes libres


      C:\yowsup-master\src>python yowsup-cli -c config.example --requestcode sms
      "python" no se reconoce como un comando interno o externo,
      programa o archivo por lotes ejecutable.
      -------------------------------------------------
      Hay algo gordo que se me escapa

      Eliminar
    3. ¿eso es windows? o_O
      bueno, se supone que python es multiplataforma, en ese directorio que estas, haz un:
      cd src
      y ahí si haces el dir, veras el ejecutable. Tienes que instalar python en windows ... si es que se puede ...

      Eliminar
    4. Es el MS-DOS de W.Vista.
      Tengo instalado el python 3.3.0 y la consola abierta con el fondo en negro y en la línea de comandos >>>
      El ejecutable lo veo, tiene 12.566 bytes

      Eliminar
    5. Bueno ... esto iba de RaspberryPi y Linux, pero bueno.
      El tema es que ya que tienes localizado el ejecutable, necesitas saber la ruta completa al ejecutable de python o bien (supongo que es así) tener python en el PATH. Si estas seguro de esto, solo te queda ejecutar los comandos como han ido explicando en las respuestas.

      Eliminar
    6. Gracias por tu atención.

      Eliminar
  49. Creo que he conseguido arrancarlo. Pero me sale este error:
    -------------------------------
    C:\Python33>python \yowsup-master\src\yowsup-cli -c config.example --resquestcod
    e sms
    File "\yowsup-master\src\yowsup-cli", line 96
    print "starting"
    ^
    SyntaxError: invalid syntax
    -----------------------------------------

    ResponderEliminar
  50. Ami me dice esto...

    debian:/scripts/yowsup-master/src# python yowsup-cli -c config.example --requestcode sms
    Traceback (most recent call last):
    File "yowsup-cli", line 29, in
    import argparse, sys, os, csv
    ImportError: No module named argparse
    debian:/scripts/yowsup-master/src#

    ResponderEliminar
    Respuestas
    1. Que version de Python tienes?. En teoria argparse forma parte de la libreria standard de Python a partir de la 2.7 o 3.2.

      De todas formas aqui puedes bajarte el paquete.

      http://code.google.com/p/argparse/

      Eliminar
  51. ¡Perfecto!
    Lo único a tener en cuenta, las dependencias.
    Yo he tenido que instalar python-argparse y python-dateutil

    ResponderEliminar
  52. Me sale esto al ejecutarlo:

    /usr/local/bin/envia_whatsapp.sh: line 6: /usr/src/WhatsAPI-master/src/php/elphp.php: Permission denied


    ¿Sabéis por que puede ser?

    ResponderEliminar
  53. Ya lo he arreglado, ahora me da esto:

    PHP Warning: fopen(countries.csv): failed to open stream: No such file or directory in /usr/src/WhatsAPI-master/src/php/whatsprot.class.php on line 1329
    PHP Fatal error: Uncaught exception 'Exception' with message 'The prived phone number is not valid.' in /usr/src/WhatsAPI-master/src/php/whatsprot.class.php:1252

    ResponderEliminar
  54. ami de da el mismo fallo de fopen(countries.csv):failed to open stream: No such file or directory in /usr/src/WhatsAPI-master/src/php/whatsprot.class.php on line 1329
    Me podeis echar una mano????

    ResponderEliminar
  55. Lo mismo es porque necesitas esto

    apt-get install php5-curl

    ResponderEliminar
  56. Ese problema te da porque no encuentra el fichero al ser una ruta relativa. Para salir del paso puedes cambiar la rute relativa 'countries.csv' por

    /usr/src/WhatsAPI-master/src/php/countries.csv

    en el fichero /usr/src/WhatsAPI-master/src/php/whatsprot.class.php

    ResponderEliminar
  57. Efectivamente es un problema de las rutas, en el archivo whastprot.class.php que se encuentra en whatsappi-master/src/php localizas la línea de código 1340 que pone lo siguiente : if (($handle = fopen('countries.csv', 'rb')) !== FALSE) { y donde pone countries csv cambias por la ruta completa donde esta ese archivo, en mi caso /home/user/Escritorio/whatsappi-master/src/php y solucionado.

    ResponderEliminar
  58. Hola. Tengo el wasup y se me ejecuta a la perfeccion, perooooo, si lo llamo desde otro directorio que no sea el raiz de yowsup-cli me da un error muyy feo :S

    Traceback (most recent call last):
    File "yowsup-master/src/yowsup-cli", line 306, in
    elif args["dbus"]:
    KeyError: 'dbus'

    Por otro lado, si lo ejecuto en la raíz del yowsup-cli me va a las 1.001 maravillas!

    A alguien le ha pasado? o tiene una solucion?

    PD: Felecidades por el Blog! me encata!!

    ResponderEliminar
  59. Despues de mucho batallar no logré habilitarlo.

    Al parecer ha cambiado mucho la API y ahora es más complejo implementarlo. Ni modo, me interesaban las alertas vía Whatsapp para mi Pi. Probaré Yowsup a ver que tal.

    Gracias por la información.

    ResponderEliminar
  60. Alguien que me ayude con la instalacion del .zip en mi raspberry, ni idea como se hace esto y me gustaria enviar mi primer mensaje

    saludos y mil gracias

    ResponderEliminar
  61. ¿Podrias hacer uno que te notifique cuando termine una descarga mediante Pyload? porfavor!

    ResponderEliminar
  62. Alguien que tenga Yowsup comprimido y lo pueda enviar a bajo.pairons@gmail.com??
    Bajaron el repo y no se puede descargar :(

    Saludos!

    ResponderEliminar