OpenClaw 的 环信IM (Easemob) 通道插件,让你的 AI 代理可以通过环信平台与用户聊天。
openclaw plugins install @saber3555/openclaw-easemob-
登录 环信控制台
-
创建新应用或选择现有应用
-
在「应用概览」中获取:
- OrgName - 组织名称
- AppName - 应用名称
- Client ID - 客户端 ID
- Client Secret - 客户端密钥
-
在 「运营管理/运营操作」 创建一个用户作为机器人账号
openclaw channels add选择 Easemob 后,按提示输入:
- OrgName
- AppName
- Client ID
- Client Secret
- 机器人用户名
- 确保 OpenClaw Gateway 可以从公网访问
- 登录环信控制台
- 进入「应用设置」→「消息回调」
- 添加回调 URL:
https://your-gateway-host就是访问 OpenClaw Control UI,默认为 127.0.0.1:18789,这里需要能从公网访问。- 在后面拼接
/webhooks/easemob
https://your-gateway-host/webhooks/easemob
- 选择回调类型: 单聊消息
- 保存配置
现在用户可以通过环信向你的机器人发送消息了!
配置文件位置: ~/.openclaw/openclaw.json
{
"channels": {
"easemob": {
"accounts": {
"robot_username": {
"accountId": "robot_username",
"orgName": "your-org",
"appName": "your-app",
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"enabled": true,
"dmPolicy": "pairing",
"allowFrom": ["user1", "user2"],
"showToolCalls": "full"
}
}
}
}
}| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
accountId |
string | ✅ | 环信用户 ID (用户名) |
orgName |
string | ✅ | 环信组织名称 |
appName |
string | ✅ | 环信应用名称 |
clientId |
string | ✅ | 环信 Client ID |
clientSecret |
string | ✅ | 环信 Client Secret |
enabled |
boolean | ❌ | 是否启用此账号 |
name |
string | ❌ | 显示名称 |
dmPolicy |
string | ❌ | DM 策略: open/pairing/allowlist |
allowFrom |
array | ❌ | 允许列表 |
showToolCalls |
string | ❌ | 是否显示工具调用详情: "off"/"on"/"full" (默认: "off") |
pairing(默认) - 需要用户先与代理配对allowlist- 只允许列表中的用户发送消息open- 允许任何用户发送消息(不推荐)
控制是否向用户实时显示 AI 工具调用的详细过程。
| 模式 | 说明 | 示例输出 |
|---|---|---|
"off" (默认) |
只发送最终答案,隐藏所有工具调用过程 | "今天北京天气晴朗,25°C" |
"on" |
显示工具开始/结束状态 | "正在查询天气..." → 最终答案 |
"full" |
显示完整工具输出,包括执行结果 | "正在查询天气..." → "API返回: {温度:25,天气:晴}" → 最终答案 |
配置示例:
{
"channels": {
"easemob": {
"accounts": {
"robot_username": {
"accountId": "robot_username",
"orgName": "your-org",
"appName": "your-app",
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"showToolCalls": "full"
}
}
}
}
}验证方法:
- 配置
showToolCalls: "full" - 向机器人发送需要工具调用的消息,如:"查询北京天气"
- 观察是否收到多条消息:
- 工具开始提示(如"正在查询天气...")
- 工具执行结果(如 API 返回的原始数据)
- 最终整理后的答案
实现逻辑:
插件通过以下机制实现工具调用显示:
- Session 级别设置:根据
showToolCalls配置,自动设置对应 session 的verboseLevel字段 - Dispatcher 回调:在
dispatchReplyFromConfig中注册sendToolResult回调函数 - 实时推送:当 OpenClaw Agent 执行工具时,通过回调将工具状态/结果实时发送给用户
- 非阻塞发送:使用
void sendMessageToUser()异步发送,不影响主流程
核心代码位于 src/index.ts:180-260,通过修改 ~/.openclaw/agents/main/sessions/sessions.json 中的 verboseLevel 来控制 OpenClaw 的详细输出级别。
# 查看通道状态
openclaw channels status
# 测试发送消息
openclaw message send --channel easemob --to <user_id> "Hello!"
# 查看配置
openclaw config get channels.easemob
# 重新配置
openclaw channels add
# 禁用通道
openclaw config set channels.easemob.enabled false
# 查看网关日志
openclaw gateway logs
# 调试模式运行网关
DEBUG=easemob openclaw gateway run# 克隆仓库
git clone https://github.com/XuCpeng/openclaw-easemob.git
cd openclaw-easemob
# 安装依赖
pnpm install
# 构建
pnpm run build
# 本地安装到 OpenClaw
openclaw plugins install ./
# 重新安装(自动保留配置)
./local-reinstall.sh
# 开发模式(自动重编译)
pnpm run devA: 请检查:
- Gateway 是否运行:
openclaw gateway status - Webhook URL 是否正确配置
- 防火墙是否允许外部访问 Gateway 端口
- 环信控制台中的回调是否启用
A: 插件会自动管理 Token,在过期前自动刷新,无需手动处理。
A: 当前版本 (P0) 仅支持单聊。群聊支持将在后续版本添加。
A: 在 accounts 对象中添加多个账号配置:
{
"accounts": {
"robot1": { ... },
"robot2": { ... }
}
}本插件采用 Webhook 网关模式:
用户手机 ──→ 环信服务器 ──→ OpenClaw Gateway ──→ OpenClaw Agent
(Webhook)
- 不保持长连接,通过环信 Webhook 接收消息
- 通过 REST API 发送消息
- 支持 OAuth2 Token 自动管理
详细设计说明见 ARCHITECTURE.md
欢迎提交 Issue 和 PR!
MIT License - 详见 LICENSE
Made with ❤️ by XuCpeng


