Documentación / Webhooks

Webhooks

Configura un endpoint en Ajustes → Webhooks y Meshwire enviará por POST una carga JSON firmada por cada evento suscrito.

Catálogo de eventos

EventoDescripción
bot.publishedSe publicó una nueva versión del flujo
subscriber.createdUn nuevo suscriptor se unió a un bot
subscriber.blockedUn suscriptor bloqueó al bot
broadcast.completedUna difusión terminó de enviarse
broadcast.failedUna difusión no pudo enviarse
message.inboundSe recibió un mensaje entrante

Verificación de firmas

Cada solicitud incluye una cabecera X-Meshwire-Signature : un resumen hexadecimal HMAC-SHA256 del cuerpo bruto de la solicitud, firmado con el secreto de tu endpoint.

const expected = crypto
  .createHmac("sha256", endpointSecret)
  .update(rawBody)
  .digest("hex");

if (expected !== req.headers["x-botforge-signature"]) {
  return res.status(401).end();
}

Reintentos y retroceso

Las entregas que no reciben un 2xx en 5 segundos se reintentan con retroceso exponencial: 1 min, 5 min, 30 min, 2 h, luego 12 h, hasta un máximo de 24 horas. Tras fallar el último intento, el endpoint se marca y se te notificará por correo. Los endpoints con una tasa de fallos superior al 50 % en 1 hora se desactivan temporalmente.

Ejemplo de carga útil

{
  "id": "evt_3n7f",
  "type": "broadcast.completed",
  "createdAt": "2024-05-02T14:03:11Z",
  "data": {
    "broadcastId": "bcast_7f1",
    "botId": "bot_9k2",
    "stats": { "total": 4210, "delivered": 4180, "blocked": 19, "failed": 11 }
  }
}

Ir más profundo

Entrega, reintentos y diagnóstico de solo lectura

Los webhooks salientes hacen POST de una carga JSON firmada al endpoint que configures; los entrantes disparan flujos ante eventos externos, y cada trigger escucha su propio nombre de evento — un solo endpoint puede manejar varios flujos.\nEl diagnóstico que toca al propio Telegram — los scripts smoke y diagnose incluidos — es estrictamente de solo lectura: nunca registran webhooks ni envían comandos, porque una herramienta de diagnóstico capaz de mutar estado de producción es un incidente con temporizador. El registro solo ocurre dentro de los flujos vigilados de la aplicación.\nSi tu instalación está tras un proxy o WAF, una página de desafío puede interceptar la llamada del webhook; el sistema detecta esa forma y te pide recargar de forma completa en vez de reintentar en silencio contra el mismo muro.