Enviar mensajes WhatsApp mediante PHP usando WhatsAPI (2 de 2)


WhatsApp  como  sabemos es un  servicio de mensajera para los teléfonos inteligentes que  sólo está disponible para smartphones por  ahora. Si desea utilizar otras herramientas o escribir aplicaciones web que envíen o reciban mensajes de WhatsApp (e.g. WhatsAPI), usted tiene que encontrar una manera de detectar la contraseña WhatsApp desde su poprio smartphone.

Hasta hace poco, esta contraseña era sólo un hash MD5 de tu IMEI (o dirección MAC), pero eso cambió cuando fue descubierto. Desde entonces, el servidor de WhatsApp asigna una contraseña a cada cuenta del dispositivo cuando registra por primera vez.

Este tutorial muestra cómo captar  la contraseña de su cuenta de WhatsApp usando el mitmproxy proxy SSL/TLS. Una vez que usted tiene esta contraseña, lo puede utilizar para comunicarse con los servidores de WhatsApp directamente o a través de un marco (esa es la primera parte ).

Una vez que usted ha adquirido su contraseña de la cuenta de WhatsApp , es relativamente fácil de enviar y recibir mensajes de WhatsApp mediante PHP. Utilizando el framework PHP-based WhatsAPI, un simple script notificador de WhatsApp que tiene sólo una docena de líneas de código.

Este pequeño tutorial muestra cómo usar las dos funciones muy básicas de WhatsAPI, es decir para enviar los mensajes salientes simples a cualquier número y a los nuevos mensajes entrantes desde su propia cuenta de WhatsApp ,mediante  PHP.

PARTE 2

1. Obtener su contraseña de WhatsApp

Esta pequeña demostración sólo funciona si usted ya ha obtenido su contraseña de WhatsApp. Si usted no tiene y no imaginas cómo hacerlo, consulte la primera parte de este tutorial.

2. WhatsAPI y enviar/recibir mensajes

Suponiendo que tiene a mano tu contraseña de WhatsApp, vamos a ver lo fácil que es el uso de WhatsAPI.

2.1. WhatsAPI descargar y probar scripts

Descargar WhatsAPI es realmente simplemente puesto que se encuentra alojada en Github. Simplemente cree un nuevo directorio y recuper WhatsAPI desde Github.

Shell
mkdir whatsapp
cd whatsapp
sudo apt-get install git
git clone https://github.com/venomous0x/WhatsAPI
1
2
3
4
mkdir whatsapp
cd whatsapp
sudo apt-get install git

Una vez que ha hecho esto, puedes revisar la actual estructura del proyecto. También hay un archivo llamado EXAMPLES.php que muestra algunos ejemplos más.

También el autor de este estudio , ha preparado unas pequeñas secuencias de comandos que puede utilizar como base para hacer sus propios scripts:

Para descargar  dos ejemplos mínimos, ejecute los siguientes comandos y editar el archivo whatsapp_whatsapi_config.php para configurar sus propias credenciales de usuario:

Shell
1
2
3
4
5
6

2.2. Enviar mensajes WhatsApp

Como sabe ,desde su cliente desde su  smartphone, puede enviar otro tipo de mensajes a través de WhatsApp: además de texto, puede enviar archivos de audio y video, ubicaciones y contactos. WhatsAPI puede hacer todas esas cosas en una sola línea de código.

Como muestra este simple script whatsapp_whatsapi_send.php , se demuestra cómoes de sencillo  enviar un mensaje de texto normal. El guión está destinado a ser llamado por la línea de comandos, pero puede utilizarse también el código en una aplicación web:

PHP
#!/usr/bin/php
<!–?phprequire_once('whatsapp_whatsapi_config.php');$destinationPhone = ‘495553333333’;$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);
$w->Message($destinationPhone, $argv[1]);?>

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/php
<?php
require_once(‘whatsapp_whatsapi_config.php’);
$destinationPhone = ‘495553333333’;
$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);
$w->Message($destinationPhone, $argv[1]);
?>

El guión incluye la configuración de tu nombre de usuario, contraseña y pantalla de WhatsApp. Es muy fácil de usar y bastante autoexplicativo: la clase WhatsProt es la única cosa que usted necesita. Simple conexión a los servidores de WhatsApp y LoginWithPassword a autenticarse. Después de eso, puede utilizar los siguientes métodos:

  • Mensaje ($a, $msg): de $to le enviará un mensaje de texto normal.
  • MessageImage ($a, $imageURI): envío de imágenes por URL o ruta de acceso local (jpg) a $to.
  • MessageVideo ($a, $videoURI): enviar videos por URL o ruta de acceso local (mp4) a $to.
  • MessageAudio ($a, $audioURI): Envíe audios por URL o ruta de acceso local (mp3) a $to.
  • Ubicación ($a, $lng, $lat): coordenadas GPS enviar a $to
  • vCard ($a, $vCardName, $vCard): enviar vCard a $to.
  • WaitForReceipt(): esperar a que los servidores de WhatsApp confirmar la entrega.

El pequeño script ante dicho obviamente sólo envía mensajes de texto sin formato. Se puede utilizar desde la línea de comandos como este:

./whatsapp_whatsapi_send.php “Warning: CPU temperature at 65°C”
1
./whatsapp_whatsapi_send.php “Warning: CPU temperature at 65°C”

