簡體   English   中英

如何使用 Google Cloud Functions 從 JIRA 轉發 webhook 數據?

[英]How to forward webhook data from JIRA using Google Cloud Functions?

我想制作一個簡單的中間人腳本,它從 JIRA webhook 接收數據,然后解析它並將其發送過去(到 Discord,但這並不重要)。

從外觀上看,Cloud Functions 是完美的匹配,所以我制作了一個簡短的腳本,它只是將請求 json 轉發到 Discord 上的一條消息,以查看它發送的數據。

import requests
import json
def forward(request):
    
    data = request.json
    #tried:
    #data = request.get_json()
    #data = request.data
    #data = request.values

    url = 'discord webhook receiver url'

    myobj = {'content': str(data)}
    requests.post(url, data = myobj)
    return '', 200

在 JIRA 端設置 webhook,它有點工作,但不是真的。 首先,它不會觸發某些事件,例如添加評論或編輯任務,僅針對重要(?)事件,例如添加新任務。 其次,它甚至沒有為它發送正確的數據。 這就是我得到的全部

{'timestamp': 1609851709546, 'webhookEvent': 'issuelink_created', 'issueLink': {'id': 10016, 'sourceIssueId': 10007, 'destinationIssueId': 10022, 'issueLinkType': {'id': 10004, 'name': 'jira_subtask_link', 'outwardName': 'jira_subtask_outward', 'inwardName': 'jira_subtask_inward', 'style': 'jira_subtask', 'isSubTaskLinkType': True, 'isSystemLinkType': True}, 'sequence': 12, 'systemLink': True}}

而且我知道這兩件事是錯誤的,因為在測試它時,我還為 Pipedream 設置了另一個 webhook,它對所有更改做出反應,並且數據包含問題名稱、頭像、鏈接。 我正在嘗試做的一切所需的一切。 這兩個 webhook 設置之間沒有任何區別,我將它們都選中了所有事件。

所以我已經做了2天了,沒有任何突破。 也許我誤解了 webhook 的工作原理,或者雲功能不是用於此的服務。 因此,雖然問題是如何在雲功能中做到這一點,但我也對替代方案持開放態度。 (不是那些為你做格式化的,因為這就是我開始做這個的原因)

顯然,Jira 在 webhook 觸發器上發送了 2 個請求,其中一個包含所有有用信息的請求剛剛超過了要放入 Discord 消息的限制,因此它從未發送過它。 這就是我使用它進行日志記錄的結果。

如果有人也在同一個笨蛋路徑上,那么我所做的就是將所有請求數據保存到一個 hastebin 並將鏈接發送到它,就像這樣。

#pack it all into a hastebin
    everything = str(request.headers) + "\n" + str(request.data) + "\n" + str(request.args) + "\n" + str(request.form) +  "\n" + str(request.method) + "\n" + str(request.remote_addr)
    req = requests.post('https://hastebin.com/documents', data=everything)

#send the link id to discord
    myobj = {'content': req.text}
    x = requests.post(url, data = myobj)

剩下的就是解析和格式化 json。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM