Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Webhooks

webhook チャネルは、汎用的なインバウンド/アウトバウンド HTTP アダプターです。指定したポートで独自の組み込み HTTP サーバーを実行し、JSON 形式のメッセージを受け取ってエージェントに渡し、(オプションで)エージェントの応答を指定した URL に POST します。HTTP POST を生成できる任意のシステム向けの汎用アダプターとして使用できます。

ゲートウェイの /webhook エンドポイントとは別物です。 ゲートウェイサービスには、HTTP経由でエージェントにアクセスするペアリング済みクライアント向けの独自の POST /webhook があり、これは [gateway] の下に存在し、運用 → ネットワークデプロイで説明されています。このページでは [channels.webhook] チャネルのみを説明します。

設定

auth_header 🔑 secret · default null

送信リクエスト用のオプションの Authorization ヘッダー値。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開き、channels.webhook.<alias>.auth_header フィールドを設定してください。

zerocode

Config ペインで、channels.webhook.<alias>.auth_header フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.auth_header    # マスクされた入力、暗号化して保存

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__auth_header=
excluded_tools string[] · default []

このチャネルのツール仕様から除外されるツールです。設定すると、これらのツールはこのチャネル経由で応答する際にモデルに公開されません。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開いて、channels.webhook.<alias>.excluded_tools フィールドを設定します。

zerocode

Config ペインで、channels.webhook.<alias>.excluded_tools フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.excluded_tools <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__excluded_tools=
listen_path string? · default null

リッスンする URL パス(デフォルト: /webhook)。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開いて、channels.webhook.<alias>.listen_path フィールドを設定してください。

zerocode

Config ペインで、channels.webhook.<alias>.listen_path フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.listen_path <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__listen_path=
max_retries integer? · default null

一時的な障害(ネットワークエラー、429、5xx)が発生した場合の送信リトライ最大回数。リトライを無効にするには 0 を設定します。デフォルト: 3

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開いて、channels.webhook.<alias>.max_retries フィールドを設定します。

zerocode

Config ペインで、channels.webhook.<alias>.max_retries フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.max_retries <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__max_retries=
port integer · default 8090

受信Webhookを待ち受けるポート。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開いて、channels.webhook.<alias>.port フィールドを設定してください。

zerocode

Config ペインで、channels.webhook.<alias>.port フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.port <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__port=
reply_min_interval_secs integer · default 0

チャンネルと受信者の組み合わせごとの送信ペーシングの下限値(秒)。範囲: 0..=REPLY_MIN_INTERVAL_MAX_SECS(0 で無効化)。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開き、channels.webhook.<alias>.reply_min_interval_secs フィールドを設定します。

zerocode

Config ペインで、channels.webhook.<alias>.reply_min_interval_secs フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.reply_min_interval_secs <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__reply_min_interval_secs=
reply_queue_depth_max integer · default 0

(チャネル, 受信者)単位の送信ペーシングキューの深さ。範囲: 0..=REPLY_QUEUE_DEPTH_CEILINGreply_min_interval_secs > 0 かつこの値が 0 の場合、ペーシングラッパーは DEFAULT_REPLY_QUEUE_DEPTH (16) で代替します。キューが満杯の場合、最新の送信が破棄され、WARN がログに記録されます。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開き、channels.webhook.<alias>.reply_queue_depth_max フィールドを設定します。

zerocode

Config ペインで、channels.webhook.<alias>.reply_queue_depth_max フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.reply_queue_depth_max <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__reply_queue_depth_max=
retry_base_delay_ms integer? · default null

再試行間の指数バックオフのベース遅延時間(ミリ秒)。デフォルト: 5001 未満の値は、ビジー再試行ループを回避するため、実行時に 1ms に制限されます。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開き、channels.webhook.<alias>.retry_base_delay_ms フィールドを設定します。

zerocode

Config ペインで、channels.webhook.<alias>.retry_base_delay_ms フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.retry_base_delay_ms <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__retry_base_delay_ms=
retry_max_delay_ms integer? · default null

任意の単一リトライ待機における最大遅延の上限(ミリ秒)。デフォルト: 30000(30秒)。1 未満の値は、ビジーリトライループを回避するため実行時に 1ms に制限されます。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開いて、channels.webhook.<alias>.retry_max_delay_ms フィールドを設定してください。

zerocode

Config ペインで、channels.webhook.<alias>.retry_max_delay_ms フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.retry_max_delay_ms <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__retry_max_delay_ms=
secret 🔑 secret · default

Webhook 署名検証(HMAC-SHA256)用の共有シークレット。これがないとチャンネルは起動を拒否します。設定で [channels.webhook.<alias>].secret を指定してください。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開いて channels.webhook.<alias>.secret フィールドを設定します。

zerocode

Config ペインで、channels.webhook.<alias>.secret フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.secret    # マスクされた入力、暗号化して保存

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__secret=
send_method string? · default null

送信メッセージのHTTPメソッド(POSTまたはPUT)。デフォルト:POST

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開いて、channels.webhook.<alias>.send_method フィールドを設定します。

