Reciba mensajes de WhatsApp usando PHP y webhook

Introducción

En este tutorial, crearemos una página para manejar los mensajes de WhatsApp entrantes usando PHP.

dependencias

para fines de desarrollo local, se requiere un servicio de túneles. Este ejemplo usa ngrok , puede descargar ngrok desde aquí .

Ejemplo

Este es un ejemplo muy simple, con el servidor registrando el cuerpo de la solicitud en el archivo log.txt.

El cuerpo contiene la información completa del webhook enviada desde la instancia de WhatsApp de la API de Ultramsg.

$data = file_get_contents("php://input");
$event = json_decode($data, true);
if(isset($event)){
	//Here, you now have event and can process them how you like e.g Add to the database or generate a response
	$file = 'log.txt';  
	$data =json_encode($event)."\n";  
	file_put_contents($file, $data, FILE_APPEND | LOCK_EX);
}

Sobre el uso del servidor

Guarde el archivo de ejemplo anterior como test.php y cárguelo en su servidor. La URL del Webhook será:

http://your-server/test.php

Sobre uso local con ngrok

Guarde el archivo de ejemplo anterior como test.php en su host local y la URL será:

http://localhost/test.php

Iniciar ngrok:

ngrok http 80

Después de esto, deberías ver un
URL *.ngrok.io.
por ejemplo :
https://7647-115-83-121-164.ngrok.io
reemplazar host local con
URL de ngrok.io
la URL será:
https://7647-115-83-121-164.ngrok.io/webhook.php

¿Que sigue?

pegue su URL en la configuración de la instancia.
Debería poder recibir webhooks ahora y puede verlos en el archivo log.txt.

EJEMPLO DE RESPUESTA JSON

{
  "event_type": "message_received",
  "instanceId": "90",
  "data": {
    "id": "[email protected]_7ECAED9EB68D3474BE591443134C2E3F",
    "from": "[email protected]",
    "to": "[email protected]",
    "ack": "pending",
    "type": "chat",
    "body": "I can't send a message using php code\nCan you help me",
    "fromMe": false,
    "isForwarded": false,
    "time": 1643311467
  }
}