Token导航 LogoToken导航

Agent Skill · 开发

eoffice-im(电子办公即时通讯)

eoffice-im 用于补充开发相关能力,适合在 OpenClaw 中需要让 Agent 承接开发相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

eoffice-im 是开发类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描有提醒项,按安装量在开发类的 21,746 个 Skill 里排第 7,137。

总安装 4,039周安装 170GitHub Stars 公开资料未说明下载 1,414核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:eoffice-im(电子办公即时通讯)
来源仓库:https://github.com/quanruxiaohong/eoffice-im
安装命令:
openclaw skills install eoffice-im
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install eoffice-im

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

提供微泛 e-office 即时通讯(IM)WebSocket API 支持,涵盖私聊与群聊功能。适合在 OpenClaw 中扩展内部通信或协作开发能力。通过 OpenClaw 的 clawhub 安装,调用前需确认网络权限和认证机制。涉及用户数据时应遵守隐私保护规范,避免越权访问。

建议查阅仓库文档了解 API 版本和兼容性要求。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install eoffice-im;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

eoffice-im 怎么安装?

在终端执行 openclaw skills install eoffice-im。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

eoffice-im 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

eoffice-im 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

eoffice-im 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

eoffice-im 用的人多吗?

公开数据是累计安装 4,039 次,近一周安装 170 次,下载 1,414 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

eoffice-im 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
eoffice-im

电子办公即时通讯 · 本页

4,039—需要联网MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
eoffice-im
description
泛微 e-office 即时通讯(IM)WebSocket API - 私聊、群聊等
version
1.0.0
homepage
https://github.com/yourname/eoffice-im-skill
metadata
emoji
💬
requires
env
primaryEnv
EOFFICE_IM_TOKEN

e-office 即时通讯(IM)Skill

当用户提到以下场景时使用此 skill:

  • 发送即时消息给用户或群组
  • 查询聊天记录
  • 管理群组成员
  • 获取用户在线状态
  • 任何涉及即时通讯的操作

连接方式

WebSocket 连接

WebSocket URL: ws://{EOFFICE_IM_BASE_URL}/

连接参数

连接时需要在 handshake 中传递:

参数说明
token访问令牌
connectType连接类型:web、mobile、client
loginUserId登录用户 ID

连接示例(JavaScript)

import { io } from 'socket.io-client';

const socket = io('http://localhost:3000', {
  auth: {
    token: 'your-token-here'
  },
  query: {
    connectType: 'web',
    loginUserId: 'admin'
  }
});

socket.on('connect', () => {
  console.log('Connected to IM server');
});

socket.on('private message', (msg) => {
  console.log('Received message:', msg);
});

环境配置

变量必填说明示例
EOFFICE_IM_BASE_URL是IM 服务地址http://localhost:3000
EOFFICE_IM_TOKEN是访问令牌从 OA 登录获取

发送消息

发送私聊消息

socket.emit('send message', {
  type: 'user',
  message_id: Date.now(),
  message_content: '消息内容(AES加密)',
  text_message_content: '消息内容(原文)',
  message_type: 1,  // 1=text, 2=image, 3=file
  sender: 'user_id',
  chat_object_id: 'room_id',
  to: 'receiver_user_id',
  sender_name: '发送者姓名'
});

响应:服务器返回相同的消息对象(包含 send_time)

发送群聊消息

socket.emit('send message', {
  type: 'personal_group',  // 或 'public_group'
  message_id: Date.now(),
  message_content: '消息内容(AES加密)',
  text_message_content: '消息内容(原文)',
  message_type: 1,
  sender: 'user_id',
  room_id: 'room_id',
  members: ['user1', 'user2'],
  group_name: '群名称',
  sender_name: '发送者姓名',
  at_list: [{user_id: 'xxx', user_name: 'xxx'}]  // @人员
});

响应:服务器推送到 group message 事件

消息类型

type 值说明
user私聊消息
personal_group私人群聊
public_group公共群
message_type 值说明
1文本消息
2图片消息
3文件消息

接收消息

监听私聊消息

socket.on('private message', (msg) => {
  console.log('私聊消息:', msg);
});

监听群聊消息

socket.on('group message', (msg) => {
  console.log('群聊消息:', msg);
});

消息操作

消息已读 - 私聊

socket.emit('user readed', {
  chat_id: 'chat_object_id',
  toUserId: 'sender_user_id'
});

接收已读通知:

socket.on('message have read', (data) => {
  // { type: 'user', chat_id: 'xxx', read_time: timestamp, user_id: 'xxx' }
});

