每每看到别人家公司将聊天机器人与项目管理有效结合的实践,我都甚是羡慕。自己只使用过 钉钉 自带的 Jira 机器人,也曾尝试使用 Script Runner 插件写点 Groovy 脚本,来实现项目管理过程中的任务提醒功能,但是由于技术水平有限,所以一直没有产生什么结果。

正好前两天在摸索 Automation for jira 插件时,竟然跑通了一个关键流程:通过钉钉自定义机器人将 Jira 更新的消息成功推送到了钉钉群,心里甚是欣喜。我周末花了一天多时间,仔细研究了下,最终完成了”如何将每天定点获取的逾期任务自动推送到钉钉和企业微信两个群“的 Demo,下面是具体的实践步骤,希望对大家有所帮助。

一、新建自动化规则


我们首先找到需要配置任务逾期提醒的 Jira 项目,到项目配置的 Project automation 中,选择 Project rules 创建新规则:

选择规则的触发器为计划(Scheduled),按指定计划执行规则,比如:每天将 JQL 查询结果自动推送消息。

使用 Cron 表达式,输入:0 30 9 * * ? ,表示:每天早晨 9:30 准时执行计划。在 JQL 输入如下语句,表示:查询未解决的逾期用户故事。点击保存,即可完成计划的设定。

issuetype = Story AND resolution = Unresolved AND duedate < startOfDay()

二、配置 钉钉 自定义机器人

添加组件:在 New action 中选择发送网络请求,我们将创建两个网络请求,分别对应企业微信和钉钉群机器人,用来将定时计划的消息推动到群里。

添加企业微信群机器人,获取到网络钩子 URL,将其输入到 Webhook URL 中。选择网络钩子主体为自定义数据(Custom data),按照企业微信群机器人配置规范进行配置,我们使用 markdown 类型消息体(参考代码如下),点击保存,继续添加钉钉机器人网络请求:

{"msgtype": "markdown",
 "markdown":
 {"content": "
【小蜜提醒】\n
 截至当前,共<font size=\"4\" color=\"#dd0000\">{{issues.size}}</font>个任务已逾期,请相关同学及时处理!\n
 {{#issues}}
  >问题编号:[{{key}}]({{url}})\n
  >问题类型:{{issueType.name}}\n
  >问题概述:{{summary}}\n
  >到期日:<font color=\"#dd0000\">{{duedate}}</font>\n
  >处理人:{{assignee.displayName}}\n
  >-----------------------------------------------\n
 {{/}}"
 }
}

添加钉钉群机器人,选择自定义机器人(而非自带的 Jira 机器人),在安全设置-自定义关键字中输入【小蜜提醒】,获取到网络钩子 URL,将其输入到 Webhook URL 中。选择网络钩子主体为自定义数据(Custom data),按照钉钉群机器人配置规范进行配置,我们使用 markdown 类型消息体(参考代码如下),点击保存,给自动化规则命名后打开,此时自动化状态为可用的(ENABLED)。

{"msgtype": "markdown",
 "markdown":
 {
"title":"【逾期提醒】",
"text":"【小蜜提醒】\n
 截至当前,共<font size=\"4\" color=\"#dd0000\">{{issues.size}}</font>个任务已逾期,请相关同学及时处理!\n
 {{#issues}}
  >问题编号:[{{key}}]({{url}})\n
  >问题类型:{{issueType.name}}\n
  >问题概述:{{summary}}\n
  >到期日:<font color=\"#dd0000\">{{duedate}}</font>\n
  >处理人:{{assignee.displayName}}\n
  >-----------------------------------------------\n
  {{/}}"
  }
}
 钉钉 与 Jira 打通

三、测试自动化规则

对上述自动化规则进行测试,即使配置了每天早晨 9:30 自动执行,但是我们仍可以通过手工执行规则进行测试。

点击右上角”运行规则“,查看已配置自定义机器人的两个群消息是否完全符合预期。如果接收不到消息或消息内容有缺失,那么需要仔细检查网络钩子 markdown 格式内容。

注意:如果你在群里接收到的消息分成了 2 条,那么需要在”When: Scheduled”的更多选项中勾选:批量处理该触发器产生的所有 Issues。

四、写在最后

关于如何高效写出网络钩子主体的自定义语句,Jira 官网有关于”smart values”非常详尽的说明文档。同时,官网还提供了在线Automation沙箱环境,里面有非常多案例供学习和参考(本文相关材料链接,如果找不到,可以单独跟我沟通)。

最后,欢迎加我个人微信交流 craigyoung1985,一起学习和交流。请备注:姓名/城市/工作岗位,我可以拉到Jira和Confluence中国社区群。

Categories:

Tags:

Comments are closed