50行Java代碼搞定企微API外部群消息推送(新手友好版)
日常開發(fā)中,很多新手覺得調(diào)用企微API推送外部群消息門檻高,實則核心邏輯只需幾十行代碼。本文用最簡示例,帶大家快速實現(xiàn)「企微外部群消息推送」功能,無需復(fù)雜框架,新手也能直接跑通。獲取第三方token,申請地址:QiWe開放平臺
一、核心準備
- 企微后臺配置:創(chuàng)建自建應(yīng)用,記錄3個關(guān)鍵參數(shù)——CorpID(企業(yè)ID)、Secret(應(yīng)用密鑰)、AgentID(應(yīng)用ID),并給應(yīng)用授權(quán)「外部聯(lián)系人」權(quán)限;
- 依賴引入(Maven):只需引入HTTP請求和JSON解析依賴,無需額外框架:
<!-- HTTP請求 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<!-- JSON解析 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.25</version>
</dependency>
二、核心代碼實現(xiàn)(50行極簡版)
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;
public class WeChatMsgSender {
// 替換為你的企微配置
private static final String CORP_ID = "你的企業(yè)ID";
private static final String CORP_SECRET = "你的應(yīng)用Secret";
private static final String CHAT_ID = "外部群ID"; // 外部群唯一標識
// 獲取AccessToken
private static String getToken() throws Exception {
String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s",
CORP_ID, CORP_SECRET);
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
CloseableHttpResponse response = client.execute(get);
String result = EntityUtils.toString(response.getEntity());
JSONObject json = JSONObject.parseObject(result);
return json.getString("access_token");
}
// 發(fā)送外部群消息
public static void sendExternalGroupMsg(String content) throws Exception {
String token = getToken();
String url = String.format("https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token=%s", token);
// 構(gòu)建消息體
JSONObject msg = new JSONObject();
msg.put("chatid", CHAT_ID);
msg.put("msgtype", "text");
JSONObject text = new JSONObject();
text.put("content", content);
msg.put("text", text);
// 發(fā)送POST請求
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
post.setHeader("Content-Type", "application/json;charset=utf-8");
post.setEntity(new StringEntity(msg.toString(), "UTF-8"));
CloseableHttpResponse response = client.execute(post);
String result = EntityUtils.toString(response.getEntity());
System.out.println("發(fā)送結(jié)果:" + result);
}
// 測試方法
public static void main(String[] args) {
try {
sendExternalGroupMsg("Hi!這是Java調(diào)用企微API發(fā)送的外部群消息~");
} catch (Exception e) {
e.printStackTrace();
}
}
}
三、關(guān)鍵注意點(新手避坑)
- 外部群ID獲取:可通過企微API「externalcontact/groupchat/list」接口查詢,或在企微客戶端復(fù)制群ID;
- Token有效期:7200秒,生產(chǎn)環(huán)境需緩存,避免每次調(diào)用都刷新;
- 權(quán)限問題:應(yīng)用必須開啟「允許發(fā)送外部群消息」,否則會返回40044錯誤;
- 限流規(guī)則:單應(yīng)用默認200次/分鐘,高頻發(fā)送需加限流邏輯。
四、擴展建議
新手可在此基礎(chǔ)上優(yōu)化:比如添加Token本地緩存、異常重試、批量發(fā)送拆分等。如果需要適配高并發(fā)場景,可引入線程池和令牌桶限流,核心邏輯不變,只需增加少量封裝。
這個極簡示例覆蓋了企微API調(diào)用的核心流程,代碼無冗余,新手只需替換配置參數(shù)即可跑通。如果需要定制化開發(fā)(如對接業(yè)務(wù)系統(tǒng)、自動回復(fù)、批量推送),可私信交流,提供輕量化解決方案。
贊
收藏
回復(fù)
分享
微博
QQ
微信
舉報
回復(fù)
相關(guān)推薦

















