以下是一个供您参考的 Python 示例文件。 

#当创建的请求类型为“Bug”且影响为“High”时,该脚本文件会创建一个 JIRA 工单。请求 ID、主题、描述、到期时间和优先级会传递给 JIRA 以创建工单。成功创建 JIRA 工单后,会从响应中获取 JIRA 工单 ID 和工单 URL,并将其作为备注添加到 ServiceDesk Plus 请求中。自定义字段 “JIRA_ISSUE_ID” 和 “JIRA_ISSUE_URL” 也会更新为相应的值。

 

#要求 - 需要安装 Requests 模块

#需要由用户设置:url、jirausername、jirapassword、Jira_Server、Port_Number

#命令 - 'py CreateJiraTicket.py $COMPLETE_JSON_FILE'

import requests

import sys

import json

import datetime

#打开并访问 json 文件

file_Path = sys.argv[1]

with open(file_Path) as data_file:

 

data = json.load(data_file)

#获取所需的值

request_obj = data['request']

workorderid = request_obj['WORKORDERID']

subject = request_obj['SUBJECT']

desc = request_obj['SHORTDESCRIPTION']

priority = request_obj['PRIORITY']

duebytime = request_obj['DUEBYTIME']

#将时间从毫秒转换为日期格式

duebydate = datetime.datetime.fromtimestamp(int(duebytime) / 1e3).strftime('%d %b %Y, %H:%M:%S')

 

#创建 JSON 对象,作为 API 调用的输入

jsonData ='''{

    "fields": {

    "summary": "'''+subject+'''",

    "description": "'''+desc+'''",

        "issuetype": {

            "name": "BUG"

        },

        "project": {

            "key": "ServiceDesk Plus issues"

        },

        "duedate": "'''+duebydate+'''",

        "priority": {

            "name": "'''+priority+'''"

        },

        "customfield_10003": "'''+workorderid+'''"

    }

}'''

 

jirausername = 'jirausername'

jirapassword = 'jirapassword'

 

string = username + ":" + password

stringbytes = bytes(string,"utf-8")

 

base64string = base64.b64encode(stringbytes)

base64string = base64string.decode("utf-8")

 

 

#指定提交 API 调用所需的 HTTP 标头

headers = ''' {

        "X-Version" : "1",

        'Content-Type':'application/json',

        "Accept" : "application/json",

        "Authorization" : "Basic " + base64string

    }'''

 

 

#构造 API 调用的 URL 并将其提交到 Jira Server

 

with requests.Session() as s:

    url = "[Jira_Server]:[Port_Number]/rest/api/2/issue/"

    r = s.post(url,verify=True, data=jsonData,headers=headers)

 

#如果调用成功返回,则创建备注并更新自定义字段

if(r.status_code == 202):

responseobj=r.json()

 

jiraissueid = responseobj['id']

jiraissueurl = responseobj['self']

 

note={}

note["notestext"] = "已创建 Jira 请求,ID: "+jiraissueid+"</br> 问题链接: "+jiraissueurl

 

noteObject={}

noteObject["notes"]=note

 

addNoteJson={}

addNoteJson['INPUT_DATA']=[]

addNoteJson['INPUT_DATA'].append(noteObject)

addNoteJson["OPERATIONNAME"]="ADD_NOTE"

 

updateReqArray={}

updateReqArray['JIRA_ISSUE_ID']=jiraissueid

updateReqArray['JIRA_ISSUE_URL']=jiraissueurl

 

updateFieldsJson={"INPUT_DATA":[]}

updateFieldsJson['INPUT_DATA'].append(updateReqArray)

updateFieldsJson["OPERATIONNAME"]="EDIT_REQUEST"

 

resultjson={}

resultjson["result"] = "success"

resultjson["message"] = "已创建 Jira 请求。包含问题 ID 和 URL 的备注已添加。"

resultjson["operation"] = []

resultjson["operation"].append(addNoteJson)

resultjson["operation"].append(updateFieldsJson)

 

 

#返回 JSON

 

 

print(resultjson)

else:

print("提交请求时出现问题")

  print(r.json())