门禁消息可以和自定义服务器对接吗,JIRA对接钉钉群机器人-实现任务的自定义格式指派通知...

简介:通过Jira网络钩子和钉钉自定义机器人,实现Jira任务的自定义格式指派通知

一、前提

Jira Software、钉钉群、RESTful服务、LDAP服务

二、流程图

66ec613f8abdcdca37d49836f58b7cb9.png

三、对接步骤

1、创建项目群,把相关人员拉入群

73827090f47947a30d964a5ca6ee946b.png

2、钉钉群的智能群助手里添加自定义机器人

720972c2db53563d6962870fe1942e9e.png

3、设置机器人,安全设置里建议勾选IP地址段,将RESTful服务所在的机器IP填入

ea2d8896fc4ecfe1a14af70fa6c84609.png

4、注意创建完成后的Webhook地址,RESTful服务用这个地址发送通知消息,后面步骤要用上

5、RESTful服务新增一个POST接口,这里可以自定义通知内容,部署到服务器

ee26b46374287b286181c4a7f00a5ba8.gif

140454036b883cd957da7b098ab5ff66.gif

1 @ApiOperation(value = "JIRA网络钩子") 2 @PostMapping("/jiraWebHook") 3 @ResponseBody 4 public Result jiraWebHook(HttpServletRequest request) { 5 BufferedReader br = null; 6 String str, wholeStr = ""; 7 try { 8 br = request.getReader(); 9 10 while ((str = br.readLine()) != null) {11 wholeStr += str;12 }13 log.info("jiraWebHook body: {}", wholeStr);14 } catch (Exception e) {15 log.error("jiraWebHook error", e);16 } finally {17 if (br != null) {18 try {19 br.close();20 } catch (Exception e) {21 }22 }23 }24 return Result.success(JiraWebHookUtil.hook(JSONObject.parseObject(wholeStr, JiraPostData.class)));25 }

View Code

ee26b46374287b286181c4a7f00a5ba8.gif

140454036b883cd957da7b098ab5ff66.gif

1 @Slf4j 2 public class JiraWebHookUtil { 3 4 private static final String DING_TALK_ROBOT_URL = "https://oapi.dingtalk.com/robot/send" + 5 "?access_token=xxxxxx"; 6 private static final String JIRA_BASE_URL = "http://xxx.xxx.xxx.xxx:38080/browse/"; 7 private static RestTemplate restTemplate = new RestTemplate(); 8 9 public static boolean hook(JiraPostData postData){ 10 try { 11 if(postData != null){ 12 if(StringUtils.equals(postData.getWebhookEvent(), "jira:issue_updated")){ 13 //更新事件 14 List items = postData.getChangelog().getItems(); 15 String toUserId = Strings.EMPTY; 16 String fromUserId = Strings.EMPTY; 17 for(Item item : items){ 18 if(StringUtils.equals(item.getField(), "assignee")){ 19 toUserId = item.getTo(); 20 fromUserId = item.getFrom(); 21 break; 22 } 23 } 24 if(StringUtils.isNotBlank(toUserId) && StringUtils.isNotBlank(fromUserId)){ 25 String toMobile = getUserMobile(toUserId); 26 String fromMobile = getUserMobile(fromUserId); 27 if(StringUtils.isNotBlank(toMobile) && StringUtils.isNotBlank(fromMobile)){ 28 String issueKey = postData.getIssue().getKey(); 29 String issueSummary = postData.getIssue().getFields().getSummary(); 30 DingTalkMarkdownMessage msg = new DingTalkMarkdownMessage(); 31 msg.setMsgtype("markdown"); 32 Markdown markdown = new Markdown(); 33 markdown.setTitle(postData.getIssue().getKey()); 34 markdown.setText("### @" + fromMobile + " 【转移任务给】@" + toMobile 35 + "\n>任务编号:[" + issueKey + "](" + JIRA_BASE_URL + issueKey + ")" 36 + " \n任务标题:" + issueSummary); 37 msg.setMarkdown(markdown); 38 At at = new At(); 39 at.setAtMobiles(Arrays.asList(toMobile, fromMobile)); 40 msg.setAt(at); 41 return sendMsgToDingTalk(JSONObject.to.........

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值