Documentos

Webhooks

Introducción

Los webhooks son una función potente que permite a tu servidor escuchar eventos de tus dispositivos o de WhatsApp. Ayuda a automatizar tareas.

Esta función solo funciona para eventos entrantes como SMS, mensajes de WhatsApp, respuestas USSD y notificaciones de Android.

Casos de uso

Bot de respuesta automática para SMS y WhatsApp.
Guardar mensajes y chats en tu base de datos.
Guardar notificaciones en tu base de datos.
Guardar respuestas USSD en tu base de datos.
Enviar payloads a direcciones de correo electrónico.
Enviar un SMS o chat cuando recibas una notificación de Facebook.
Ejecutar acciones cuando se reciba una notificación de cualquier app.

Cómo funciona

Cuando se recibe un evento, el sistema lo envía a tu URL de webhook usando el método POST. Tu servidor puede manejar el payload como quieras.

Flujo del webhook

Estructura del payload

Cada payload tiene un tipo y datos. Solo necesitas comprobar el tipo y procesar los datos.

SMS JSON Payload
[
    "type" => "sms",
    "data" => [
        "id" => 2,
        "rid" => 10593,
        "sim" => 1,
        "device" => "UUID-DEVICE-ID",
        "phone" => "+639760713666",
        "message" => "Hello World!",
        "timestamp" => 1645684231
    ]
]
WhatsApp JSON Payload
[
    "type" => "whatsapp",
    "data" => [
        "id" => 2,
        "wid" => "+639760713666",
        "phone" => "+639760666713",
        "message" => "Hello World!",
        "attachment" => "http://imageurl.com/image.jpg",
        "timestamp" => 1645684231
    ]
]
USSD JSON Payload
[
    "type" => "ussd",
    "data" => [
        "id" => 98,
        "sim" => 1,
        "device" => "UUID-DEVICE-ID",
        "code" => "*143#",
        "response" => "Balance: 10.00",
        "timestamp" => 1645684231
    ]
]
Notification JSON Payload
[
    "type" => "notification",
    "data" => [
        "id" => 77,
        "device" => "UUID-DEVICE-ID",
        "package" => "com.facebook.katana",
        "title" => "Notification Title",
        "content" => "Notification Content",
        "timestamp" => 1645684231
    ]
]

Ejemplo de código

<?php

$request = $_REQUEST;
$secret = "YOUR_WEBHOOK_SECRET";

// Check webhook secret
if (isset($request["secret"]) && $request["secret"] == $secret):
    $payloadType = $request["type"];
    $payloadData = $request["data"];

    // Handle the payload
    // Example: save to database or trigger an action
    error_log("Webhook received: " . $payloadType);
else:
    http_response_code(401);
    exit("Invalid secret");
endif;