HTTP 通用接入(HTTP Bot)是一个面向服务间集成的通用适配器。任意后端系统(工单系统、CRM、内部工具、自研 Web 应用等)都可以通过它驱动 LangBot 流水线:
- 入站:你的后端将消息以签名方式
POST到 LangBot 的固定地址; - 出站:LangBot 把回复
POST到你配置的回调地址。
- 消息聚合(多条合一,N→1):用户连发多条消息,合并成一轮处理;
- 多段回复(一问多答,1→M):一轮对话可产生多条回复(函数调用、插件多条消息、流式分片)。
如果你要的是浏览器内的实时聊天组件,请使用页面机器人。HTTP 通用接入是为后端到后端的集成设计的。
工作原理
- (1) 入站是「先收下、后处理」:LangBot 立即返回
202 Accepted,不会在该响应里带流水线结果; - (2) 出站回复随后以独立的签名 POST 发到你的
回调地址,一轮对话可能产生多次回调; - 一切都以你自定义的
session_id(如工单号)为键,每个session_id对应一个独立会话。
创建机器人
打开 LangBot WebUI,进入机器人 > 创建机器人,填写名称,平台/适配器选择HTTP 通用接入。
配置项
创建并绑定流水线、启用后,配置页会显示入站 Webhook 地址,形如
https://your-langbot/bots/<bot_uuid>,复制备用。
签名方案
两个方向都使用同一套零依赖的 HMAC-SHA256 方案:
校验出站回调时同理,使用出站密钥(留空则用入站密钥)。
发送第一条消息(curl)
入站消息格式
POST /bots/{bot_uuid}
session_id(必填):你的稳定标识,1:1 映射到一个 LangBot 会话;message(必填):LangBot 消息链。文本用{"type":"Plain","text":"..."},图片用{"type":"Image","url":"..."}(或base64);其余支持Voice、File、At、Quote。
消息聚合(N → 1)
若流水线启用了消息聚合,用相同的session_id在聚合窗口内连发多条消息,它们会被合并为一轮处理。无需任何特殊标记,复用 session_id 即可。
出站回调格式
LangBot 将每段回复 POST 到你的回调地址:2xx。非 2xx 或超时,LangBot 会按指数退避重试。
多段回复(1 → M)
一轮对话可能产生多次回调,对同一会话按sequence 顺序送达:
session_id + sequence 拼接;收到 is_final: true 表示本轮结束。
重置会话
为某个session_id 开启全新会话(清空历史):
同步便利模式
若你不需要流式/多段,只想在同一次 HTTP 调用里拿回复,可 POST 到/sync。LangBot 会等待本轮结束,把所有回复段折叠成一个数组返回:
错误码
参考客户端与 5 分钟体验
LangBot 主仓的examples/http-bot/ 提供了一个交互式调试台和 Python / TypeScript 参考客户端。
交互式调试台(推荐先跑这个)
playground.py 是一个单文件网页应用:在浏览器里打字 → 自动签名后真实发往运行中的 http_bot 机器人 → 回复经回调实时显示在页面上,右侧调试面板展示签名、202 确认、以及每条回调的 sequence 与验签结果。
data/langbot.db 读取 API Key 与 http_bot 机器人,并通过 LangBot API 把该机器人的回调地址和密钥指向自身(机器人热加载,无需重启)。前提:有一个已启用、且绑定了可用流水线的 http_bot 机器人。
命令行参考客户端
examples/http-bot/ 还提供了 Python 与 TypeScript 参考客户端(含回调接收器):
[part ] / [FINAL])并带序号——这就是 1→M 多段回复、签名校验通过的实时效果。
机器可读契约见主仓 docs/http-bot-openapi.json。
安全清单
- 生产环境保持强制入站签名校验开启;
- 回调地址使用 HTTPS,且只能在配置中设置(不可逐条覆盖);
- 密钥按密码对待,通过控制台轮换;
- 入站路由在框架层是无鉴权的(有意设计),安全完全依赖 HMAC 签名——公网部署绝不要关闭它。
