# 前言

这里介绍如何使用 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

在 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

可以在 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

# 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
上次更新: 2024-07-31 15:20:55