消息已读 - 群聊

socket.emit('group readed', {
  chat_id: 'room_id',
  toUserId: '群ID'
});

撤回消息

socket.emit('withdraw msg', {
  chat_id: 'room_id',
  message_id: 'message_id',
  type: 'user',  // 或 'group'
  toUserId: 'user_id',
  at_list: []
});

删除消息

socket.emit('delete msg', {
  chat_id: 'room_id',
  message_id: 'message_id'
});

群组管理

创建群组

socket.emit('create group', {
  room_id: 'room_id',
  members: ['user1', 'user2']  // 不包含创建者
});

添加群成员

socket.emit('user add group', {
  room_id: 'room_id',
  members: ['user3', 'user4']
});

接收通知:

socket.on('user add group', (data) => {
  // { room_id: 'xxx', members: ['user3', 'user4'] }
});

删除群成员

socket.emit('group delete user', {
  room_id: 'room_id',
  members: ['user_id']
});

解散群组

socket.emit('delete group', {
  room_id: 'room_id',
  members: ['user1', 'user2']
});

在线状态

获取在线用户

socket.emit('user onlineUsers', {}, (res) => {
  console.log(res);
  // {
  //   onlineUsers: ['user1', 'user2'],
  //   webUsers: [...],
  //   mobileUsers: [...],
  //   clientUsers: [...]
  // }
});

监听在线状态变化

socket.on('online user change', (data) => {
  // {
  //   online: { webUsers: [...], mobileUsers: [...], clientUsers: [...] },
  //   offline: { webUsers: [...], mobileUsers: [...], clientUsers: [...] }
  // }
});

修改工作状态

socket.emit('change work status', {
  userId: 'user_id',
  workStatus: 1  // 0=离线, 1=在线, 2=忙碌等
});

离线消息

获取离线消息

socket.emit('get offline info');

接收响应:

// 私聊离线消息
socket.on('user offline info', (messages, callback) => {
  console.log('离线私聊消息:', messages);
  callback('success');  // 确认已接收
});

// 群聊离线消息
socket.on('group offline info', (messages, callback) => {
  console.log('离线群聊消息:', messages);
  callback('success');
});

消息格式

PersonalMessage 结构

{
  message_id: string | number;    // 消息ID
  reply_message_id?: string;        // 回复消息ID
  message_content: string;          // 加密后的消息内容
  text_message_content: string;    // 原文消息内容
  message_type: number;           // 消息类型
  sender: string;                  // 发送者ID
  send_time: number;               // 发送时间
  chat_object_id: string;         // 私聊房间ID
  withdraw: number;               // 是否撤回
  delete_user_id?: string;        // 删除消息的用户ID
  type: string;                    // 'user'
  sendType?: string;               // 发送状态
  to: string;                      // 接收者ID
  sender_name?: string;            // 发送者姓名
  reply?: any;                     // 回复内容
}

GroupMessage 结构

{
  message_id: string | number;    // 消息ID
  reply_message_id?: string;      // 回复消息ID
  message_content: string;        // 加密后的消息内容
  text_message_content: string;   // 原文消息内容
  message_type: number;          // 消息类型
  sender: string;                 // 发送者ID
  send_time: number;             // 发送时间
  withdraw: number;              // 是否撤回
  type: string;                  // 'personal_group' | 'public_group'
  sendType?: string;
  room_id?: string;              // 群房间ID
  members?: string[];            // 群成员列表
  sender_name?: string;          // 发送者姓名
  group_name?: string;           // 群名称
  at_list?: Array<{              // @人员列表
    user_id: string;
    user_name: string;
  }>;
}

连接管理

同步聊天列表

socket.emit('sync chat list');

页面通信(跨端同步)

socket.emit('page communication', {
  key: 'value'  // 任意数据
});

错误处理

监听错误事件:

socket.on('error', (error) => {
  console.error('Socket error:', error);
});

socket.on('connect_error', (error) => {
  console.error('Connection error:', error.message);
});

注意事项

  1. 消息加密:发送的消息内容需要使用 AES 加密(使用连接时提供的 crypto key)
  2. 离线消息:用户离线时,消息会存储在 Redis 中,用户上线后自动推送
  3. 多端同步:同一账号可以在 web、mobile、client 多端同时登录
  4. Token 有效期:注意处理 token 过期的情况

完整 API 文档

详见 references/im-api.md

平台分布

OpenClaw

78.51%
按下载量换算1,110

安全审计

VirusTotal

通过

ClawScan

可疑

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills