文档章节

redmine推送消息至钉钉

DexterPoke
 DexterPoke
发布于 09/11 21:31
字数 1092
阅读 19
收藏 0

前言

公司项目管理中用到了软件redmine,然鹅redmine的任务消息并不会实时推送给指定人员(支持邮件推送,个人并不是很喜欢邮件感觉比较正式,通过实时的消息会更讨喜一些)。然后萌生了推送到实时聊天工具的想法,钉钉是现阶段比较流行的工具公司内聊天通讯工具(当然也有其他的QQ,微信,Skype等)。找到了一个方式:redmine可以通过webhook的方式向外发送请求,于是乎就能自己搭建一个小服务推送到钉钉了。


redmine的webhook插件安装


redmine推送消息解析

配置完webhook后,创建或修改redmine上的任务会出现以下类似消息

{
  "payload": {
    "action": "opened",
    "issue": {
      "id": 1,
      "subject": "A sample bug",//任务标题
      "description": "Lorem ipsum dolor sic amet.",//描述
      "created_on": "2015-03-06T04:23:42Z",//创建时间
      "updated_on": "2015-03-07T10:00:59Z",//更新时间
      "closed_on": null,
      "root_id": 1,
      "parent_id": null,
      "done_ratio": 0,
      "start_date": "2015-03-02",//计划开始日期
      "due_date": "2015-03-20",//计划完成日期
      "estimated_hours": 15,
      "is_private": false,
      "lock_version": 14,
      "project": {
        "id": 1,
        "identifier": "playground",
        "name": "Playground",//项目名称
        "description": "A sample playground project",//项目描述
        "created_on": "2015-03-06T02:51:48Z",//项目创建时间
        "homepage": ""
      },
      "status": {
        "id": 1,
        "name": "New"//任务状态
      },
      "tracker": {
        "id": 2,
        "name": "Feature"//任务类型
      },
      "priority": {
        "id": 3,
        "name": "High"//优先级
      },
      "author": {//作者、派发者
        "id": 1,
        "login": "admin",
        "mail": "admin@example.net",
        "firstname": "Redmine",
        "lastname": "Admin",
        "identity_url": null,
        "icon_url": "http:\/\/www.gravatar.com\/avatar\/cb4f282fed12016bd18a879c1f27ff97?rating=PG&size=50"
      },
      "assignee": {//接任务人
        "id": 5,
        "login": "demo",
        "mail": "demo@example.net",
        "firstname": "Demo",
        "lastname": "User",
        "identity_url": null,
        "icon_url": "http:\/\/www.gravatar.com\/avatar\/0e5601057dfe4b0fa94611f1fad4fb95?rating=PG&size=50"
      },
      "watchers": [//跟踪人
        {
          "id": 1,
          "login": "admin",
          "mail": "admin@example.net",
          "firstname": "Redmine",
          "lastname": "Admin",
          "identity_url": null,
          "icon_url": "http:\/\/www.gravatar.com\/avatar\/cb4f282fed12016bd18a879c1f27ff97?rating=PG&size=50"
        }
      ]
    },
    "url": "http:\/\/localhost:3000\/issues\/1"//redmine打开网址,这个需要看情况替换成可访问地址
  }
}

钉钉中创建机器人


java写简单接收转发

  • java上一个controller接收

  • 解析处理接收到的请求

  • 转成钉钉接口文档中的参数形式

    当前自己写了一个简单的转化。见仓库:https://gitee.com/DexterPoker/redmine2dingding

    简单的模块如下:

配置项:
redmine.template=\n > # 任务<b> :{0}</b>\n > ### 项目 :{1}\n > ### 描述 :{2}\n > ### 状态:{3}\n > ### 类型:{4}\n > ### 进度:{5} \n > ### 备注:{6}\n > ### 创建人:{7}\n > ### 优先级:{8}\n > ### 指派给:{9}\n > ### 跟踪人: {10}\n > ### 编辑人:{11}\n > ### 更新时间:{12}\n > [☛详情戳这里☚]({13})
实际目标格式化
String content = MessageFormat.format(template, subject, project, desc, status, tracker, percent, note, author, priority, assignee, watchers, editor, updateTime, url);

更多详见git仓库。


