@jiexiaoyin/wecom-api 0.0.4 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish.yml +34 -0
- package/README.md +18 -8
- package/package.json +1 -1
- package/skills/wecom-api/SKILL.md +152 -28
- package/skills/wecom-api/index.js +226 -21
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Publish to npm and create Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
publish:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- uses: actions/setup-node@v4
|
|
17
|
+
with:
|
|
18
|
+
node-version: '20'
|
|
19
|
+
registry-url: 'https://registry.npmjs.org'
|
|
20
|
+
|
|
21
|
+
- name: Install dependencies
|
|
22
|
+
run: npm ci
|
|
23
|
+
|
|
24
|
+
- name: Publish to npm
|
|
25
|
+
run: npm publish --access public
|
|
26
|
+
env:
|
|
27
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
28
|
+
|
|
29
|
+
- name: Create GitHub Release
|
|
30
|
+
uses: softprops/action-gh-release@v2
|
|
31
|
+
with:
|
|
32
|
+
generate_release_notes: true
|
|
33
|
+
env:
|
|
34
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
package/README.md
CHANGED
|
@@ -28,23 +28,26 @@
|
|
|
28
28
|
|
|
29
29
|
## 安装
|
|
30
30
|
|
|
31
|
-
### 方式一:
|
|
31
|
+
### 方式一:npm 安装(推荐)
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
|
|
35
|
-
git clone https://github.com/jiexiaoyin/openclaw-wecom-api.git /root/.openclaw/extensions/wecom-api
|
|
36
|
-
|
|
37
|
-
# 安装依赖
|
|
38
|
-
cd /root/.openclaw/extensions/wecom-api
|
|
39
|
-
npm install
|
|
34
|
+
openclaw plugins install @jiexiaoyin/wecom-api
|
|
40
35
|
```
|
|
41
36
|
|
|
42
|
-
### 方式二:OpenClaw CLI
|
|
37
|
+
### 方式二:OpenClaw CLI(Git 克隆)
|
|
43
38
|
|
|
44
39
|
```bash
|
|
45
40
|
openclaw plugins install https://github.com/jiexiaoyin/openclaw-wecom-api
|
|
46
41
|
```
|
|
47
42
|
|
|
43
|
+
### 方式三:手动克隆
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
git clone https://github.com/jiexiaoyin/openclaw-wecom-api.git /root/.openclaw/extensions/wecom-api
|
|
47
|
+
cd /root/.openclaw/extensions/wecom-api
|
|
48
|
+
npm install
|
|
49
|
+
```
|
|
50
|
+
|
|
48
51
|
## 配置
|
|
49
52
|
|
|
50
53
|
### 1. 修改 openclaw.json
|
|
@@ -65,6 +68,8 @@ openclaw plugins install https://github.com/jiexiaoyin/openclaw-wecom-api
|
|
|
65
68
|
|
|
66
69
|
### 2. 创建 config.json
|
|
67
70
|
|
|
71
|
+
npm 安装方式会自动注册插件到 `openclaw.json`,但需要手动创建配置:
|
|
72
|
+
|
|
68
73
|
```bash
|
|
69
74
|
cd /root/.openclaw/extensions/wecom-api
|
|
70
75
|
cp config.example.json config.json
|
|
@@ -206,6 +211,11 @@ openclaw-wecom-api/
|
|
|
206
211
|
## 更新
|
|
207
212
|
|
|
208
213
|
```bash
|
|
214
|
+
# npm 安装方式
|
|
215
|
+
openclaw plugins update @jiexiaoyin/wecom-api
|
|
216
|
+
systemctl --user restart openclaw-gateway
|
|
217
|
+
|
|
218
|
+
# 或手动更新
|
|
209
219
|
cd /root/.openclaw/extensions/wecom-api
|
|
210
220
|
git pull
|
|
211
221
|
npm install
|
package/package.json
CHANGED
|
@@ -1,40 +1,164 @@
|
|
|
1
|
-
|
|
2
|
-
name: wecom-api
|
|
3
|
-
description: |
|
|
4
|
-
企业微信 API 工具库。激活当用户提到企业微信 API、wecom-api,或需要调用企业微信 API 时。
|
|
5
|
-
同时支持交互式配置:说"配置企业微信"或"设置wecom-api"来启动配置向导。
|
|
6
|
-
---
|
|
1
|
+
# WeCom API Skill
|
|
7
2
|
|
|
8
|
-
|
|
3
|
+
企业微信 API 调用技能,支持消息发送、客户管理、审批、会议、打卡、通讯录、素材等操作。
|
|
9
4
|
|
|
10
|
-
|
|
5
|
+
## 触发方式
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
当用户提到企业微信相关操作时自动触发,如"发送消息"、"查询客户"、"创建会议"等。
|
|
13
8
|
|
|
14
|
-
|
|
9
|
+
## 参数说明
|
|
15
10
|
|
|
16
|
-
|
|
17
|
-
配置企业微信
|
|
18
|
-
```
|
|
11
|
+
所有参数通过自然语言传递,支持以下字段:
|
|
19
12
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
| 参数 | 类型 | 说明 |
|
|
14
|
+
|------|------|------|
|
|
15
|
+
| userId / toUser | string | 用户ID或手机号/邮箱 |
|
|
16
|
+
| externalUserId | string | 外部联系人ID |
|
|
17
|
+
| agentId | string | 应用AgentID |
|
|
18
|
+
| content / text | string | 消息内容 |
|
|
19
|
+
| startTime / endTime | number | 时间戳(毫秒) |
|
|
20
|
+
| startDate / endDate | string | 日期(YYYY-MM-DD) |
|
|
21
|
+
| departmentId | number | 部门ID,默认1 |
|
|
22
|
+
| filePath | string | 文件路径 |
|
|
23
|
+
| chatId | string | 群ID |
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
## 支持的动作
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
### 💬 消息发送
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
| 动作 | 说明 |
|
|
30
|
+
|------|------|
|
|
31
|
+
| `send_message` | 发送文本消息(兼容旧名) |
|
|
32
|
+
| `send_text` | 发送文本消息 |
|
|
33
|
+
| `send_text_card` | 发送文本卡片 |
|
|
34
|
+
| `send_markdown` | 发送 Markdown 消息 |
|
|
35
|
+
| `send_template_card` | 发送模板卡片 |
|
|
36
|
+
| `send_image` | 发送图片消息 |
|
|
37
|
+
| `send_file` | 发送文件消息 |
|
|
38
|
+
| `send_video` | 发送视频消息 |
|
|
39
|
+
| `send_news` | 发送图文消息 |
|
|
40
|
+
|
|
41
|
+
### 👥 客户联系
|
|
42
|
+
|
|
43
|
+
| 动作 | 说明 |
|
|
44
|
+
|------|------|
|
|
45
|
+
| `get_customer_list` | 获取客户列表 |
|
|
46
|
+
| `get_customer_detail` | 获取客户详情 |
|
|
47
|
+
| `get_external_user_info` | 获取外部联系人信息 |
|
|
48
|
+
| `batch_get_customers` | 批量获取客户详情 |
|
|
49
|
+
| `update_customer_remark` | 更新客户备注 |
|
|
50
|
+
| `get_corp_tags` | 获取企业标签 |
|
|
51
|
+
| `add_corp_tag` | 添加企业标签 |
|
|
52
|
+
| `update_corp_tag` | 更新标签 |
|
|
53
|
+
| `get_groupchat_list` | 获取客户群列表 |
|
|
54
|
+
| `get_groupchat` | 获取客户群详情 |
|
|
55
|
+
|
|
56
|
+
### 📊 客户统计
|
|
57
|
+
|
|
58
|
+
| 动作 | 说明 |
|
|
59
|
+
|------|------|
|
|
60
|
+
| `get_user_client_stat` | 员工客户统计数据 |
|
|
61
|
+
| `get_all_user_client_stat` | 全量员工客户统计 |
|
|
62
|
+
| `get_user_client_detail` | 员工客户明细 |
|
|
63
|
+
| `get_group_chat_stat` | 客户群统计 |
|
|
64
|
+
| `get_user_lost_stat` | 客户流失统计 |
|
|
65
|
+
|
|
66
|
+
### 📋 审批
|
|
67
|
+
|
|
68
|
+
| 动作 | 说明 |
|
|
69
|
+
|------|------|
|
|
70
|
+
| `get_approval_list` | 获取审批列表 |
|
|
71
|
+
| `get_approval_detail` | 获取审批详情 |
|
|
72
|
+
| `get_template_detail` | 获取审批模板详情 |
|
|
73
|
+
| `submit_approval` | 提交审批 |
|
|
74
|
+
| `get_leave_config` | 获取假期配置 |
|
|
75
|
+
| `get_leave_balance` | 获取假期余额 |
|
|
76
|
+
| `create_template` | 创建审批模板 |
|
|
77
|
+
| `update_template` | 更新审批模板 |
|
|
78
|
+
|
|
79
|
+
### 📅 会议
|
|
80
|
+
|
|
81
|
+
| 动作 | 说明 |
|
|
82
|
+
|------|------|
|
|
83
|
+
| `create_meeting` | 创建会议 |
|
|
84
|
+
| `get_meeting_list` | 获取会议列表 |
|
|
85
|
+
| `get_meeting_detail` | 获取会议详情 |
|
|
86
|
+
| `cancel_meeting` | 取消会议 |
|
|
87
|
+
| `invite_meeting` | 邀请成员参会 |
|
|
88
|
+
|
|
89
|
+
### 🏢 通讯录
|
|
90
|
+
|
|
91
|
+
| 动作 | 说明 |
|
|
92
|
+
|------|------|
|
|
93
|
+
| `get_user_list` | 获取部门成员 |
|
|
94
|
+
| `get_department_users_detail` | 获取部门成员详情 |
|
|
95
|
+
| `get_department_list` | 获取部门列表 |
|
|
96
|
+
| `get_user` | 获取用户详情 |
|
|
97
|
+
| `get_user_by_mobile` | 手机号查用户 |
|
|
98
|
+
| `get_user_by_email` | 邮箱查用户 |
|
|
99
|
+
| `create_user` | 创建成员 |
|
|
100
|
+
| `update_user` | 更新成员信息 |
|
|
101
|
+
| `delete_user` | 删除成员 |
|
|
34
102
|
|
|
35
|
-
|
|
36
|
-
/skill wecom-api send_message --userId user001 --content "Hello"
|
|
103
|
+
### ⏰ 打卡
|
|
37
104
|
|
|
38
|
-
|
|
39
|
-
|
|
105
|
+
| 动作 | 说明 |
|
|
106
|
+
|------|------|
|
|
107
|
+
| `get_checkin_records` | 获取打卡记录 |
|
|
108
|
+
| `get_checkin_rules` | 获取打卡规则 |
|
|
109
|
+
|
|
110
|
+
### 📆 日程
|
|
111
|
+
|
|
112
|
+
| 动作 | 说明 |
|
|
113
|
+
|------|------|
|
|
114
|
+
| `create_calendar` | 创建日历 |
|
|
115
|
+
| `get_calendar` | 获取日历详情 |
|
|
116
|
+
| `create_event` | 创建日程事件 |
|
|
117
|
+
| `update_event` | 更新日程事件 |
|
|
118
|
+
| `delete_event` | 删除日程 |
|
|
119
|
+
| `add_event_attendees` | 添加参与者 |
|
|
120
|
+
|
|
121
|
+
### 📁 素材
|
|
122
|
+
|
|
123
|
+
| 动作 | 说明 |
|
|
124
|
+
|------|------|
|
|
125
|
+
| `upload_image` | 上传图片 |
|
|
126
|
+
| `upload_media` | 上传媒体文件 |
|
|
127
|
+
| `get_media` | 下载媒体文件 |
|
|
128
|
+
| `get_high_definition_voice` | 获取高清语音 |
|
|
129
|
+
|
|
130
|
+
### 📱 应用
|
|
131
|
+
|
|
132
|
+
| 动作 | 说明 |
|
|
133
|
+
|------|------|
|
|
134
|
+
| `get_agent_list` | 获取应用列表 |
|
|
135
|
+
| `get_agent` | 获取应用详情 |
|
|
136
|
+
| `set_agent` | 设置应用 |
|
|
137
|
+
|
|
138
|
+
### 🔧 工具
|
|
139
|
+
|
|
140
|
+
| 动作 | 说明 |
|
|
141
|
+
|------|------|
|
|
142
|
+
| `get_token` | 获取 AccessToken |
|
|
143
|
+
| `get_callback_ip` | 获取回调IP |
|
|
144
|
+
|
|
145
|
+
### ⚙️ 配置
|
|
146
|
+
|
|
147
|
+
| 动作 | 说明 |
|
|
148
|
+
|------|------|
|
|
149
|
+
| `status` / `show_config` | 查看当前配置 |
|
|
150
|
+
| `test_connection` | 测试连接 |
|
|
151
|
+
|
|
152
|
+
## 使用示例
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
发送消息给张三,内容是测试
|
|
156
|
+
查一下张三的客户列表
|
|
157
|
+
查询昨天的打卡记录
|
|
158
|
+
创建一个会议,主题是周会,时间是明天下午2点
|
|
159
|
+
查一下客户统计,从3月1日到3月7日
|
|
160
|
+
上传图片到素材库
|
|
161
|
+
获取审批列表,3月1日到3月7日
|
|
162
|
+
给李四添加客户备注
|
|
163
|
+
查一下客户群列表
|
|
40
164
|
```
|
|
@@ -230,24 +230,132 @@ async function executeAction(action, params) {
|
|
|
230
230
|
const wecom = getWecom();
|
|
231
231
|
const args = { ...params };
|
|
232
232
|
delete args.action;
|
|
233
|
-
|
|
233
|
+
|
|
234
234
|
try {
|
|
235
235
|
switch (action) {
|
|
236
|
+
|
|
237
|
+
// ========== 消息发送 ==========
|
|
236
238
|
case 'send_message':
|
|
237
239
|
return await wecom.message.sendText(args.userId, args.content, args.agentId);
|
|
238
|
-
|
|
240
|
+
|
|
241
|
+
case 'send_text':
|
|
242
|
+
return await wecom.message.sendText(args.toUser, args.content, args.agentId);
|
|
243
|
+
|
|
244
|
+
case 'send_text_card':
|
|
245
|
+
return await wecom.message.sendTextCard(args.toUser, args.title, args.content, args.agentId);
|
|
246
|
+
|
|
247
|
+
case 'send_markdown':
|
|
248
|
+
return await wecom.message.sendMarkdown(args.toUser, args.content, args.agentId);
|
|
249
|
+
|
|
250
|
+
case 'send_template_card':
|
|
251
|
+
return await wecom.message.sendTemplateCard(args.toUser, args.templateCard, args.agentId);
|
|
252
|
+
|
|
253
|
+
case 'send_image':
|
|
254
|
+
return await wecom.message.sendImage(args.toUser, args.mediaId, args.agentId);
|
|
255
|
+
|
|
256
|
+
case 'send_file':
|
|
257
|
+
return await wecom.message.sendFile(args.toUser, args.mediaId, args.agentId);
|
|
258
|
+
|
|
259
|
+
case 'send_video':
|
|
260
|
+
return await wecom.message.sendVideo(args.toUser, args.mediaId, args.agentId);
|
|
261
|
+
|
|
262
|
+
case 'send_news':
|
|
263
|
+
return await wecom.message.sendNews(args.toUser, args.articles, args.agentId);
|
|
264
|
+
|
|
265
|
+
// ========== 客户联系 ==========
|
|
239
266
|
case 'get_customer_list':
|
|
240
|
-
return await wecom.contact.getCustomerList(args.userId);
|
|
241
|
-
|
|
267
|
+
return await wecom.contact.getCustomerList(args.userId, args.cursor);
|
|
268
|
+
|
|
242
269
|
case 'get_customer_detail':
|
|
243
270
|
return await wecom.contact.getCustomerDetail(args.userId, args.externalUserId);
|
|
244
|
-
|
|
271
|
+
|
|
272
|
+
case 'get_external_user_info':
|
|
273
|
+
return await wecom.contact.getExternalUserInfo(args.userId);
|
|
274
|
+
|
|
275
|
+
case 'batch_get_customers':
|
|
276
|
+
return await wecom.contact.batchGetCustomers(args.userId, args.externalUserIds);
|
|
277
|
+
|
|
278
|
+
case 'update_customer_remark':
|
|
279
|
+
return await wecom.contact.updateCustomerRemark(args.userId, args.externalUserId, {
|
|
280
|
+
remark: args.remark,
|
|
281
|
+
description: args.description,
|
|
282
|
+
tagIds: args.tagIds
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
case 'get_corp_tags':
|
|
286
|
+
return await wecom.contact.getCorpTags();
|
|
287
|
+
|
|
288
|
+
case 'add_corp_tag':
|
|
289
|
+
return await wecom.contact.addCorpTag(args.groupId, args.tagName, args.groupName);
|
|
290
|
+
|
|
291
|
+
case 'update_corp_tag':
|
|
292
|
+
return await wecom.contact.updateCorpTag(args.tagId, args.tagName);
|
|
293
|
+
|
|
294
|
+
case 'get_groupchat_list':
|
|
295
|
+
return await wecom.contact.getGroupChatList(args.statusFilter, args.creatorUserid, args.limit, args.cursor);
|
|
296
|
+
|
|
297
|
+
case 'get_groupchat':
|
|
298
|
+
return await wecom.contact.getGroupChat(args.chatId);
|
|
299
|
+
|
|
300
|
+
// ========== 客户管理(独立模块) ==========
|
|
301
|
+
case 'get_all_customers':
|
|
302
|
+
return await wecom.customer.getCustomerList(args.userid);
|
|
303
|
+
|
|
304
|
+
case 'get_all_customer_detail':
|
|
305
|
+
return await wecom.customer.getCustomerDetail(args.externalUserId);
|
|
306
|
+
|
|
307
|
+
case 'batch_get_customers_by_user':
|
|
308
|
+
return await wecom.customer.batchGetByUser(args.userids);
|
|
309
|
+
|
|
310
|
+
case 'mark_customer_tag':
|
|
311
|
+
return await wecom.customer.markTag(args.externalUserId, args.tagIds, args.userid, args.operation);
|
|
312
|
+
|
|
313
|
+
// ========== 客户统计 ==========
|
|
314
|
+
case 'get_user_client_stat':
|
|
315
|
+
return await wecom.contact_stats.getUserClientStat(args.userId, args.startDate, args.endDate);
|
|
316
|
+
|
|
317
|
+
case 'get_all_user_client_stat':
|
|
318
|
+
return await wecom.contact_stats.getAllUserClientStat(args.startDate, args.endDate);
|
|
319
|
+
|
|
320
|
+
case 'get_user_client_detail':
|
|
321
|
+
return await wecom.contact_stats.getUserClientDetail(args.userId, args.startDate, args.endDate);
|
|
322
|
+
|
|
323
|
+
case 'get_group_chat_stat':
|
|
324
|
+
return await wecom.contact_stats.getGroupChatStat(args.startDate, args.endDate, args.userId, args.departmentId);
|
|
325
|
+
|
|
326
|
+
case 'get_user_lost_stat':
|
|
327
|
+
return await wecom.contact_stats.getUserLostStat(args.startDate, args.endDate, args.userId);
|
|
328
|
+
|
|
329
|
+
// ========== 审批 ==========
|
|
245
330
|
case 'get_approval_list':
|
|
246
|
-
return await wecom.approval.getApprovalIds(args.startTime, args.endTime);
|
|
247
|
-
|
|
331
|
+
return await wecom.approval.getApprovalIds(args.startTime, args.endTime, args.cursor, args.size);
|
|
332
|
+
|
|
248
333
|
case 'get_approval_detail':
|
|
249
334
|
return await wecom.approval.getApprovalDetail(args.spNo);
|
|
250
|
-
|
|
335
|
+
|
|
336
|
+
case 'get_template_detail':
|
|
337
|
+
return await wecom.approval.getTemplateDetail(args.templateId);
|
|
338
|
+
|
|
339
|
+
case 'submit_approval':
|
|
340
|
+
return await wecom.approval.submitApproval({
|
|
341
|
+
templateId: args.templateId,
|
|
342
|
+
callerUserid: args.userId,
|
|
343
|
+
...args.approvalData
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
case 'get_leave_config':
|
|
347
|
+
return await wecom.approval.getLeaveConfig();
|
|
348
|
+
|
|
349
|
+
case 'get_leave_balance':
|
|
350
|
+
return await wecom.approval.getLeaveBalance(args.userId);
|
|
351
|
+
|
|
352
|
+
case 'create_template':
|
|
353
|
+
return await wecom.approval.createTemplate(args.templateData);
|
|
354
|
+
|
|
355
|
+
case 'update_template':
|
|
356
|
+
return await wecom.approval.updateTemplate(args.templateId, args.templateData);
|
|
357
|
+
|
|
358
|
+
// ========== 会议 ==========
|
|
251
359
|
case 'create_meeting':
|
|
252
360
|
return await wecom.meeting.createMeeting({
|
|
253
361
|
topic: args.topic,
|
|
@@ -255,28 +363,125 @@ async function executeAction(action, params) {
|
|
|
255
363
|
endTime: args.endTime,
|
|
256
364
|
organizers: [args.userId]
|
|
257
365
|
});
|
|
258
|
-
|
|
366
|
+
|
|
367
|
+
case 'get_meeting_list':
|
|
368
|
+
return await wecom.meeting.getMeetingList(args.userId, args.startTime, args.endTime, args.cursor);
|
|
369
|
+
|
|
370
|
+
case 'get_meeting_detail':
|
|
371
|
+
return await wecom.meeting.getMeetingDetail(args.meetingId);
|
|
372
|
+
|
|
373
|
+
case 'cancel_meeting':
|
|
374
|
+
return await wecom.meeting.cancelMeeting(args.meetingId, args.userId);
|
|
375
|
+
|
|
376
|
+
case 'invite_meeting':
|
|
377
|
+
return await wecom.meeting.inviteMeeting(args.meetingId, args.userIds);
|
|
378
|
+
|
|
379
|
+
// ========== 通讯录 ==========
|
|
259
380
|
case 'get_user_list':
|
|
260
381
|
return await wecom.addressbook.getDepartmentUsers(args.departmentId || 1, args.fetchChild || false);
|
|
261
|
-
|
|
382
|
+
|
|
383
|
+
case 'get_department_users_detail':
|
|
384
|
+
return await wecom.addressbook.getDepartmentUsersDetail(args.departmentId || 1, args.fetchChild || false);
|
|
385
|
+
|
|
262
386
|
case 'get_department_list':
|
|
263
387
|
return await wecom.addressbook.getDepartmentList(args.departmentId);
|
|
264
|
-
|
|
388
|
+
|
|
389
|
+
case 'get_user':
|
|
390
|
+
return await wecom.addressbook.getUser(args.userId);
|
|
391
|
+
|
|
392
|
+
case 'get_user_by_mobile':
|
|
393
|
+
return await wecom.addressbook.getUserIdByMobile(args.mobile);
|
|
394
|
+
|
|
395
|
+
case 'get_user_by_email':
|
|
396
|
+
return await wecom.addressbook.getUserIdByEmail(args.email);
|
|
397
|
+
|
|
398
|
+
case 'create_user':
|
|
399
|
+
return await wecom.addressbook.createUser(args.userData);
|
|
400
|
+
|
|
401
|
+
case 'update_user':
|
|
402
|
+
return await wecom.addressbook.updateUser(args.userData);
|
|
403
|
+
|
|
404
|
+
case 'delete_user':
|
|
405
|
+
return await wecom.addressbook.deleteUser(args.userId);
|
|
406
|
+
|
|
407
|
+
// ========== 打卡 ==========
|
|
265
408
|
case 'get_checkin_records':
|
|
266
409
|
return await wecom.checkin.getCheckInRecords(args.startTime, args.endTime, args.userId);
|
|
267
|
-
|
|
268
|
-
case '
|
|
269
|
-
return await wecom.
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
410
|
+
|
|
411
|
+
case 'get_checkin_rules':
|
|
412
|
+
return await wecom.checkin.getCheckInRules(args.groupId);
|
|
413
|
+
|
|
414
|
+
// ========== 日程 ==========
|
|
415
|
+
case 'create_calendar':
|
|
416
|
+
return await wecom.schedule.createCalendar({
|
|
417
|
+
title: args.title,
|
|
418
|
+
color: args.color,
|
|
419
|
+
description: args.description,
|
|
420
|
+
shares: args.shares || []
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
case 'get_calendar':
|
|
424
|
+
return await wecom.schedule.getCalendar(args.calendarId);
|
|
425
|
+
|
|
426
|
+
case 'create_event':
|
|
427
|
+
return await wecom.schedule.createEvent({
|
|
428
|
+
calendarId: args.calendarId,
|
|
429
|
+
title: args.title,
|
|
430
|
+
startTime: args.startTime,
|
|
431
|
+
endTime: args.endTime,
|
|
432
|
+
attendees: args.attendees || [],
|
|
433
|
+
description: args.description,
|
|
434
|
+
location: args.location,
|
|
435
|
+
reminders: args.reminders
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
case 'update_event':
|
|
439
|
+
return await wecom.schedule.updateEvent(args.scheduleId, {
|
|
440
|
+
title: args.title,
|
|
441
|
+
startTime: args.startTime,
|
|
442
|
+
endTime: args.endTime,
|
|
443
|
+
attendees: args.attendees,
|
|
444
|
+
description: args.description,
|
|
445
|
+
location: args.location
|
|
446
|
+
});
|
|
447
|
+
|
|
448
|
+
case 'delete_event':
|
|
449
|
+
return await wecom.schedule.deleteEvent(args.scheduleId);
|
|
450
|
+
|
|
451
|
+
case 'add_event_attendees':
|
|
452
|
+
return await wecom.schedule.addEventAttendees(args.scheduleId, args.attendees);
|
|
453
|
+
|
|
454
|
+
// ========== 素材 ==========
|
|
455
|
+
case 'upload_image':
|
|
456
|
+
return await wecom.media.uploadImage(args.filePath);
|
|
457
|
+
|
|
458
|
+
case 'upload_media':
|
|
459
|
+
return await wecom.media.uploadMedia(args.filePath, args.type);
|
|
460
|
+
|
|
461
|
+
case 'get_media':
|
|
462
|
+
return await wecom.media.getMedia(args.mediaId, args.savePath);
|
|
463
|
+
|
|
464
|
+
case 'get_high_definition_voice':
|
|
465
|
+
return await wecom.media.getHighDefinitionVoice(args.mediaId, args.savePath);
|
|
466
|
+
|
|
467
|
+
// ========== 应用 ==========
|
|
274
468
|
case 'get_agent_list':
|
|
275
469
|
return await wecom.app.getAgentList();
|
|
276
|
-
|
|
470
|
+
|
|
471
|
+
case 'get_agent':
|
|
472
|
+
return await wecom.app.getAgent(args.agentId);
|
|
473
|
+
|
|
474
|
+
case 'set_agent':
|
|
475
|
+
return await wecom.app.setAgent(args.agentData);
|
|
476
|
+
|
|
477
|
+
// ========== 工具 ==========
|
|
277
478
|
case 'get_token':
|
|
278
|
-
return await wecom.
|
|
279
|
-
|
|
479
|
+
return await wecom.auth.getAccessToken();
|
|
480
|
+
|
|
481
|
+
case 'get_callback_ip':
|
|
482
|
+
return await wecom.auth.getCallbackIP();
|
|
483
|
+
|
|
484
|
+
// ========== 未知 ==========
|
|
280
485
|
default:
|
|
281
486
|
return { message: `未知的操作: ${action}` };
|
|
282
487
|
}
|