微信公众号适配器
@onebots/adapter-wechat 使用微信公众平台官方 API,接收安全 Webhook,并通过 OneBots 协议层向下游提供事件与 API。
安装与配置
在 Web 控制台打开「功能扩展」并选择对应适配器;也可以运行:
bash
onebots ui --data-dir <workspace> --setup管理服务会将适配器及其必需的对等依赖安装到经过验证的不可变运行代。请勿在 OneBots 运行目录中直接执行包管理器安装命令。
yaml
wechat.my_mp:
app_id: wx1234567890abcdef
app_secret: your_app_secret
token: your_webhook_token
encoding_aes_key: your_43_character_key
passive_reply_timeout_ms: 4500
deduplicate_webhooks: true
onebot.v11:
use_http: true
use_ws: true在公众平台将服务器 URL 配置为 https://bot.example.com/wechat/my_mp/webhook。默认路径为 /wechat/{account_id}/webhook,可用 webhook_path 覆盖。生产环境建议启用安全模式并配置 encoding_aes_key。
能力边界
- 公众号会话只有用户私聊,不存在群聊;用户标签不会被映射为群组。
- 接收文本、图片、语音、视频、短视频、位置、链接以及所有事件通知。
- 发送文本、媒体、图文和原生
wechat_message;媒体须先取得media_id。 reply段可在 Webhook 窗口内提交被动回复,超时后发送客服消息。- 用户、标签、黑名单、素材、草稿、发布、菜单、二维码、模板、订阅通知和群发均有原生动作。
- 网页授权动作闭合授权地址、code 换取/刷新 OAuth token、用户资料与 token 校验,并与公众号全局 access token 隔离。
- 稳定版 access token 避免普通刷新使其他进程的凭据失效;JS-SDK ticket 使用独立缓存,并可生成已移除 URL fragment 的签名配置;配额、RID、API 域名、回调 IP 与回调连通性均有诊断动作。
- Webhook 与 manual 接入共享 Client 内的异步确认、并发合并与去重状态。
- 未命名的新接口可通过
wechat_call调用,且仍使用统一 token 缓存与结构化错误。 - 标准
get_user_info接收 canonicaluser_id;需指定微信原生语言时使用get_wechat_user_info(openid, lang?),不会与标准动作重名。
所有事件均保留 raw_event;嵌套 XML 的完整原文位于 raw_event.RawXml。
完整动作和底层接入示例见 包 README。