示例

  • 请求参数(将配置参数中的钉钉webhook替换即可测试,项目名称替换成“test项目”,请求形式get/post Content-Type: application/json)

    {"payload":{"journal":{"notes":"","private_notes":false,"created_on":"2019-01-07T05:39:15.653Z","author":{"icon_url":"//www.gravatar.com/avatar/8a2bbeda9b56a3005a1a471a21a32dd6?rating=PG&size=50","firstname":"四","mail":"","id":8,"login":"lisi","lastname":"李"},"details":[{"prop_key":"status_id","property":"attr","old_value":"1","id":608,"value":"2"}],"id":477},"issue":{"updated_on":"2019-01-07T05:39:15.000Z","is_private":false,"lock_version":1,"subject":"测试 发现一个bug","author":{"icon_url":"//www.gravatar.com/avatar/ea548552b5363569ee9a1efd5c46789c?rating=PG&size=50","firstname":"三","mail":"","id":27,"login":"zhangsan","lastname":"张"},"description":"测试描述 xxxx情况下 空指针","project":{"identifier":"test","created_on":"2018-08-31T10:46:42.000Z","name":"test项目","description":"test项目","id":5,"homepage":""},"watchers":[{"icon_url":"//www.gravatar.com/avatar/d9af92dc2dc21e8b6bd7853027b398e3?rating=PG&size=50","firstname":"五","mail":"","id":13,"login":"wangwu","lastname":"王"}],"priority":{"name":"普通","id":2},"done_ratio":0,"created_on":"2019-01-07T03:45:30.000Z","tracker":{"name":"缺陷","id":4},"root_id":234,"id":234,"assignee":{"icon_url":"//www.gravatar.com/avatar/8a2bbeda9b56a3005a1a471a21a32dd6?rating=PG&size=50","firstname":"四","mail":"","id":8,"login":"lisi","lastname":"李"},"start_date":"2019-01-07","status":{"name":"已解决","id":2}},"action":"updated","url":"http://localhost:3000/issues/234"}}
    
  • 效果

© 著作权归作者所有

DexterPoke
粉丝 0
博文 3
码字总数 1934
作品 0
杭州
私信 提问
OA集成钉钉开发——第六篇——消息推送

前面我们说到微应用中的免登陆,那么OA的开发的用户信息就可以拿到了。 接下来我们要说的就是OA中的一个重要的功能就是消息的推送,这个功能是OA必不可少的一个可能,集成钉钉的一个很大的优...

小手冰凉丶
2016/12/27
1K
0
redmine配置邮件通知服务

redmine是一款非常优秀的项目管理平台,但有个明显的缺点——没有消息推送功能,也就是说当redmine上的任务有更新时,干系人无法及时的获取消息。但redmine可以通过绑定邮箱、以邮件通知的形...

狄睿鑫老师
2017/03/26
0
0
如何将钉钉集成到FineReport插件中

报表服务器 安装钉钉管理插件后,打开报表管理平台,管理系统下会增加钉钉管理节点,钉钉相关的配置管理都将会放在这个节点中去配置: 同时,设置定时任务的最后一步输出设置中,会增加推送钉...

雄霸天下啦
2018/06/26
0
0
WePush 3.8.0 发布,专注批量推送的小而美的工具

WePush 3.8.0 已发布,一个专注批量推送的小而美的工具。 更新内容如下: v3.8.0 feature:新增支持钉钉消息类型(工作通知消息和群机器人消息) bug fix:修复微信公众号相关消息使用外部acc...

周波-RememBerBer
09/09
1K
2
H3BPM钉钉接入配置

1.1 登录https://www.dingtalk.com注册钉钉企业账号1 注册企业钉钉账号 登录钉钉企业后台管理获取CorpID和CorpSecret 2 创建企业应用 2.1 通过钉钉企业后台管理创建应用 地址说明: 地址设置...

lwl_BPM
2017/06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
49分钟前
3
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
50分钟前
5
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
58分钟前
5
1
正则表达式如何匹配一个单词存在一次或零次并且不占捕获组位置

正则表达式如何匹配一个单词存在一次或零次并且不占捕获组位置 今天要用正则表达式实现匹配一个词出现一次或者不出现的情况,但是又不仅仅是这么简单的需求。先详细说下我这种情况吧,也许有...

Airship
今天
6
0
第八讲:asp.net C# web 读取文件

本讲主要讲解如何在asp.net页面上传文件。 首先,前台页面: 其次,后台页面: 结果: 1、前台效果: 2、后台结果:

刘日辉
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部