Mga Webhook¶
Maaaring mag-expose ang Gateway ng isang maliit na HTTP webhook endpoint para sa mga panlabas na trigger.
Paganahin¶
{
hooks: {
enabled: true,
token: "shared-secret",
path: "/hooks",
},
}
Mga tala:
- Kailangan ang
hooks.tokenkapaghooks.enabled=true. - Ang
hooks.pathay default sa/hooks.
Auth¶
Dapat isama sa bawat request ang hook token. Mas mainam na gamitin ang headers:
Authorization: Bearer <token>(inirerekomenda)x-openclaw-token: <token>?token=<token>(deprecated; nagla-log ng babala at aalisin sa susunod na major release)
Mga Endpoint¶
POST /hooks/wake¶
Payload:
{ "text": "System line", "mode": "now" }
textkinakailangan (string): Ang paglalarawan ng event (hal., "New email received").modeopsyonal (now|next-heartbeat): Kung magti-trigger ng agarang heartbeat (defaultnow) o maghihintay sa susunod na periodic check.
Epekto:
- Nag-e-enqueue ng system event para sa main session
- Kapag
mode=now, nagti-trigger ng agarang heartbeat
POST /hooks/agent¶
Payload:
{
"message": "Run this",
"name": "Email",
"sessionKey": "hook:email:msg-123",
"wakeMode": "now",
"deliver": true,
"channel": "last",
"to": "+15551234567",
"model": "openai/gpt-5.2-mini",
"thinking": "low",
"timeoutSeconds": 120
}
messagekinakailangan (string): Ang prompt o mensahe na ipo-process ng agent.nameopsyonal (string): Human-readable na pangalan para sa hook (hal., "GitHub"), ginagamit bilang prefix sa mga session summary.sessionKeyoptional (string): The key used to identify the agent's session. Defaults to a randomhook:<uuid>. Ang paggamit ng pare-parehong key ay nagbibigay-daan sa isang multi-turn na pag-uusap sa loob ng hook context.wakeModeopsyonal (now|next-heartbeat): Kung magti-trigger ng agarang heartbeat (defaultnow) o maghihintay sa susunod na periodic check.deliveroptional (boolean): Iftrue, the agent's response will be sent to the messaging channel. Defaults totrue. Responses that are only heartbeat acknowledgments are automatically skipped.channeloptional (string): The messaging channel for delivery. One of:last,whatsapp,telegram,discord,slack,mattermost(plugin),signal,imessage,msteams. Defaults tolast.tooptional (string): The recipient identifier for the channel (e.g., phone number for WhatsApp/Signal, chat ID for Telegram, channel ID for Discord/Slack/Mattermost (plugin), conversation ID for MS Teams). Defaults to the last recipient in the main session.modeloptional (string): Model override (e.g.,anthropic/claude-3-5-sonnetor an alias). Must be in the allowed model list if restricted.thinkingopsyonal (string): Thinking level override (hal.,low,medium,high).timeoutSecondsopsyonal (number): Maximum na tagal para sa agent run sa segundo.
Epekto:
- Tumatakbo ng isang hiwalay na agent turn (sariling session key)
- Palaging nagpo-post ng summary sa main session
- Kapag
wakeMode=now, nagti-trigger ng agarang heartbeat
POST /hooks/<name> (mapped)¶
Custom hook names are resolved via hooks.mappings (see configuration). A mapping can
turn arbitrary payloads into wake or agent actions, with optional templates or
code transforms.
Mga opsyon sa mapping (buod):
- Pinapagana ng
hooks.presets: ["gmail"]ang built-in na Gmail mapping. - Hinahayaan ka ng
hooks.mappingsna magtakda ngmatch,action, at mga template sa config. - Ang
hooks.transformsDir+transform.moduleay naglo-load ng JS/TS module para sa custom na logic. - Gamitin ang
match.sourcepara panatilihin ang isang generic ingest endpoint (payload-driven routing). - Ang mga TS transform ay nangangailangan ng TS loader (hal.,
bunotsx) o precompiled na.jssa runtime. - Itakda ang
deliver: true+channel/tosa mga mapping para i-route ang mga reply sa isang chat surface (channelay default salastat nagfa-fallback sa WhatsApp). - Dinidi-disable ng
allowUnsafeExternalContent: trueang external content safety wrapper para sa hook na iyon (mapanganib; para lang sa mga pinagkakatiwalaang internal source). openclaw webhooks gmail setupwriteshooks.gmailconfig foropenclaw webhooks gmail run. See Gmail Pub/Sub for the full Gmail watch flow.
Mga Tugon¶
200para sa/hooks/wake202para sa/hooks/agent(nagsimula ang async run)401kapag auth failure400kapag invalid ang payload413kapag oversized ang payload
Mga Halimbawa¶
curl -X POST http://127.0.0.1:18789/hooks/wake \
-H 'Authorization: Bearer SECRET' \
-H 'Content-Type: application/json' \
-d '{"text":"New email received","mode":"now"}'
curl -X POST http://127.0.0.1:18789/hooks/agent \
-H 'x-openclaw-token: SECRET' \
-H 'Content-Type: application/json' \
-d '{"message":"Summarize inbox","name":"Email","wakeMode":"next-heartbeat"}'
Gumamit ng ibang model¶
Idagdag ang model sa agent payload (o mapping) para i-override ang model para sa run na iyon:
curl -X POST http://127.0.0.1:18789/hooks/agent \
-H 'x-openclaw-token: SECRET' \
-H 'Content-Type: application/json' \
-d '{"message":"Summarize inbox","name":"Email","model":"openai/gpt-5.2-mini"}'
Kung ipinapatupad mo ang agents.defaults.models, tiyaking kasama roon ang override model.
curl -X POST http://127.0.0.1:18789/hooks/gmail \
-H 'Authorization: Bearer SECRET' \
-H 'Content-Type: application/json' \
-d '{"source":"gmail","messages":[{"from":"Ada","subject":"Hello","snippet":"Hi"}]}'
Seguridad¶
- Panatilihin ang mga hook endpoint sa likod ng loopback, tailnet, o pinagkakatiwalaang reverse proxy.
- Gumamit ng dedikadong hook token; huwag i-reuse ang mga gateway auth token.
- Iwasang magsama ng sensitibong raw payload sa mga webhook log.
- Hook payloads are treated as untrusted and wrapped with safety boundaries by default.
If you must disable this for a specific hook, set
allowUnsafeExternalContent: truein that hook's mapping (dangerous).