zerocode

Config ペインで channels.webhook.<alias>.send_method フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.send_method <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__send_method=
send_url string? · default null

送信メッセージのPOST/PUT先のURL。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/webhook を開き、channels.webhook.<alias>.send_url フィールドを設定します。

zerocode

Config ペインで、channels.webhook.<alias>.send_url フィールドを設定します。

zeroclaw config

zeroclaw config set channels.webhook.<alias>.send_url <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__webhook__<alias>__send_url=

完全なフィールドリファレンス: config reference

インバウンド

チャネルは 0.0.0.0:{port} にバインドし、POST {listen_path} をルーティングします。

リクエストボディ(JSON):

{
  sender: alice,
  "内容": こんにちは、エージェント。,
  thread_id: optional-conversation-id
}
  • sender: 必須。メッセージの送信者IDとして使用されます。
  • content: 必須。エージェントに渡されるユーザーメッセージです。内容が空の場合は 400 を返します。
  • thread_id: 省略可能。設定した場合、エージェントの返信は同じスレッドを対象とします。設定しない場合、返信は sender を対象とします。

成功すると 200 OK が返されます。不正な形式の JSON または空の content の場合は 400 が返されます。バックプレッシャー(チャネルキューが満杯)の場合は 503 が返されます。

署名の検証

secretを設定した場合、すべての受信リクエストにX-Webhook-Signatureヘッダーを含める必要があります:

X-Webhook-Signature: sha256=<hex-encoded HMAC-SHA256 of the raw body>

チャネルは HMAC-SHA256(secret, raw_body) を計算して16進数にエンコードし、ヘッダー値と比較します(デコード前に sha256= プレフィックスが除去されます)。不一致またはヘッダーが欠落している場合は 401 を返します。

secret が未設定の場合、チャネルは起動を拒否します(リスナーは起動時にエラーで中断し、シークレットを設定するようオペレーターに指示します)。有効化された Webhook チャネルは、常に設定済みの secret を必要とします。これは意図的なフェイルファストです。エージェントアクセスを持つ認証されていない Webhook リスナーは、いかなるデプロイにも存在すべきでないオープンな入口だからです。

破壊的変更。 これまでリバースプロキシの背後でシークレットなしにリスナーを実行していた、またはプライベートネットワークにバインドしていたデプロイでは、今後 [channels.webhook.<alias>].secretsecret を設定する必要があります。シークレットなしのフォールバック経路は削除されました。有効化された webhook リスナーは、いかなるデプロイトポロジーにおいても晒されるべきではない無条件のリスクとして扱われます。この状況にある運用者は secret を設定し、リスナーを既存のリバースプロキシの背後に置いたままにするか、引き続きプライベートネットワークにバインドしてください。どちらでも問題ありません。今や重要な役割を担うのはシークレットです。

アウトバウンド

send_url を設定すると、すべてのエージェントの応答が、その URL への HTTP リクエストとして配信されます。

{send_method} {send_url}
Authorization: {auth_header}    # auth_header が設定されている場合のみ
Content-Type: application/json

{
  "content": "agent reply text",
  "thread_id": "optional thread id",
  "recipient": "optional recipient id"
}
  • send_methodPOST(デフォルト)または PUT です。それ以外の値は POST にフォールバックします。
  • auth_headerAuthorization ヘッダーの値としてそのまま送信されるため、スキーム自体を含めてください(例: Bearer xyzBasic dXNlcjpwYXNz)。
  • recipient は空の場合は省略されます。
  • 非 2xx レスポンスはログにエラーを発生させます。エージェントの応答は失敗とみなされます。

send_url が設定されていない場合、エージェントの応答は警告なく破棄されます(debug レベルでログに記録されます)。これは、応答が別のチャネルを通じて配信される、ファイア・アンド・フォーゲット型のインバウンドフローに適した設定です。

公開

チャネルは 0.0.0.0 に直接バインドされます。これをパブリックインターネット上に公開するには:

  1. リバースプロキシ: nginx / Caddy / Traefik で TLS を終端し、チャネルのポートにプロキシします。運用 → ネットワークデプロイメント を参照してください。
  2. トンネル: [tunnel]ngrokcloudflare、または tailscale)を設定すると、デーモンがチャネルとともにトンネルを起動します。
  3. ローカル限定: プライベートネットワーク内で実行し、プロデューサーから LAN/ループバックアドレスに直接アクセスさせます。

公開する場合は必ず secret と併用してください。認証なしの Webhook リスナーは、エージェントへの無防備な入口になります。

アウトバウンドの再試行

send_url が設定されている場合、送信側の配信は一時的な失敗、ネットワークエラー、HTTP 429、HTTP 5xx を再試行し、指数バックオフ(±25% のジッター)を用い、retry_max_delay_ms を上限とします。429 以外の 4xx 応答は再試行せず即座に失敗します。サーバーが 429 または 503Retry-After ヘッダーを返した場合、その値が尊重され、同じく retry_max_delay_ms で制限されます。max_retries = 0 を設定すると、送りっぱなし(fire-and-forget)になります。

関連項目も参照してください