You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现GitHub合并提交时自动推送消息至Webex空间?

问题解答

1. 能否实现合并触发自动发送Webex消息?

完全可以实现。核心逻辑是借助GitHub的Webhooks监听PR合并(或master分支推送)事件,当事件触发时,调用Webex机器人的API发送消息到指定空间。

2. 能否用Windows PowerShell发送Webex消息?

没问题,直接用PowerShell的Invoke-RestMethod调用Webex的消息API即可,前提是你已经拿到Webex机器人的访问令牌。示例脚本如下:

# 配置参数
$webexToken = "你的机器人访问令牌"
$roomId = "目标Webex空间的ID"
$githubRepoUrl = "你的GitHub仓库链接"
$message = "已合并PR到master分支,仓库链接:$githubRepoUrl"

# 构造请求体
$body = @{
    roomId = $roomId
    text = $message
} | ConvertTo-Json

# 发送请求
Invoke-RestMethod -Uri "https://webexapis.com/v1/messages" -Method Post -Headers @{Authorization = "Bearer $webexToken"} -Body $body -ContentType "application/json"

提示:Webex空间的Room ID可以通过调用Webex API的GET /v1/rooms接口查询获取。

3. 如何将GitHub合并事件与Webex机器人集成触发?

按以下步骤完成集成:

  • 步骤1:配置GitHub Webhook

    1. 进入GitHub仓库的「Settings」→「Webhooks」→「Add webhook」
    2. 填写「Payload URL」:如果脚本在本地运行,需用内网穿透工具(如ngrok)将本地端口映射到公网,填映射后的公网地址+触发路径;如果用云服务器运行,直接填服务器公网地址
    3. 「Content type」选择application/json
    4. 事件选择「Let me select individual events」,勾选「Pull requests」和「Pushes」(PR合并到master时会触发这两类事件)
    5. 勾选「Active」后保存
  • 步骤2:用PowerShell搭建事件触发服务
    需要一个简单的HTTP服务接收GitHub Webhook的请求,判断事件类型后触发消息发送脚本。示例代码:

# 创建HTTP监听器
$listener = New-Object System.Net.HttpListener
$listener.Prefixes.Add("http://localhost:8080/github-webhook/") # 本地监听端口
$listener.Start()

Write-Host "等待GitHub Webhook请求..."

while ($true) {
    $context = $listener.GetContext()
    $request = $context.Request
    $response = $context.Response

    # 读取GitHub发送的事件数据
    $reader = New-Object System.IO.StreamReader($request.InputStream)
    $body = $reader.ReadToEnd()
    $reader.Close()

    # 判断是否为PR合并或master分支推送事件
    $eventData = $body | ConvertFrom-Json
    if ($request.Headers["X-GitHub-Event"] -eq "pull_request" -and $eventData.action -eq "closed" -and $eventData.pull_request.merged -eq $true) {
        # 调用发送Webex消息的脚本(假设脚本名为Send-WebexMessage.ps1)
        .\Send-WebexMessage.ps1
    } elseif ($request.Headers["X-GitHub-Event"] -eq "push" -and $eventData.ref -eq "refs/heads/master") {
        # 直接推送到master时也触发消息
        .\Send-WebexMessage.ps1
    }

    # 返回响应给GitHub
    $response.ContentType = "text/plain"
    $buffer = [System.Text.Encoding]::UTF8.GetBytes("OK")
    $response.ContentLength64 = $buffer.Length
    $response.OutputStream.Write($buffer, 0, $buffer.Length)
    $response.OutputStream.Close()
}

$listener.Stop()

提示:运行脚本后,用ngrok映射本地8080端口(如ngrok http 8080),将生成的公网地址填入GitHub Webhook的Payload URL中。

  • 步骤3:测试验证
    合并一个PR到master分支,检查Webex空间是否收到消息,同时查看GitHub Webhook的「Recent Deliveries」确认请求是否成功。

内容的提问来源于stack exchange,提问作者Yaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:50:27