LangBot Docs

微信公众号

通过微信开发者平台配置消息推送,将微信公众号接入 LangBot。

本教程使用微信公众平台完成账号注册和主体实名认证,在微信开发者平台配置应用密钥、消息推送和 API IP 白名单。

1. 注册公众号并完成主体实名认证

进入微信公众平台。已有公众号可直接扫码登录;尚未注册时,点击「立即注册」,选择「公众号」,按提示完成注册。

进入「设置与开发 → 账号设置 → 账号详情」,找到页面底部的「主体信息」,点击「详情」。如果显示「待完善」,请先完成主体信息。

账号详情页面底部的主体信息入口

在主体信息页面点击「实名验证」,按照微信提示完成实名认证。

主体信息页面的实名验证按钮

这里需要完成的是「主体信息」中的实名验证。账号详情中还有「申请微信认证」「个人认证」等入口,请按截图进入主体信息页面操作。

2. 获取应用信息并创建 LangBot 机器人

前往微信开发者平台,进入公众号设置,选择要接入的公众号,打开「基础信息」。页面包含 AppID、「开发密钥」以及「域名与消息推送配置」。

微信开发者平台的公众号基础信息、开发密钥及消息推送入口

在 LangBot 中新建机器人,选择「微信公众号」适配器,进入机器人配置页:

  1. 复制微信开发者平台中的 AppID,填写到 LangBot 的「应用 ID」。
  2. 在微信开发者平台的「开发密钥」区域点击 AppSecret 的「重置」,按提示获取密钥,填写到 LangBot 的「应用密钥」。首次使用时,如果按钮显示为「启用」,先按提示启用 AppSecret。
  3. 点击 LangBot 的「保存并启用」,保存机器人并启用。

下面是 LangBot 适配器配置区域。图中的「令牌」和「消息加解密密钥」会在下一步与微信平台一起配置。

LangBot 微信公众号适配器的回调地址及配置字段

3. 启用消息推送并配置回调

回到微信开发者平台,在「基础信息」页面下方的「域名与消息推送配置」区域,点击「消息推送」旁的「启用」。

在「配置消息推送」弹窗中按以下顺序填写,暂时不要点击「确定」:

  1. URL:复制 LangBot 机器人配置页显示的完整「Webhook 回调地址」并粘贴。地址通常为 https://你的域名/bots/机器人UUID,请保留完整路径。
  2. Token:自行设置一个符合微信页面要求的 Token,并将同一个值填入 LangBot 的「令牌」。两边必须完全一致。
  3. EncodingAESKey:点击微信平台的「随机生成」,复制生成的值,填入 LangBot 的「消息加解密密钥」。
  4. 消息加密:选择「安全模式(推荐)」。
  5. 数据格式:选择 XML。

微信开发者平台的配置消息推送弹窗

两个平台的配置对应关系如下:

微信开发者平台LangBot
AppID应用 ID
AppSecret应用密钥
URLWebhook 回调地址(从 LangBot 复制)
Token令牌
EncodingAESKey消息加解密密钥

保持微信平台弹窗开启,回到 LangBot 再次保存机器人。确认机器人已启用且配置成功应用后,再回到微信平台点击「确定」。微信会访问回调地址进行验证,通过后消息推送配置即完成。

Webhook 回调地址需要能够从公网访问,建议使用 HTTPS。自部署可参考配置 HTTP 反向代理和 SSL,将公网域名转发到 LangBot 服务。使用 HTTP 时需使用 80 端口,HTTPS 使用 443 端口。

如页面显示的仍是本地地址,请将实例 data/config.yaml 中的 api.webhook_prefix 设置为公网地址,例如 https://bot.example.com,重启 LangBot 后重新复制回调地址。LangBot Cloud 提供可直接使用的公网回调地址。

常见错误:请求失败,HTTP 返回非 200

如果点击微信平台的「确定」后出现此提示,请依次检查:

  • URL 正确且公网可达:使用 LangBot 显示的完整回调地址,包含 /bots/机器人UUID。本机地址、内网地址或仅填写域名首页均不能作为此机器人的回调地址。
  • 机器人已保存并启用:填写 Token 和 EncodingAESKey 后,需要先在 LangBot 保存,再在微信平台确认。
  • 字段一致:Token、EncodingAESKey 必须与 LangBot 完全一致;AppID、AppSecret 必须属于当前选择的公众号,复制时不要带入多余空格或换行。
  • 转发配置有效:检查反向代理或隧道是否仍在运行、HTTPS 证书是否有效,以及回调是否被登录验证或访问控制拦截。

旧界面可能显示「系统发生错误,请稍后重试」,同样可以按上述项目检查,并查看 LangBot 的机器人日志定位错误。

