2026 OpenClaw MeshMac 실전: Asana Webhook으로 다중 노드 빌드 브로드캐스트·실패 요약 회신
Asana 이벤트를 게이트웨이 한 곳에서 핸드셰이크·서명 후 공유 큐·MeshMac 노드로 빌드하고, 채널 브로드캐스트와 태스크 스토리에 실패 요약까지 묶는 최소 단계입니다. 표·단계·401·429 FAQ로 바로 재현하며 운영 체크리스트까지 포함합니다.
PAT·웹훅 URL이 노드마다 흩어지면 회전·감사가 어렵고 실패 요약이 Asana에 남지 않습니다. 표는 Mesh 게이트웨이와 노드별 URL 선택을 압축합니다.
| 항목 | 게이트웨이·Mesh | 노드별 웹훅 |
|---|---|---|
| 시크릿·PAT | 한 파일·한 프로세스 | 복제·누설↑ |
| 확장 | 큐·워커만 | 콘솔 재등록 |
| 브로드캐스트 | 동일 JSON | 메시지 파편 |
인그레스 단일화는 공유 빌드 웹훅 알림, 상한은 rate limit·동시성, 순서·재시도는 태스크 큐와 같이 보세요.
Asana 아웃바운드 웹훅
- 리소스 gid와
changed필터로 빌드 트리거를 좁힙니다. - Target URL은
https://게이트웨이/hooks/asana한 줄로 고정합니다. - 핸드셰이크의
X-Hook-Secret를 규격대로 되돌리고200을 맞춥니다. - 수신 직후 durable enqueue 뒤 빠른 응답으로 재전송을 흡수합니다.
X-Hook-Signature 서명 검증
- 시크릿은
0440파일만 사용하고 로그에 남기지 않습니다. - 원문 바이트로
HMAC-SHA256후X-Hook-Signature와 상수 시간 비교, 그다음 JSON 파싱. - 실패는
401, 성공은 큐 적재 뒤200입니다. - 멱등 키는
resource.gid+action+분처럼 짧게 잡습니다.
OpenClaw 게이트웨이 라우팅
- OpenClaw에서
/hooks/asana만 분리해 시크릿을 섞지 않습니다. - 페이로드를
task_gidproject_gid등 내부 스키마로 정규화합니다. - 워커가 빌드한 뒤 동일 게이트웨이가 채널 브로드캐스트와 Asana REST를 담당합니다.
- 큐 불가 시
503로 재시도를 유도하고 상한으로 루프를 끊습니다.
다중 노드 알림 템플릿
채팅 JSON은 팀 규약으로 고정해 노드가 바뀌어도 동일 레이아웃을 유지합니다.
- 필수
task_namebuild_statusmesh_node_idlog_tail, 실패에만exit_code. - 성공은 채널만, 실패는 게이트웨이 PAT로
/tasks/{gid}/stories한 줄 요약.
출발값 본문 상한 1MB 전후 핸드셰이크 10초 이내 로그 꼬리 240자 이내.
401·429 FAQ
- REST 401
- PAT 스코프·만료·캐시된 키를 의심하고 게이트웨이만 재발급합니다.
- 연속 429
- 인바운드와 REST를 버킷 분리하고 Retry-After 지터 백오프, 코멘트 배치를 줄입니다.
- 운영만 서명 실패
- WAF·JSON 선파싱을 끄고 원시 바디로 HMAC을 계산합니다.
한 줄 정리
핸드셰이크·HMAC·라우팅·템플릿·PAT 단일화면 확장 시 Asana를 다시 묶는 일이 줄어듭니다.