TAPD消息通知到钉钉应用号

TAPD消息通知到钉钉应用号

1.前景

​ TAPD是公司内部项目工程管理的主要工具,其需求、任务、缺陷等的变更,需要有对应的消息通知,提高工作时效性。若公司内部使用的是企业微信协同办公软件的话,可以直接在TAPD上面关联公司即可实现消息通知功能,但因我们公司内部是使用的钉钉协同办公软件,需要实现相同的功能,需要开发一个通知服务。

2.实现原理

​ TAPD拥有自动化任务执行,在每个项目里面的设置->自动化助手里面添加针对需求、任务、缺陷的自动化任务,任务执行的动作选择webhook,每当变更时TAPD会把变更的消息体发送到webhook地址上,由此webhook地址的服务负责消息的通知逻辑,本程序就是做的这个通知逻辑。

3.支持的自动化任务类型

  • 需求创建、状态变更、评论变更
  • 任务创建、状态变更、评论变更
  • 缺陷创建、状态变更、评论变更

​ 其中评论支持@人单独通知

4.配置说明

config/settings.yml是项目的配置文件

settings:
  application:
    host: 0.0.0.0
    port: 8080
  database:
    source: root:10010@tcp(172.10.23.92:3306)/tapd-notice?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
    maxidleconns: 5
    maxopenconns: 20
  dingding:
    appkey:                               # 钉钉应用的key
    appsecret:                            # 钉钉应用的密钥
    agentid:                              # 钉钉应用通知的agentid
  tapd:
    companyid:                            # TAPD的公司id
    apiuser:                              # TAPD的apiuser
    apipassword:                          # TAPD的apipassword
  • 数据库

​ 数据库只需创建数据库即可,程序运行时,使用的gorm框架会自动创建数据库表。

CREATE DATABASE `tapd-notice` CHARACTER SET 'utf8mb4';
  • 钉钉

​ 钉钉需要创建一个应用号,点击应用号可以获取到对应的appkeyappsecret及其agentid,除此,还需要开通对应的API权限,如获取部门、用户信息,发送消息等权限,请打开。因我本人的开发者权限已经被收回,无法提供截图了,请参考钉钉开发文档。

  • TAPD

​ TAPD需要有API账号管理权限,点击设置->API账号管理即可查看,如下图所示:

  • TAPD自动化任务配置

​ 以需求创建为例,创建自动化任务,如下图所示:

5.实现效果

​ 最终实现的效果如下图所示:

6.源码说明

  • Github地址:tapd-notice

  • 定时任务说明:项目里通知的用户数据,使用定时任务抓取钉钉API接口保存的,若第一下运行,请修改源码里面的定时任务的执行时间,先初始化用户的信息数据。

​ 定时任务配置路径cmd/cobra.go:74-76

goCron.AddJob("0 0 * * *", deptCronJob)
goCron.AddJob("30 0 * * *", userCronJob)
goCron.AddJob("0 0 * * *", projectCronJob)
posted @ 2023-01-10 18:16  quanbisen  阅读(990)  评论(2编辑  收藏  举报