# 前言
这里介绍如何使用 IM 模板插件
# 接入效果
以飞书应用为例:
# 接入流程
# 创建 TAPD 托管应用
在开发平台中选择 IM NodeJs Vue 模板插件来创建应用
# 下载代码及授权验证
在应用概览中选择代码仓库并下载
安装并使用 tplugin-cli 进行 Oauth 授权,参考【快速入门】实现
# TAPD 服务集成
使用tplugin-cli serve
命令启动模板插件应用,在【公司管理-开放集成-服务集成】中对插件进行管理
# 同步组织成员
【公司管理-成员管理】中,可以使用 IM 同步成员
在 IM 模板插件中自定义组织成员数据
# 消息通知
在【项目协作-项目设置-消息与报告】中,可以配置接收通知事件
同时,在任意工作项中,@用户时也会向 IM 侧对应的用户发送消息
IM 插件应用中可以自定义消息处理
# 一键拉群
在任意工作项中,可以点击 IM 插件应用进行一键拉群
IM 插件应用中会接收到对应的 JSON 数据
{
"workspace_id": "66229999",
"current_user": {
"id": "810118533",
"nick": "test",
"name_pinyin": "",
"enabled": "1",
"status_name": "",
"current_company_id": "58082844",
"group_id": "0",
"group_name": "",
"group_names": "",
"post_name": ""
},
"data": {
"app_code": "tapd-app-42cb4c",
"handler": "group_chat.createGroupAndSendMsg",
"third_auth": [
],
"body": {
"entity_id": "1166229999001000003",
"entity_type": "story",
"title": "【TAPD】父需求3:协作联通能力强化 + DevOps 全流程支撑讨论群",
"tapd_users": [
"810118533",
"1438132993",
"862848823"
],
"workspace_id": "66229999",
"setting": {
"is_subscribe": true,
"is_subscribe_related": false,
"is_subscribe_sub": false,
"all_sub_story_member": false,
"all_relate_story_member": false,
"subscribe_objects": "",
"enable_subscribe_objects": false
},
"card_title": "test 邀请你参加需求讨论",
"content": "父需求3:协作联通能力强化 + DevOps 全流程支撑",
"url": "*",
"owner": "810118533",
"current_company_id": "58082844"
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
在 group_chat.js 文件中的createGroupAndSendMsg
方法中可以自定义处理逻辑
# 自动化助手
自动化助手中可以选择 IM 应用进行消息提醒
IM 插件应用中会接收到对应的 JSON 数据
{
"nick": "nick",
"workspace_id": "66229999",
"company_id": "58082844",
"object_code": "tapd-app-tapd-app-42cb4c_im",
"trigger_object_name": "merge_story",
"trigger_object_event": "merge_story::status_change",
"trigger_config": {
"obj_key": "merge_story",
"obj_name": "需求",
"obj_code": "merge_story",
"obj_sub_code": "",
"freeze": "0",
"data": [
{
"value": "merge_story::status_change",
"key": "event",
"name": "状态流转",
"freeze": "0",
"operator": "single_in",
"label": "请选择事件"
},
{
"value": "all",
"key": "workitem_type_id",
"name": "所有类别",
"freeze": "0",
"operator": "multi_in",
"label": "请选择需求类别"
},
{
"value": "smartcommit_anyone",
"key": "event.status:fromto:from",
"name": "任一状态",
"freeze": "0",
"operator": "single_in",
"label": "流转前状态"
},
{
"value": "smartcommit_anyone",
"key": "event.status:fromto:to",
"name": "任一状态",
"freeze": "0",
"operator": "multi_in",
"label": "流转至状态"
}
]
},
"trigger_obj_type_id": "0"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
可以在 IM 插件应用中自定义事件逻辑
自动化配置参考【自动化助手】 实现
# 插件工程目录示例
├── handler
│ ├── config.js
│ └── hello.js
├── index.js
├── Makefile
├── modules
│ ├── autotasks
│ │ ├── handler.js
│ │ └── options.js
│ ├── im
│ │ ├── group_chat.js
│ │ ├── inform.js
│ │ ├── organization
│ │ │ ├── department.js
│ │ │ ├── user_group.js
│ │ │ └── user.js
│ │ ├── organization.js
│ │ └── storage
│ │ ├── config.js
│ │ ├── organization
│ │ │ ├── department_relation.js
│ │ │ ├── organization_sync_log.js
│ │ │ ├── user_group_relation.js
│ │ │ ├── user_group_settings.js
│ │ │ └── user_relation.js
│ │ └── storage.js
│ └── webhooks
│ └── inform_events.js
├── package.json
├── plugin.yaml
├── resources
│ └── pages
│ ├── app_for_global_config
│ │ ├── feishu.vue
│ │ └── index.css
│ ├── app_for_global_config.js
│ └── index.html
├── utils.js
└── webpack.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# plugin.yaml 示例
app:
code: tapd-app-42cb4c
desc: im demo
modules:
autotasks:
- code: im
executors:
actions:
- code: im::send_group_message
desc: 群消息提醒
exec:
handler: handler.update
icon: business
name: 群消息提醒
option:
handler: options.option
related:
- story::*
- bug::*
- task::*
- iteration::*
icon: business
name: im
im:
adapter:
chat_info: group_chat.getChatInfo
create_group_and_send_msg: group_chat.createGroupAndSendMsg
send_at_user_msg: inform.sendAtUserMsg
send_msg: inform.sendMsg
sync_organization: organization.sync
code: im
desc: TAPD集成im
name: im
support:
group_chat: true
host_user_ralation:
enabled: true
sync_text: 同步im成员
send_at_user_msg: true
send_msg: true
name: im
resources:
- key: app_for_global_config
name: Demo应用
path: pages/app_for_global_config
scopes:
- user
- story
- organization
- workspace#read
- bug
- task
- member
- setting
tag:
- name: im
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56