繁体   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