import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/**
* @ClassName QIYeWxUtil
* @Author ZhangRF
* @CreateDate 2021/10/20
* @Decription 企业微信机器人消息发送工具类
*/
@Slf4j
public class QIYeWxUtil {
/**
* 企业微信消息推送,最大长度5120字节
*
* @param content 内容
* @param profile 环境
* @param webHookAddress 机器人地址
* @return
*/
public static boolean sendMessage(String content, String profile, String webHookAddress) {
content = StringUtil.subStringByBytes(content, 0, 5120);
String msgtype = "text";
content = "【项目名称】【" + profile + "】" + content;
String atMobiles = "[手机号]";
String isAtAll = "false";
JSONObject message = new JSONObject();
message.put("msgtype", msgtype);
JSONObject textJsonObject = new JSONObject();
textJsonObject.put("content", content);
message.put("text", textJsonObject);
JSONObject atJsonObject = new JSONObject();
atJsonObject.put("atMobiles", atMobiles);
atJsonObject.put("isAtAll", isAtAll);
message.put("at", atJsonObject);
OkHttpClient client = new OkHttpClient.Builder()
// 设置连接超时时间
.connectTimeout(10, TimeUnit.SECONDS)
// 设置读取超时时间
.readTimeout(20, TimeUnit.SECONDS)
.build();
MediaType contentType = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(contentType, message.toJSONString());
Request request = new Request.Builder().url(webHookAddress).post(body).addHeader("cache-control", "no-cache").build();
try {
Response response = client.newCall(request).execute();
byte[] datas = response.body().bytes();
String respMsg = new String(datas);
JSONObject resultJSON = JSONObject.parseObject(respMsg);
if (resultJSON.getIntValue("errcode") == 0) {
// log.info("消息发送成功!");
return true;
}
log.error("消息发送失败, 错误信息如下: {}", resultJSON.getString("errmsg"));
return false;
} catch (IOException e) {
log.error("消息发送失败, 异常信息如下: {}", e.getMessage());
return false;
}
}
}