4. 配置 API IP 白名单

在微信开发者平台「基础信息 → 开发密钥」中找到 API IP 白名单,填入部署 LangBot 的服务器访问微信 API 时使用的公网出站 IP,保存配置。截图中未启用 AppSecret 时,该项会提示「启用 AppSecret 后,可配置」。

可以从服务器或云平台的网络配置中查找出站 IP。如果 LangBot 通过 NAT 网关或代理访问微信 API,应填写实际出口的公网 IP;存在多个出口时,按微信页面要求将它们加入白名单。

回调 URL 用于微信向 LangBot 推送事件;API IP 白名单用于 LangBot 调用微信接口。使用反向代理或 Cloudflare Tunnel 提供回调地址时,白名单仍应填写 LangBot 访问微信 API 的出站 IP,而不是回调域名解析出的 CDN 地址。

接入模式与后续使用

在新版「微信公众号」适配器的「接入模式」中选择回复方式,保存后生效。已有机器人不会自动切换模式;默认值仍为 drop。旧版适配器不提供 auto,请使用新版适配器。

接入模式(Mode)回复机制适用场景
auto先返回加载提示,后台生成回复;通过客服接口发送,受限时改为下一条消息领取。希望生成完成后直接收到回复,或不确定账号是否具有客服接口权限。
passive先返回加载提示,后台生成回复;用户再发任意内容领取,不调用客服接口。没有客服接口权限,或希望始终使用领取方式。
drop(默认)在当前微信回调内直接返回回复,不调用客服接口,也不会自动转为领取方式。能在 5 秒内完成的快速回复;不适合耗时较长的 AI 生成。

auto 如何自动选择回复方式?

auto 不会预先查询或要求填写账号认证状态,而是在处理器发送回复时,根据微信客服接口的实际返回结果决定:

  1. 收到用户消息后,先返回加载提示,处理器在后台继续运行。
  2. 处理器生成并发送回复时,LangBot 尝试调用客服接口。成功后,用户直接收到回复,不必再发消息领取。
  3. 微信明确返回无接口权限(48001)、超过回复时限(45015)、下发额度用尽(45047)或接收者未关注(43004)时,LangBot 缓存回复。用户随后向公众号发送任意内容,即可通过这次回调领取。

这个判断针对每次回复,不会把账号永久标记为“无权限”。AppID、AppSecret、IP 白名单错误以及网络异常等其他失败会记录报错,不会一律当作权限不足并回退。收到加载提示只能说明消息已进入处理流程;排查未收到回答时,还需要查看处理器执行日志。

认证与回复窗口有什么关系?

被动回调和客服消息是两种不同的回复渠道。 微信要求被动回调在 5 秒内响应;认证不会延长这个时间。drop 使用的就是被动回调,不能把微信重试当成稳定的 15 秒生成窗口。被动回复官方说明

客服接口允许在回调结束后发送回复。微信官方当前标明,公众号、服务号需企业主体已认证才能调用;前文的「主体实名验证」不等于取得客服接口权限。具体以账号实际权限和微信接口返回为准。

用户操作客服消息下发额度有效期
发送消息5 条48 小时
点击符合条件的自定义菜单、关注、扫描二维码3 条1 分钟

这些是微信客服接口的限制,不是 AI 的生成超时设置,也不是所有事件都享有 48 小时窗口。规则可能调整,请以微信客服消息官方文档为准。

如何领取回复和设置加载提示?

在 passive 或 auto 回退后,用户发送的下一条消息用于领取上一轮回答,不会同时作为新的问题交给处理器。如果回答尚未生成,仍会返回加载提示;稍后再发送任意内容即可。领取完成后,再发送新的问题。

LoadingMessage 对 auto 和 passive 都有效,对 drop 无效。可以按模式修改,例如:

  • auto:「正在处理,请稍候。若未收到回复,请稍后发送任意内容领取。」
  • passive:「AI 正在思考中,请稍后发送任意内容获取回复。」

将加载提示留空时,LangBot 只向微信确认接收,不发送可见的加载消息。待领取回复保存在内存中,重启 LangBot 或重新加载机器人配置会清空,因此请在修改配置后重新发起对话。三种模式仍受微信消息内容和长度限制。

连接处理器

完成平台配置后,在 LangBot 的「事件路由」中将「收到消息」连接到需要使用的流水线、Agent 或插件处理器,再关注公众号并发送消息。

接入模式只决定回复如何送达,不会自动把 Agent 的所有文本输出发送到微信。使用 Agent 时,请批准「回复当前会话」工具,并在指令中要求使用该工具回复;使用插件处理器时,需要插件调用回复接口。

On this page