HTTP ボットアダプターは、任意のバックエンドシステムを LangBot パイプラインに接続します。チケットシステム、CRM、社内ツール、自作 Web アプリなど、すべてこれを通じてパイプラインを駆動できます。
- 受信:バックエンドが署名付きメッセージを LangBot の固定 URL に
POSTします; - 送信:LangBot が返信を設定済みのコールバック URL に
POSTします。
- メッセージ集約(N→1):ユーザーが連続して複数のメッセージを送ると、1 ターンにまとめて処理;
- マルチパート返信(1→M):1 ターンで複数の返信が発生し得る(関数呼び出し、複数メッセージのプラグイン、ストリーミング分割)。
ブラウザ内のリアルタイムチャットウィジェットが必要な場合は、ページボットを使用してください。HTTP ボットはバックエンド間連携のために設計されています。
仕組み
- (1) 受信は「まず受け取り、後で処理」:LangBot は即座に
202 Acceptedを返し、そのレスポンスにパイプライン結果は含めません; - (2) 送信返信は後で、独立した署名付き POST としてあなたの
callback_urlに届きます。1 ターンで複数回のコールバックが発生し得ます; - すべてはあなたが指定する
session_id(例:チケット番号)をキーとし、各session_idは 1 つの独立したセッションに対応します。
ボットの作成
LangBot WebUI でボット > ボット作成に進み、名前を入力し、プラットフォーム/アダプターにHTTP ボット を選択します。
設定項目
パイプラインにバインドして有効化すると、設定ページに受信 Webhook URL(
https://your-langbot/bots/<bot_uuid> の形式)が表示されます。コピーしてください。
署名スキーム
両方向で同じ依存関係なしの HMAC-SHA256 スキームを使用します。
送信コールバックの検証も同様に、送信シークレット(空なら受信シークレット)を使用します。
最初のメッセージを送る(curl)
受信リクエスト形式
POST /bots/{bot_uuid}
session_id(必須):あなたの安定した識別子、1 つの LangBot セッションに 1:1 対応;message(必須):LangBot メッセージチェーン。テキストは{"type":"Plain","text":"..."}、画像は{"type":"Image","url":"..."}(またはbase64);その他Voice、File、At、Quoteをサポート。
メッセージ集約(N → 1)
パイプラインでメッセージ集約が有効な場合、同じsession_id で集約ウィンドウ内に複数のメッセージを送ると、1 ターンにまとめられます。特別なフラグは不要、session_id を再利用するだけです。
送信コールバック形式
LangBot は各返信パートをコールバック URL に POST します。2xx を返してください。2xx 以外やタイムアウトの場合、LangBot は指数バックオフでリトライします。
マルチパート返信(1 → M)
1 ターンで複数のコールバックが発生し得て、同一セッションにはsequence 順で届きます。
session_id + sequence で結合します。is_final: true が届いたらそのターンは完了です。
セッションのリセット
あるsession_id の会話を新規に開始(履歴を破棄)します。
同期便利モード
ストリーミング/マルチパートが不要で、同じ HTTP 呼び出しで返信を受け取りたい場合は/sync に POST します。LangBot はターンの終了を待ち、すべての返信パートを 1 つの配列にまとめて返します。
エラーコード
リファレンスクライアントと 5 分デモ
メインリポジトリのexamples/http-bot/ にはインタラクティブなプレイグラウンドと Python / TypeScript のリファレンスクライアントがあります。
インタラクティブ・プレイグラウンド(まずこれを実行)
playground.py は単一ファイルの Web アプリです:ブラウザでメッセージを入力 → 署名して稼働中の http_bot ボットへ POST → 返信がページにストリーム表示され、右側のデバッグパネルに署名・202 確認・各コールバックの sequence と検証結果が表示されます。
data/langbot.db から API Key と http_bot ボットを読み取り、LangBot API 経由でそのボットの callback_url とシークレットを自分自身に向けます(ボットはライブリロード、再起動不要)。有効化され、動作するパイプラインにバインドされた http_bot ボットが必要です。
コマンドラインのリファレンスクライアント
examples/http-bot/ には Python と TypeScript のリファレンスクライアント(コールバックレシーバー付き)もあります。
[part ] / [FINAL])をシーケンス番号付きで表示します——これが署名検証済みの 1→M マルチパート返信のライブ動作です。
機械可読の契約はメインリポジトリの docs/http-bot-openapi.json にあります。
セキュリティチェックリスト
- 本番環境では受信署名を必須にするを有効に;
- コールバック URL は HTTPS を使用し、設定でのみ指定(メッセージ単位の上書き不可);
- シークレットはパスワードと同様に扱い、ダッシュボードでローテーション;
- 受信ルートはフレームワークレベルで未認証です(意図的な設計)。セキュリティは完全に HMAC 署名に依存するため、公開デプロイでは絶対に無効化しないでください。