El guión es particularmente útil como un notificador de WhatsApp, permitiéndole recibir notificaciones de sus servidores cada vez que quieras — por ejemplo, si la temperatura de la CPU se eleva por encima de un umbral determinado, la carga es demasiado alta para una cierta cantidad de tiempo o uno de sus guiones falló/tuvo éxito. Esto es particularmente interesante en combinación con un sistema de monitoreo de servicio como Nagios o Monit.

2.3. Recibir mensajes de WhatsApp

Para ser capaz de recibir mensajes de WhatsApp usando PHP, necesita escuchar para nuevos mensajes. De WhatsAPI PollMessages hace exactamente eso:lee los mensajes del zócalo del servidor de WhatsApp y los pone en una cola local para su procesamiento. El método se bloquea si no hay mensajes y espera para que el servidor enviar un mensaje indefinidamente — tal como lo hace cualquier otro servidor. Mediante GetMessages puedes tirar los mensajes de la cola y procesarlos en su aplicación.

Un guión mínimo se vería muy similar a del ejemplo de arriba, excepto que en lugar de llamar a Message(), tienes que llamar PollMessages() y GetMessages() en un bucle de servidor:

PHP
<!–?phprequire_once('whatsapp_whatsapi_config.php');$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);while (true) {
$w->PollMessages();
$msgs = $w->GetMessages();
// Do something with the messages …
}?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
require_once(‘whatsapp_whatsapi_config.php’);
$w = new WhatsProt($userPhone, $userIdentity, $userName, $debug);
$w->Connect();
$w->LoginWithPassword($password);
while (true) {
    $w->PollMessages();
    $msgs = $w->GetMessages();
    // Do something with the messages …
}
?>

Cada mensaje de WhatsApp tiene un conjunto de atributos estándar ($m -> _attributeHash) como de (número de remitente) o t (enviar timestamp). Además, dispone de diferentes tipos de nodos secundarios que contienen información adicional/opcional, dependiendo de qué tipo de mensaje es: un nodo secundario de notificar , por ejemplo, dice la conversación socio y que está en línea y sigue escribiendo y el nodo secundario cuerpo contiene el contenido del texto. Hay muchos más de ellos. Puedes ver por ti mismo llamando al print_r($msgs).

El siguiente fragmento de código muestra un extracto de un mensaje — se refieren a la salida de este ejemplo para ver más:

ProtocolNode Object
(
[_tag] => message
[_attributeHash] => Array
(
[from] => [email protected]
[id] => 1373204559-6
[type] => chat
[t] => 1373205620
)[_children] => Array
(

[2] => ProtocolNode Object
(
[_tag] => body

[_children] =>
[_data] => Hallo blog readers
)
)
[_data] =>
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ProtocolNode Object
(
    [_tag] => message
    [_attributeHash] => Array
        (
            [from] => [email protected]
            [id] => 1373204559-6
            [type] => chat
            [t] => 1373205620
        )
    [_children] => Array
        (
         …
            [2] => ProtocolNode Object
                (
                    [_tag] => body
                    …
                    [_children] =>
                    [_data] => Hallo blog readers
                )
        )
    [_data] =>
)

El ejemplo de servidor script whatsapp_whatsapi_listen.php extiende el fragmento de código anterior y procesa los mensajes como este: toma el tiempo (t) y el número de remitente (de) de $m -> _attributeHash y el nombre y _data del niño nodos. Cada mensaje no vacío se imprime en STDOUT, así:

Shell
./whatsapp_whatsapi_listen.php
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Hallo blog readers
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Everything I write is printed to STDOUT
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Exit
1
2
3
4
./whatsapp_whatsapi_listen.php
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Hallo blog readers
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Everything I write is printed to STDOUT
[07/07/2013 15:57] From: 491231234567, Name: Philipp, Message: Exit

Si el cuerpo del mensaje es “salir”, sale el guión.

Espero que este tutorial  de  Philipp C. Heckel   nos  haya ayudado un poco a comprender cómo funciona WhatsAPI.

 

Fuente aqui

Anuncios

10 comentarios el “Enviar mensajes WhatsApp mediante PHP usando WhatsAPI (2 de 2)

  1. Omar L dice:

    todavia sigue funcionando???

    Me gusta

  2. juanito dice:

    soloelectronicos.com….y si no soy electronico??…..ah?

    Me gusta

    • Todos los que les guste la electrónica ( e incluso tampoco les guste) son bienvenidos en este humilde sitio. Lo que ocurre es que a veces se publican artículos muy técnicos que probablemente no interesen a todo el mundo y de ahi el nombre de este sitio

      Me gusta

  3. Hola soloelectronicos!

    Me parece estupendo tu trabajo. Te escribo para consultarte lo siguiente: yo tengo una aplicación web llamada tioconejo.net. Es un resumidor de textos con una version pro para hacer estudios de mercado y otros tipos de investigación cualitativa-textual. Ya yo la tengo enlazada a Twitter, pero me gustaría mucho enlazarla a Whatsapp. El problema es que no manejo nada de github y todo eso, sino que yo trabajo a la antigua (como decimos en Venezuela, a pulmón), así que no sé cómo instalar los enlaces. Si me ayudaras con eso sería genial, que yo me encargo de lugo conectar todo.

    Un abrazo con admiración!

    Salud!

    Me gusta

  4. Wilson R dice:

    Hola soloelectronicos!

    con la version actual de whatsapp, te sigue funcionando tu investigacion?

    Me gusta

  5. mauricio herrera dice:

    pueden publicar la api , no esta en git, y cuando clono esa que esta ahi, no me permite hacer revert

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s