dingtalk-mcp 1.0.14 → 1.1.0

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.
Files changed (36) hide show
  1. package/README.md +15 -16
  2. package/dingtalk_calendar_mcp_server.yaml +1 -0
  3. package/dingtalk_department_mcp_server.yaml +2 -2
  4. package/dingtalk_notice_mcp_server.yaml +41 -17
  5. package/dingtalk_robot_im_mcp_server.yaml +3 -7
  6. package/dist/DingTalkMCPServer.d.ts +1 -0
  7. package/dist/DingTalkMCPServer.js +52 -39
  8. package/dist/cli.js +4 -1
  9. package/dist/index.js +2 -2
  10. package/dist/types.js +1 -1
  11. package/package.json +4 -2
  12. package/dingtalk_servicewindow_mcp_server.yaml +0 -109
  13. package/dist/DingTalkMCPServer.js.map +0 -1
  14. package/dist/cli.js.map +0 -1
  15. package/dist/index.js.map +0 -1
  16. package/dist/types.js.map +0 -1
  17. package/dist/utils/apiClient.d.ts +0 -49
  18. package/dist/utils/apiClient.d.ts.map +0 -1
  19. package/dist/utils/apiClient.js +0 -85
  20. package/dist/utils/apiClient.js.map +0 -1
  21. package/dist/utils/errorFormatter.d.ts +0 -44
  22. package/dist/utils/errorFormatter.d.ts.map +0 -1
  23. package/dist/utils/errorFormatter.js +0 -164
  24. package/dist/utils/errorFormatter.js.map +0 -1
  25. package/dist/utils/messageBuilder.d.ts +0 -57
  26. package/dist/utils/messageBuilder.d.ts.map +0 -1
  27. package/dist/utils/messageBuilder.js +0 -200
  28. package/dist/utils/messageBuilder.js.map +0 -1
  29. package/dist/utils/messageProcessor.d.ts +0 -36
  30. package/dist/utils/messageProcessor.d.ts.map +0 -1
  31. package/dist/utils/messageProcessor.js +0 -145
  32. package/dist/utils/messageProcessor.js.map +0 -1
  33. package/dist/utils/validator.d.ts +0 -64
  34. package/dist/utils/validator.d.ts.map +0 -1
  35. package/dist/utils/validator.js +0 -181
  36. package/dist/utils/validator.js.map +0 -1
package/README.md CHANGED
@@ -9,7 +9,6 @@
9
9
  - 钉钉待办
10
10
  - 钉钉日程
11
11
  - 钉钉签到
12
- - 钉钉服务窗
13
12
  - 钉钉工作通知
14
13
  - 钉钉应用管理
15
14
 
@@ -25,7 +24,8 @@
25
24
  ],
26
25
  "env": {
27
26
  "DINGTALK_Client_ID": "your dingtalk client id",
28
- "DINGTALK_Client_Secret": "your dingtalk client secret"
27
+ "DINGTALK_Client_Secret": "your dingtalk client secret",
28
+ "ACTIVE_PROFILES": "dingtalk-contacts,dingtalk-calendar"
29
29
  }
30
30
  }
31
31
  }
@@ -36,21 +36,20 @@
36
36
  2. DINGTALK_Client_Secret
37
37
  3. ACTIVE_PROFILES,激活哪些钉钉MCP服务,逗号风格,如果是ALL则激活全部。可选集合
38
38
 
39
- | ProfileId | Description | Permission |
40
- |-----------------------------|---------------|---------------------------------|
41
- | dingtalk-contacts | 钉钉通讯录 |
42
- | dingtalk-department | 钉钉部门管理 |
43
- | dingtalk-robot-send-message | 钉钉机器人发消息/DING |
44
- | dingtalk-honor | 钉钉企业文化荣誉 |
45
- | dingtalk-tasks | 钉钉待办 | Todo.Todo.Write Todo.Todo.Read |
46
- | dingtalk-calendar | 钉钉日程 |
47
- | dingtalk-checkin | 钉钉签到 |
48
- | dingtalk-servicewindow | 钉钉服务窗 |
49
- | dingtalk-notice | 钉钉工作通知 |
50
- | dingtalk-app-manage | 钉钉应用管理 |
39
+ | ProfileId | Description | Permission |
40
+ |-----------------------------|--------------------|----------------------------------------------|
41
+ | dingtalk-contacts | 钉钉通讯录,默认激活 |
42
+ | dingtalk-department | 钉钉部门管理 |
43
+ | dingtalk-robot-send-message | 钉钉机器人发消息/DING,默认激活 |企业内机器人发送消息权限
44
+ | dingtalk-honor | 钉钉企业文化荣誉 |
45
+ | dingtalk-tasks | 钉钉待办 | Todo.Todo.Write<br>Todo.Todo.Read |
46
+ | dingtalk-calendar | 钉钉日程 |
47
+ | dingtalk-checkin | 钉钉签到 |
48
+ | dingtalk-notice | 钉钉工作通知 |
49
+ | dingtalk-app-manage | 钉钉应用管理 | qyapi_microapp_manage<br>qyapi_get_microapp_list
51
50
  4. ROBOT_CODE,用于发消息/DING的机器人Code
