jira使用网络钩子功能进行短信发送

本文介绍如何借助Jira的网络钩子功能来触发短信发送。首先需在Jira上配置网络钩子,并在自己的项目中设置外部接口。由于权限限制,测试在本地数据库进行,以防止影响生产环境。建议读者自行搭建Jira环境进行实践。
摘要由CSDN通过智能技术生成

该工具使用的是jira的网络钩子功能,你需要提前在jira上配置,并且在自己项目中开放对外接口

因为权限较低,且无测试环境,所以,发送用的用户资料等都在本地数据库上,避免对生产jira造成影响,

有兴趣的小伙伴可以去官网自己搭建一个jira环境,很好搞.

具体代码内容看注释吧,

Controller

package com.dqoms.web.controller.cmdb;

import com.dqoms.system.service.JiraSmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;

import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;

/**
 * Jira短信通知
 * 设计:Jira根据不同得触发事件调用不同得链接
 */
@RestController
@RequestMapping("/XXX/XXXX")
public class JiraSmsController {
    private String prefix = "XXXX/XXXX";


    @Autowired
    private JiraSmsService jiraSmsService;

    /**
     * jira报文类型分派
     * @param object
     */
    @PostMapping(value = "/JirasSMS")
    @ResponseBody
    public void JirasSMS (@RequestBody String object){
        //解析webhookEvent字段含义

        String s = jiraSmsService.Classification(object);
//        log.println(object);
//        System.out.println("最新输入的Json报文  : "+object);
    }





}

Service

package com.dqoms.system.service.impl;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.dqoms.common.annotation.Log;
import com.dqoms.common.enums.BusinessType;
import com.dqoms.system.domain.CrudDbAccidentInfo;
import com.dqoms.system.entity.JiraSmsUserInfo;
import com.dqoms.system.mapper.CrudDbAccidentInfoMapper;
import com.dqoms.system.mapper.JiraSmsUserMapper;
import com.dqoms.system.service.IRyJiraService;
import com.dqoms.system.service.JiraSmsService;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;

@Component
public class JiraSmsServicelmpl implements JiraSmsService {

    @Autowired
    private JiraSmsUserMapper jiraSmsUserMapper;

    @Autowired
    private IRyJiraService iRyJiraService;

    /**
     * 识别报文类型,对数据进行分发调用
     *
     * @param json
     * @return
     */
    @Override
    public String Classification(String json) {
        //转为json
        JSONObject jsonObject = JSONObject.fromObject(json);
        String webhookEvent = jsonObject.getString("webhookEvent");
        int i = 0;
        //问题创建
        if (webhookEvent.equals("jira:issue_created")) {
            //正常创建
            issueCreated(json);
            //跳转到整改单创建--该功能已弃用
//            issueRectificationSheet(json);
            i++;
        }
        //问题更新
        if (webhookEvent.equals("jira:issue_updated")) {
            issueUpdated(json);
            i++;
        }
        //问题链接删除
        if (webhookEvent.equals("issuelink_deleted")) {
            issuelinkDeleted(json);
            i++;
        }
        //项目创建
        if (webhookEvent.equals("project_created")) {
            projectCreated(json);
            i++;
        }
        //项目更新
        if (webhookEvent.equals("project_updated")) {
            projectUpdated(json);
            i++;
        }
        //项目删除
        if (webhookEvent.equals("project_deleted")) {
            projectDeleted(json);
            i++;
        }
        //用户创建
        if (webhookEvent.equals("user_created")) {
            userCreated(json);
            i++;
        }

        //用户更新 --只支持名称name更新
        if (webhookEvent.equals("user_updated")) {
            userUpdated(json);
            i++;
        }
        //问题删除
        if (webhookEvent.equals("jira:issue_deleted")) {
            issueDeleted(json);
            i++;
        }
        if (i == 0) {
            System.out.println("捕捉到的未处理的json :" + json +
                    "类型" + webhookEvent);
        }
        return null;
    }


    /**
     * 问题类型-----创建
     * 问题链接-----创建
     *
     * @param json
     * @return
     */
    @Override
    public String issueCreated(String json) {
        //接受问题创建的json报文,对其进行解析
        JSONObject jsonObject = JSONObject.fromObject(json);
        System.out.println(jsonObject);
        //准备数据
        String phonenumber = "";
        List<String> phonenumberList = new ArrayList<>();

        //将创建人解析出key name
        JSONObject user = jsonObject.getJSONObject("user");
        String founderName = user.getString("name");
        String founderKey = user.getString("key");
        //将创建的问题名称解析出
        JSONObject issue = jsonObject.getJSONObject("issue");
        String QuestionName = issue.getString("key");
        String QuestionId = issue.getString("id");
        //报告人
        String NameOfTheReporter = issue.getJSONObject("fields").getJSONObject("reporter").getString("key");
        String changelog = "";
        if (jsonObject.has("changelog")) {
            JSONArray items = jsonObject.getJSONObject("changelog").getJSONArray("items");
            for (int i = 0; items.size() > i; i++) {
                JSONObject updateContent = JSONObject.fromObject(items.get(i).toString());
                //获取更改的字段是什么
                String fieId = updateContent.getString("field");
                if (i == 0) {
                    changelog = "--更新了:";
                }
                changelog = changelog + fieId + ";";
                System.out.println(changelog);
            }
        }


        JSONObject fields = issue.getJSONObject("fields");
        //解析问题的经办人相关信息
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值