實現(xiàn)基于飛書webhook監(jiān)聽github代碼提交
前言
在飛書上建立一個自己一個人的群,然后在群里添加了一個機器人,這個機器人能干些什么呢?比如訂閱一些新聞,自動推送到飛書上,或者監(jiān)聽某個項目的代碼提交情況。接下來的例子主要是做一個代碼提交情況推送
飛書Webhook推送
首先,先調(diào)試通飛書機器人webhook的情況,主要是使用了node寫了一個demo,具體里面的地址和參數(shù)可以詳細去查閱飛書提供的API
Demo 代碼:
const rp = require('request-promise');
(async () =>{
const result = await sendWebhook();
console.log(`發(fā)送結(jié)果:${result.StatusMessage}`)
})();
async function sendWebhook() {
const baseUrl = `*********`;
var options = {
method: 'POST',
uri: baseUrl,
body: {
msg_type: "text",
content: {
text: "測試發(fā)送消息-test",
},
},
json: true // Automatically stringifies the body to JSON
};
const result = await rp(options);
return result;
}
項目配置webhook
既然可以成功的使得機器人推送消息,那接著給代碼庫做webhook的基礎(chǔ)配置。
- 某個項目/倉庫,設(shè)置中的Webhooks菜單,進行基礎(chǔ)配置,如下圖顯示:

主要配置四部分:
Payload URL回調(diào)服務的地址;Content type回調(diào)請求頭,建議JSON格式;Secret為了做安全校驗,設(shè)置后會在請求header中增加如下兩個屬性,用來區(qū)分請求的來源,避免暴露的請求被惡意訪問;
X-Hub-Signature: ... X-Hub-Signature-256:...
最后我們選擇由哪些事件來觸發(fā)webhook回調(diào),push event(代碼推送事件)、everything(所有事件)、某些特定事件三種。
配置完成后,嘗試提交代碼下,然后從Recent Deliveries中你會發(fā)現(xiàn)有調(diào)用webhook的記錄,但是數(shù)據(jù)格式不是飛書webhook的數(shù)據(jù)格式要求。兩個不兼容的接口要怎么讓他們可以連接起來?
解決方案:中間服務,github webhook回調(diào)到我的中間服務,中間服務將數(shù)據(jù)封裝成飛書webhook可接收的數(shù)據(jù)格式,然后調(diào)用飛書的webhook地址。從而實現(xiàn)一個代碼提交情況的推送。
中間服務
中間服務使用Koa框架,并監(jiān)聽8002端口,注冊一個接收push接口,該接口主要用于接收github的send事件時,解析其內(nèi)容,并將內(nèi)容轉(zhuǎn)化成飛書webhook接收數(shù)據(jù)參數(shù)。

接收github的webhook事件,數(shù)據(jù)處理并將其轉(zhuǎn)化成飛書的消息格式
router.post("/push", async (ctx) => {
try {
const content = JSON.parse(req.body.payload) ;
const name = content.pusher.name;
const message = content.before;
ctx.body = { code:1,message:success };
} catch (error) {
console.log(error);
}
});
就這樣整個Coding的部分就完成了,剩余就是進行調(diào)試驗證了。如下圖,經(jīng)過一番調(diào)試后在飛書上成功接收到信息:

整個過程,其實還是很簡單的,主要是中間服務承接github發(fā)送的數(shù)據(jù)然后封裝成飛書的消息格式進而進行請求轉(zhuǎn)發(fā)。當然,github發(fā)送的數(shù)據(jù)中有些數(shù)據(jù)我們無法獲取到,可以去調(diào)用其他接口去獲取你想要的數(shù)據(jù)。同時飛書也支持多種消息格式,所以有時間可以對此功能升級,去訂閱一些新聞或者自己完成腳本的抓取進行推送。
以上就是實現(xiàn)基于飛書webhook監(jiān)聽github代碼提交的詳細內(nèi)容,更多關(guān)于飛書webhook監(jiān)聽github代碼提交的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序 詳解Page中data數(shù)據(jù)操作和函數(shù)調(diào)用
這篇文章主要介紹了微信小程序 詳解Page中data數(shù)據(jù)操作和函數(shù)調(diào)用的相關(guān)資料,需要的朋友可以參考下2017-01-01
JS前端模擬Excel條件格式實現(xiàn)數(shù)據(jù)條效果
這篇文章主要為大家介紹了JS前端模擬Excel條件格式實現(xiàn)數(shù)據(jù)條效果,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
Openlayer?add?mark及添加hover效果實例詳解
這篇文章主要為大家介紹了Openlayer?add?mark及添加hover效果實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11

