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

如何通过GitHub Webhook获取项目条目关联的Issue?

如何从GitHub Projects v2条目Webhook负载中获取关联的Issue?

我已经配置了projects_v2_item的Webhook,当更新项目中的条目时会触发请求,但请求负载里只有项目条目本身的信息,没有包含关联的Issue详情。下面是Webhook返回的负载示例:

{
    "action": "edited",
    "projects_v2_item": {
        "id": 10000001,
        "node_id": "###",
        "project_node_id": "###",
        "content_node_id": "###",
        "content_type": "Issue",
        "creator": {
            "login": "sumedhe",
            "id": 2020370,
            "node_id": "###",
            ...
        },
        "created_at": "2024-10-01T08:29:55Z",
        "updated_at": "2024-10-01T08:31:44Z",
        "archived_at": null
    },
    "changes": {
        "field_value": {
            "field_node_id": "###",
            "field_type": "single_select",
            "field_name": "Status",
            "project_number": 1,
            "from": null,
            "to": {
                "id": "###",
                "name": "Todo",
                "color": "GREEN",
                "description": "This+item+hasn't+been+started"
            }
        }
    },
    "organization": {
        "login": "selforgmap",
        "id": 47916970,
        ...
    },
    "sender": {
        "login": "sumedhe",
        "id": 2020370,
        ...
    }
}

解决方法

GitHub的projects_v2_item Webhook负载确实不会直接返回关联Issue的完整数据,但你可以通过负载里的关键字段,调用GitHub API获取Issue详情:

1. 使用GraphQL API(推荐)

负载中的content_node_id就是关联Issue的Node ID,直接用它查询Issue信息:

query GetIssueByNodeId($nodeId: ID!) {
  node(id: $nodeId) {
    ... on Issue {
      id
      number
      title
      body
      state
      createdAt
      updatedAt
      repository {
        name
        owner {
          login
        }
      }
      # 按需添加更多需要的字段
    }
  }
}

将$nodeId替换为负载里的projects_v2_item.content_node_id,调用GitHub GraphQL端点即可拿到完整的Issue数据。

2. 使用REST API

如果更习惯REST风格,可先通过Node ID获取Issue的仓库和编号信息,再调用Issue详情接口:

  1. 先查询Node ID对应的Issue基础信息:
curl -H "Authorization: token YOUR_GITHUB_TOKEN" \
  https://api.github.com/graphql \
  -d '{"query":"query { node(id: \"CONTENT_NODE_ID\") { ... on Issue { number repository { name owner { login } } } } }"}'
  1. 拿到仓库所有者、仓库名和Issue编号后,调用详情接口:
curl -H "Authorization: token YOUR_GITHUB_TOKEN" \
  https://api.github.com/repos/OWNER/REPO/issues/ISSUE_NUMBER

注意事项

  • 确保你的GitHub Token有足够权限(至少需要repo范围权限,私有仓库需对应权限);
  • 可在Webhook处理逻辑中直接集成API调用,同步获取Issue数据;
  • 若担心API调用延迟,可缓存已获取的Issue数据,减少重复请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:02:39