문서 / 웹훅

웹훅

설정 → 웹훅에서 엔드포인트를 구성하면, 구독한 각 이벤트에 대해 Meshwire가 서명된 JSON 페이로드를 POST로 전송합니다.

이벤트 카탈로그

이벤트설명
bot.published새 흐름 버전이 게시되었습니다
subscriber.created새 구독자가 봇에 가입했습니다
subscriber.blocked구독자가 봇을 차단했습니다
broadcast.completed브로드캐스트 전송이 완료되었습니다
broadcast.failed브로드캐스트 전송에 실패했습니다
message.inbound수신 메시지를 받았습니다

서명 검증하기

모든 요청에는 X-Meshwire-Signature 헤더가 포함됩니다. 이는 원본 요청 본문에 대해 엔드포인트 시크릿으로 서명한 HMAC-SHA256 16진수 다이제스트입니다.

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

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

재시도 및 백오프

5초 이내에 2xx 응답을 받지 못한 전송은 지수 백오프로 재시도됩니다: 1분, 5분, 30분, 2시간, 이후 12시간 간격으로 최대 24시간까지. 마지막 시도까지 실패하면 해당 엔드포인트에 플래그가 지정되고 이메일로 알림을 받게 됩니다. 1시간 동안 실패율이 50%를 초과하는 엔드포인트는 일시적으로 비활성화됩니다.

페이로드 예시

{
  "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 }
  }
}

더 깊이 알아보기

전달, 재시도, 읽기 전용 진단

아웃바운드 웹훅은 서명된 JSON 페이로드를 구성한 엔드포인트로 POST합니다. 인바운드 웹훅은 외부 이벤트로 흐름을 트리거하며 각 트리거는 자기 이벤트 이름만 수신합니다 — 하나의 엔드포인트가 여러 흐름을 구동할 수 있습니다.\nTelegram 자체에 닿는 진단 — 함께 배포되는 smoke 및 diagnose 스크립트 — 는 엄격히 읽기 전용입니다. 웹훅을 등록하거나 명령을 보내지 않습니다. 프로덕션 상태를 바꿀 수 있는 진단 도구는 시한폭탄이기 때문입니다. 등록은 애플리케이션의 보호된 흐름 안에서만 일어납니다.\n설치가 프록시나 WAF 뒤에 있으면 challenge 페이지가 웹훅 호출을 가로챌 수 있습니다. 시스템은 그 형태를 감지하고 같은 벽에 조용히 재시도하는 대신 강력 새로고침을 안내합니다.