news 2026/2/25 11:05:05

手把手教你实现:当 GitHub 收到 Star 后,通过企微外部群自动通知

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你实现:当 GitHub 收到 Star 后,通过企微外部群自动通知

QiWe开放平台 · 个人名片

API驱动企微自动化,让开发更高效

核心能力:为开发者提供标准化接口、快速集成工具,助力产品高效拓展功能场景

官方站点:https://www.qiweapi.com

团队定位:专注企微API生态的技术服务团队

对接通道:搜「QiWe 开放平台」联系客服

核心理念:合规赋能,让企微开发更简单、更高效


GitHub Webhook 会在特定事件发生时向你的服务器发送POST请求,我们的目标是解析它,并调用企微add_msg_template接口。

1. 业务流程设计

  1. GitHub 发起 Webhook:包含仓库名、操作者、事件类型。

  2. Go 接口验证签名:确保请求真的来自 GitHub,防止恶意攻击。

  3. 构造卡片消息:根据不同事件(如 Star 或 New Issue)渲染不同的文案。

  4. 异步推送企微:避免阻塞 GitHub 的回调连接。

2. 代码实现:Go 语言版本

我们使用Gin框架来快速搭建服务。

package main import ( "crypto/hmac" "crypto/sha256" "encoding/hex" "fmt" "io" "net/http" "github.com/gin-gonic/gin" ) const ( githubSecret = "your_github_webhook_secret" qwToken = "your_qywx_access_token" ) func main() { r := gin.Default() r.POST("/github/webhook", func(c *gin.Context) { // 1. 验证 GitHub 签名 body, _ := io.ReadAll(c.Request.Body) signature := c.GetHeader("X-Hub-Signature-256") if !verifySignature(githubSecret, signature, body) { c.JSON(403, gin.H{"error": "Invalid signature"}) return } // 2. 获取事件类型 event := c.GetHeader("X-GitHub-Event") // 3. 异步处理消息发送,不影响 GitHub 的回调响应 go processGithubEvent(event, body) c.JSON(200, gin.H{"status": "accepted"}) }) r.Run(":8080") } // verifySignature 验证签名安全性 func verifySignature(secret, signature string, body []byte) bool { h := hmac.New(sha256.New, []byte(secret)) h.Write(body) expected := "sha256=" + hex.EncodeToString(h.Sum(nil)) return hmac.Equal([]byte(expected), []byte(signature)) } func processGithubEvent(event string, body []byte) { // 解析 JSON 并调用之前写的 SendExternalGroupMsg 接口 // 如果是 "watch" (Star) 事件 -> 发送:🌟 新增一个 Star! // 如果是 "issues" 事件 -> 发送:🛠 有人提了新 Issue。 fmt.Printf("处理 GitHub 事件: %s\n", event) }

3. 如何配置 GitHub 端?

  1. 进入你的 GitHub 仓库设置 ->Settings->Webhooks->Add webhook

  2. Payload URL: 填写你的服务器地址(如http://your-ip:8080/github/webhook)。

  3. Content type: 选择application/json

  4. Secret: 填写你在代码中定义的githubSecret

  5. Which events: 选择Let me select individual events,勾选StarsIssues

4. 关键避坑点

  • 公网地址问题:GitHub 无法访问你的localhost。开发调试时,可以使用ngrokcrawlee等工具做内网穿透。

  • Star 事件的特殊性:在 Webhook 中,Star 事件对应的名称是watch,而不是star

  • 内容去重:GitHub 有时会因为网络问题重发 Webhook。建议在 Go 中对X-GitHub-Delivery(唯一请求 ID)做 1 分钟内的去重处理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/24 22:13:57

全网最全 10个降AI率工具测评:专科生降AI率必备指南

在当前高校教育中,AI写作工具的广泛应用让论文创作变得更加高效,但也带来了AIGC率偏高的问题。尤其是对于专科生来说,如何在保证论文质量的同时有效降低AI痕迹和查重率,成为了一个亟需解决的难题。这时候,AI降重工具就…

作者头像 李华
网站建设 2026/2/23 7:41:36

8吨机动绞磨

长云科技响箭8号柴油款机动绞磨机专为严苛的无电力供应环境设计,其核心采用柴油机动力,扭矩强劲且运行稳定,为山区、野外等复杂地形的重型牵引作业提供了可靠的安全保障。 其搭载柴油机动力,额定牵引力高达80KN,扭矩强…

作者头像 李华
网站建设 2026/2/19 12:03:48

当我决定把家安在凤五:一位改善者的选房心路

每一次决定换房,都像是对未来生活的一次郑重投票。在西安看了大半年房子,从新区看到主城,从概念看到实景,最终让我停下脚步的,是招商林屿缦岛。这篇文字,想从一个普通购房者的角度,聊聊我看到的…

作者头像 李华
网站建设 2026/2/24 7:35:30

2026 论文写作工具红黑榜:AI 软件怎么选?一篇讲透

红榜优先选毕业之家、PaperRed、豆包,适配国内学术规范;黑榜避开低质免费工具、无真实引用平台、过度依赖全文生成的工具,优先按需求匹配三维模型(需求匹配度 - 数据可信度 - 成本承受力)。 一、红榜:10 款…

作者头像 李华
网站建设 2026/2/24 21:05:10

9 款 AI 写论文哪个好?实测后这款毕业论文神器凭硬实力出圈

毕业季选 AI 写论文工具,堪比 “大海捞针”—— 有的文献虚构无法溯源,有的生成内容空洞无数据支撑,有的只能简单润色没实质帮助。为帮大家避坑,我们实测了 9 款主流 AI 写论文工具(Aibiye、Aicheck、Askpaper、OpenAI…

作者头像 李华
网站建设 2026/2/23 0:28:07

虎贲等考 AI:以 AI 重构学术创作,全流程赋能论文写作新范式

在学术探索的道路上,无数学生与科研工作者曾深陷选题迷茫、文献繁杂、数据空洞、查重反复的困境。传统论文写作中,工具功能碎片化、素材真实性难保障、全流程衔接不畅等问题,严重消耗着创作精力。虎贲等考 AI 智能写作平台(官网&a…

作者头像 李华