QiWe开放平台 · 个人名片
API驱动企微自动化,让开发更高效
核心能力:API 驱动企微自动化,提升开发效率
对接通道:进入官方站点联系客服
团队定位:企微生态深度服务,专注 API+RPA 融合技术方案
核心理念:合规赋能,以技术简化企微开发全流程
01. 为什么你拿不到 chat_id?
在企业微信的权限体系中,外部群(包含外部客户的群)的 ID 获取比内部群严格得多。很多同学尝试用内部群的接口去拉取外部群列表,结果往往是返回空数据或报错。
核心逻辑: 外部群属于“客户联系”范畴,必须通过 externalcontact 相关的接口获取。
02. 获取流程分解
第一步:配置权限(最关键)
-
进入企微管理后台 -> 客户联系 -> API。
-
在“可调用接口的应用”中,添加你正在开发的自建应用。
-
确保该应用拥有查看“客户群”的权限范围。
第二步:获取客户群列表
使用 /externalcontact/groupchat/list 接口。这是一个分页接口,建议初次拉取时将 limit 设大一些。
Python 示例:
def get_group_list(access_token):
url = f"https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/list?access_token={access_token}"
params = {
"status_filter": 0, # 0-所有, 1-已解散
"limit": 100
}
res = requests.post(url, json=params)
return res.json().get("group_list", []) # 这里拿到的是 chat_id 列表
第三步:获取群详情(验证群名与成员)
拿到 chat_id 后,调用 /externalcontact/groupchat/get 获取群名称,确保你没发错群。
03. 核心代码实现(Go/Java)
Go 实现(结构化处理):
func GetChatDetail(token string, chatId string) {
apiUrl := "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/get?access_token=" + token
reqBody := map[string]string{"chat_id": chatId}
jsonData, _ := json.Marshal(reqBody)
resp, _ := http.Post(apiUrl, "application/json", bytes.NewBuffer(jsonData))
// 解析返回的 group_chat 字段,获取群名和群主信息
}
Java 实现(通用配置):
public void fetchGroupDetail(String accessToken, String chatId) {
String url = "https://qyapi.weixin.qq.com/cgi-bin/externalcontact/groupchat/get?access_token=" + accessToken;
JSONObject params = new JSONObject();
params.put("chat_id", chatId);
// 建议使用成熟的 Http 客户端库,注意处理 JSONObject 返回
String response = HttpUtil.post(url, params.toJSONString());
System.out.println("群详情数据:" + response);
}
04. 避坑总结(干货)
-
应用限制: 代开发应用和自建应用获取到的
chat_id可能不互通,切换应用时需重新拉取。 -
群主权限: 自建应用只能获取到其可见范围内配置的成员所创建/加入的外部群。如果群主不在应用的可见范围内,该群对 API 是“不可见”的。
-
敏感信息: 外部群成员的微信 openid 是加密的,API 返回的是
userid(企微成员)或external_userid(外部联系人)。

1307

被折叠的 条评论
为什么被折叠?