52
- 5. ROBOT_ACCESS_TOKEN,群自定义机器人ACCESS_TOEKN,用于自定义机器人发消息
53
-
51
+ 5. ROBOT_ACCESS_TOKEN,群自定义机器人ACCESS_TOKEN,用于自定义机器人发消息
52
+ 6. DINGTALK_AGENT_ID 用于发送工作通知
54
53
  ### 如何获取钉钉Client ID和Client Secret
55
54
  1. [成为钉钉开发者](https://open.dingtalk.com/document/orgapp/obtain-developer-permissions)
56
55
  2. [创建应用](https://open.dingtalk.com/document/orgapp/create-an-application)
@@ -1,5 +1,6 @@
1
1
  server:
2
2
  name: dingtalk-calendar
3
+ description: 钉钉日历
3
4
  securitySchemes:
4
5
  - id: DingTalkAuth
5
6
  type: apiKey
@@ -32,12 +32,12 @@ tools:
32
32
  description: 部门名称或者部门名称拼音
33
33
  - name: offset
34
34
  type: number
35
- required: false
35
+ required: true
36
36
  position: body
37
37
  description: 分页页码,默认0
38
38
  - name: size
39
39
  type: number
40
- required: false
40
+ required: true
41
41
  position: body
42
42
  description: 分页大小,默认10,最大100
43
43
 
@@ -1,16 +1,22 @@
1
1
  server:
2
2
  name: dingtalk-notice
3
3
  version: 1.0.0
4
- description: DingTalk Work Notice MCP Server - 钉钉工作通知
4
+ description: DingTalk Work Notice MCP Server - 钉钉工作通知MCP服务器
5
5
 
6
6
  tools:
7
7
  # 发送工作通知消息
8
8
  - name: sendNotice
9
- description: 发送工作通知消息,支持3种消息类型:text、link、markdown
9
+ description: 发送工作通知消息,支持 markdown 消息类型
10
10
  requestTemplate:
11
11
  method: POST
12
12
  url: https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2
13
13
  args:
14
+ - name: agent_id
15
+ type: number
16
+ required: true
17
+ position: body
18
+ description: 发送消息时使用的微应用的AgentID
19
+ system: DINGTALK_AGENT_ID
14
20
  - name: userid_list
15
21
  type: string
16
22
  required: false
@@ -26,11 +32,23 @@ tools:
26
32
  required: false
27
33
  position: body
28
34
  description: 是否发送给全员(可选,默认false)
29
- - name: msg
30
- type: object
35
+ - name: msg.msgtype
36
+ not_need_model_transform: true
37
+ type: string
38
+ required: true
39
+ position: body
40
+ description: markdown消息格式
41
+ default: markdown
42
+ - name: msg.markdown.title
43
+ type: string
44
+ required: true
45
+ position: body
46
+ description: markdown消息标题
47
+ - name: msg.markdown.text
48
+ type: string
31
49
  required: true
32
50
  position: body
33
- description: 消息内容,支持text、link、markdown三种类型
51
+ description: markdown消息内容
34
52
 
35
53
  # 获取工作通知消息的发送结果
36
54
  - name: getSendResult
@@ -39,6 +57,12 @@ tools:
39
57
  method: POST
40
58
  url: https://oapi.dingtalk.com/topapi/message/corpconversation/getsendresult
41
59
  args:
60
+ - name: agent_id
61
+ type: number
62
+ required: true
63
+ position: body
64
+ description: 发送消息时使用的微应用的AgentID
65
+ system: DINGTALK_AGENT_ID
42
66
  - name: task_id
43
67
  type: number
44
68
  required: true
@@ -52,6 +76,12 @@ tools:
52
76
  method: POST
53
77
  url: https://oapi.dingtalk.com/topapi/message/corpconversation/getsendprogress
54
78
  args:
79
+ - name: agent_id
80
+ type: number
81
+ required: true
82
+ position: body
83
+ description: 发送消息时使用的微应用的AgentID
84
+ system: DINGTALK_AGENT_ID
55
85
  - name: task_id
56
86
  type: number
57
87
  required: true
@@ -65,21 +95,15 @@ tools:
65
95
  method: POST
66
96
  url: https://oapi.dingtalk.com/topapi/message/corpconversation/recall
67
97
  args:
98
+ - name: agent_id
99
+ type: number
100
+ required: true
101
+ position: body
102
+ description: 发送消息时使用的微应用的AgentID
103
+ system: DINGTALK_AGENT_ID
68
104
  - name: msg_task_id
69
105
  type: number
70
106
  required: true
71
107
  position: body
72
108
  description: 要撤回的消息任务ID
73
109
 
74
- # 获取消息模板(内置功能)
75
- - name: getMessageTemplates
76
- description: 获取所有支持的消息类型模板和示例,帮助用户快速了解消息格式
77
- requestTemplate:
78
- method: LOCAL
79
- url: local://templates
80
- args:
81
- - name: msgtype
82
- type: string
83
- required: false
84
- position: query
85
- description: 指定消息类型(text、link、markdown),不指定则返回所有类型
@@ -79,11 +79,6 @@ tools:
79
79
  description: 会话ID。
80
80
  position: body
81
81
  required: true
82
- - name: coolAppCode
83
- type: string
84
- description: 群聊酷应用编码。
85
- system: COOL_APP_CODE
86
- position: body
87
82
  - name: msgKey
88
83
  type: string
89
84
  description: 消息模板key,默认为"sampleMarkdown"。
@@ -93,10 +88,11 @@ tools:
93
88
  not_need_model_transform: true
94
89
  - name: msgParam
95
90
  type: string
96
- description: 消息内容,为markdown格式。
91
+ description: 消息内容,格式为JSON字符串,必须遵循此格式 {"title":"title", "text":"markdown内容"}
97
92
  position: body
98
93
  required: true
99
94
 
95
+
100
96
  requestTemplate:
101
97
  url: https://api.dingtalk.com/v1.0/robot/groupMessages/send
102
98
  method: POST
@@ -162,7 +158,7 @@ tools:
162
158
  not_need_model_transform: true
163
159
  - name: msgParam
164
160
  type: string
165
- description: 消息内容,为markdown格式。
161
+ description: 消息内容,格式为JSON字符串,必须遵循此格式 {"title":"title", "text":"markdown内容"}
166
162
  position: body
167
163
  required: true
168
164
 
@@ -34,6 +34,7 @@ export declare class DingTalkMCPServer {
34
34
  private executeTool;
35
35
  private buildUrl;
36
36
  private buildHeaders;
37
+ private processMultiParam;
37
38
  private buildBody;
38
39
  run(): Promise<void>;
39
40
  }
@@ -319,6 +319,9 @@ export class DingTalkMCPServer {
319
319
  };
320
320
  }
321
321
  catch (error) {
322
+ if (this.debug){
323
+ console.log(error)
324
+ }
322
325
  let errorMessage = error.message;
323
326
  if (axios.isAxiosError(error) && error.response) {
324
327
  // 如果是token相关错误,清除缓存
@@ -375,7 +378,7 @@ export class DingTalkMCPServer {
375
378
  return finalQuery ? `${baseUrl}?${finalQuery}` : baseUrl;
376
379
  }
377
380
  // 特殊处理oapi.dingtalk.com接口且配置了security(自定义机器人发消息不使用这个),将access_token作为URL参数传递
378
- if (url.includes('oapi.dingtalk.com') && tool.requestTemplate.security && this.accessToken) {
381
+ if (url.includes('oapi.dingtalk.com') && this.accessToken) {
379
382
  const separator = url.includes('?') ? '&' : '?';
380
383
  return `${url}${separator}access_token=${encodeURIComponent(this.accessToken)}`;
381
384
  }
@@ -396,6 +399,32 @@ export class DingTalkMCPServer {
396
399
  }
397
400
  return headers;
398
401
  }
402
+
403
+ processMultiParam(body, name, value){
404
+ let objParmas = name.split('.');
405
+ if (objParmas && objParmas.length > 1) {
406
+ if (objParmas.length == 2){
407
+ if (!body[objParmas[0]]){
408
+ body[objParmas[0]] = {};
409
+ }
410
+ body[objParmas[0]][objParmas[1]] = value;
411
+ }
412
+ if (objParmas.length == 3){
413
+ if (!body[objParmas[0]]){
414
+ body[objParmas[0]] = {};
415
+ }
416
+ if (!body[objParmas[0]][objParmas[1]]){
417
+ body[objParmas[0]][objParmas[1]] = {};
418
+ }
419
+ body[objParmas[0]][objParmas[1]][objParmas[2]] = value;
420
+ }
421
+ return true;
422
+ } else {
423
+ body[name] = value;
424
+ }
425
+ return false;
426
+ }
427
+
399
428
  buildBody(tool, args) {
400
429
  if (tool.requestTemplate.method === 'GET' || tool.requestTemplate.method === 'DELETE') {
401
430
  return undefined;
@@ -413,7 +442,7 @@ export class DingTalkMCPServer {
413
442
  }
414
443
  // 不需要模型处理,直接取默认值赋值
415
444
  if (arg.not_need_model_transform){
416
- body[arg.name] = arg.default
445
+ this.processMultiParam(body, arg.name, arg.default);
417
446
  return;
418
447
  }
419
448
 
@@ -422,45 +451,27 @@ export class DingTalkMCPServer {
422
451
  return;
423
452
  }
424
453
  //打平Object类型参数,递归处理
425
- let objParmas = arg.name.split('.');
426
- if (objParmas && objParmas.length > 1) {
427
- if (objParmas.length == 2){
428
- if (!body[objParmas[0]]){
429
- body[objParmas[0]] = {};
430
- }
431
- body[objParmas[0]][objParmas[1]] = args[arg.name];
432
- }
433
- if (objParmas.length == 3){
434
- if (!body[objParmas[0]]){
435
- body[objParmas[0]] = {};
436
- }
437
- if (!body[objParmas[1]]){
438
- body[objParmas[1]] = {};
439
- }
440
- body[objParmas[0]][objParmas[1]][objParmas[2]] = args[arg.name];
441
- }
442
- return;
443
- }
444
-
454
+ this.processMultiParam(body, arg.name, args[arg.name]);
445
455
 
446
- // userIds参数直接传递为数组类型,保证请求体为正确的JSON对象
447
- if (arg.name === 'userIds' && Array.isArray(args[arg.name])) {
448
- body[arg.name] = args[arg.name];
449
- }
450
- // 搜索用户API参数名称转换,从snake_case转为camelCase
451
- else if (tool.name === 'searchUser') {
452
- // Convert snake_case to camelCase for the search user API
453
- const camelCaseName = arg.name.replace(/_([a-z])/g, (g) => g[1].toUpperCase());
454
- body[camelCaseName] = args[arg.name];
455
- }
456
- else {
457
- body[arg.name] = args[arg.name];
458
- }
456
+ // // userIds参数直接传递为数组类型,保证请求体为正确的JSON对象
457
+ // if (arg.name === 'userIds' && Array.isArray(args[arg.name])) {
458
+ // body[arg.name] = args[arg.name];
459
+ // }
460
+ // // 搜索用户API参数名称转换,从snake_case转为camelCase
461
+ // else if (tool.name === 'searchUser') {
462
+ // // Convert snake_case to camelCase for the search user API
463
+ // const camelCaseName = arg.name.replace(/_([a-z])/g, (g) => g[1].toUpperCase());
464
+ // body[camelCaseName] = args[arg.name];
465
+ // }
466
+ // else {
467
+ // body[arg.name] = args[arg.name];
468
+ // }
459
469
  }
460
470
  });
461
- // 为searchUser添加默认的分页参数
462
- if (tool.name === 'searchUser') {
463
- // 设置默认的offset为0
471
+ // 为searchUser/searchDepartment添加默认的分页参数
472
+
473
+ // 设置默认的offset为0
474
+ if (tool.name === 'searchDepartment' || tool.name === 'searchUser'){
464
475
  if (body.offset === undefined) {
465
476
  body.offset = 0;
466
477
  }
@@ -468,10 +479,12 @@ export class DingTalkMCPServer {
468
479
  if (body.size === undefined) {
469
480
  body.size = 20;
470
481
  }
471
- console.error(`SearchUser API with params: offset=${body.offset}, size=${body.size}`);
472
482
  }
483
+ console.error(`SearchUser API with params: offset=${body.offset}, size=${body.size}`);
484
+
473
485
  return Object.keys(body).length > 0 ? body : undefined;
474
486
  }
487
+
475
488
  async run() {
476
489
  const transport = new StdioServerTransport();
477
490
  await this.server.connect(transport);
package/dist/cli.js CHANGED
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { DingTalkMCPServer } from './DingTalkMCPServer.js';
3
+ import {json} from "node:stream/consumers";
3
4
  async function main() {
4
5
  // 检查环境变量
5
6
  const appId = process.env.DINGTALK_Client_ID;
6
7
  const appSecret = process.env.DINGTALK_Client_Secret;
7
8
  const accessToken = process.env.DINGTALK_ACCESS_TOKEN;
8
- process.env.ACTIVE_PROFILES = 'dingtalk-contacts,dingtalk-department'
9
+
9
10
  // 如果既没有AppKey/Secret也没有AccessToken,显示帮助信息
10
11
  if (!accessToken && (!appId || !appSecret)) {
11
12
  console.error('🔧 DingTalk MCP Server 配置指南');
@@ -50,6 +51,8 @@ async function main() {
50
51
  console.error('');
51
52
  process.exit(1);
52
53
  }
54
+
55
+
53
56
  }
54
57
  // 处理未捕获的异常
55
58
  process.on('uncaughtException', (error) => {
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * DingTalk Calendar MCP Server
3
- *
4
- * A TypeScript-based MCP server for DingTalk Calendar integration
3
+
4
+ * A TypeScript-based MCP server for DingTalk integration
5
5
  */
6
6
  export { DingTalkMCPServer } from './DingTalkMCPServer.js';
7
7
  export * from './types.js';
package/dist/types.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * DingTalk Calendar MCP Server Type Definitions
2
+ * DingTalk MCP Server Type Definitions
3
3
  */
4
4
  export {};
5
5
  //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dingtalk-mcp",
3
- "version": "1.0.14",
3
+ "version": "1.1.0",
4
4
  "description": "DingTalk MCP Server - A TypeScript-based MCP server for DingTalk integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,7 +10,9 @@
10
10
  },
11
11
  "files": [
12
12
  "dist/**/*",
13
- "*.yaml"
13
+ "*.yaml",
14
+ "!dist/test.js",
15
+ "!dist/utils"
14
16
  ],
15
17
  "scripts": {
16
18
  "build": "tsc",
@@ -1,109 +0,0 @@
1
- server:
2
- name: dingtalk-servicewindow
3
- version: 1.0.0
4
- description: 钉钉服务窗
5
- securitySchemes:
6
- - id: DingTalkAuth
7
- type: apiKey
8
- in: header
9
- name: x-acs-dingtalk-access-token
10
-
11
- # 注意:当前版本的工具定义在代码中,此配置文件为预留扩展
12
- tools:
13
- - name: buildServiceWindowMessage
14
- description: "构建服务窗消息体,支持文本、链接、markdown、卡片等多种类型"
15
- requestTemplate:
16
- method: POST
17
- url: "internal://message-builder"
18
-
19
- - name: sendServiceWindowMessage
20
- description: "发送服务窗单人消息"
21
- requestTemplate:
22
- method: POST
23
- url: "https://api.dingtalk.com/v1.0/crm/officialAccounts/oToMessages/send"
24
- security:
25
- id: DingTalkAuth
26
-
27
- - name: batchSendServiceWindowMessage
28
- description: "批量发送服务窗消息"
29
- requestTemplate:
30
- method: POST
31
- url: "https://api.dingtalk.com/v1.0/crm/officialAccounts/oToMessages/batchSend"
32
- security:
33
- id: DingTalkAuth
34
-
35
- - name: getServiceWindowFollower
36
- description: "获取关注服务窗的单个用户信息"
37
- requestTemplate:
38
- method: GET
39
- url: "https://api.dingtalk.com/v1.0/link/followers/infos"
40
- security:
41
- id: DingTalkAuth
42
-
43
- - name: listServiceWindowFollowers
44
- description: "分页获取关注服务窗的用户列表"
45
- requestTemplate:
46
- method: GET
47
- url: "https://api.dingtalk.com/v1.0/link/followers"
48
- security:
49
- id: DingTalkAuth
50
-
51
- - name: getUserFollowStatus
52
- description: "获取用户的服务窗关注状态"
53
- requestTemplate:
54
- method: GET
55
- url: "https://api.dingtalk.com/v1.0/link/followers/status"
56
- security:
57
- id: DingTalkAuth
58
-
59
- - name: listServiceWindows
60
- description: "获取企业下的服务窗列表"
61
- requestTemplate:
62
- method: GET
63
- url: "https://api.dingtalk.com/v1.0/link/accounts"
64
- security:
65
- id: DingTalkAuth
66
-
67
- # 消息类型定义
68
- messageTypes:
69
- text:
70
- description: "纯文本消息"
71
- maxLength: 500
72
-
73
- link:
74
- description: "链接消息"
75
- fields:
76
- title:
77
- maxLength: 128
78
- required: true
79
- text:
80
- maxLength: 500
81
- required: true
82
- messageUrl:
83
- pattern: "^https?://.+"
84
- required: true
85
- picUrl:
86
- required: true
87
-
88
- markdown:
89
- description: "Markdown格式消息"
90
- fields:
91
- title:
92
- maxLength: 30
93
- required: true
94
- text:
95
- maxLength: 500
96
- required: true
97
-
98
- actionCard:
99
- description: "卡片消息"
100
- fields:
101
- title:
102
- maxLength: 30
103
- required: true
104
- markdown:
105
- maxLength: 1000
106
- required: true
107
- cardType:
108
- enum: ["single", "independent"]
109
- required: true
@@ -1 +0,0 @@
1
- {"version":3,"file":"DingTalkMCPServer.js","sourceRoot":"","sources":["../src/DingTalkMCPServer.ts"],"names":[],"mappings":"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"}
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACvC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,cAAc,YAAY,CAAC"}
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,49 +0,0 @@
1
- /**
2
- * API Client - 抽象DingTalk API调用
3
- * 负责构建请求、发送API调用和处理响应
4
- */
5
- import { type AxiosResponse } from 'axios';
6
- import type { DingTalkApiResponse } from '../types.js';
7
- import type { ProcessedMessage } from './messageProcessor.js';
8
- export interface ApiClientOptions {
9
- baseURL?: string;
10
- timeout?: number;
11
- retries?: number;
12
- }
13
- export declare class ApiClient {
14
- private readonly baseURL;
15
- private readonly timeout;
16
- private readonly retries;
17
- constructor(options?: ApiClientOptions);
18
- /**
19
- * 发送单人消息
20
- */
21
- sendMessage(accessToken: string, message: ProcessedMessage, params: {
22
- userId?: string;
23
- unionId?: string;
24
- bizId?: string;
25
- accountId?: string;
26
- }): Promise<AxiosResponse<DingTalkApiResponse>>;
27
- /**
28
- * 批量发送消息
29
- */
30
- batchSendMessage(accessToken: string, message: ProcessedMessage, params: {
31
- userIdList?: string[];
32
- sendToAll?: boolean;
33
- bizRequestId?: string;
34
- bizId?: string;
35
- accountId?: string;
36
- }): Promise<AxiosResponse<DingTalkApiResponse>>;
37
- /**
38
- * 通用请求方法
39
- */
40
- private makeRequest;
41
- /**
42
- * 获取access_token
43
- */
44
- getAccessToken(appId: string, appSecret: string): Promise<{
45
- access_token: string;
46
- expires_in: number;
47
- }>;
48
- }
49
- //# sourceMappingURL=apiClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../src/utils/apiClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAA+C,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,GAAE,gBAAqB;IAM1C;;OAEG;IACU,WAAW,CACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAqB9C;;OAEG;IACU,gBAAgB,CAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE;QACN,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAsB9C;;OAEG;YACW,WAAW;IAmBzB;;OAEG;IACU,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACrE,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CAkBH"}