Java:企业微信推送消息到个人和部门

第一步:我们需要组装请求参数,比如下面这种的JSON字符串
这里接收的个人企业微信ID和部门ID是用符号 | 隔开的

{
   "touser" : "UserID1|UserID2|UserID3",
   "toparty" : "PartyID1|PartyID2",
   "totag" : "TagID1 | TagID2",
   "msgtype" : "text",
   "agentid" : 1,
   "text" : {
       "content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看邮件中心视频实况,聪明避开排队。"
   },
   "safe":0,
   "enable_id_trans": 0,
   "enable_duplicate_check": 0
}

每个字段的含义可以去官网看下
https://work.weixin.qq.com/api/doc/90000/90135/90236#%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF

第二部:发送请求,解析响应结果
getAccessToken()和tokenMap请看上一篇文章
https://blog.csdn.net/xujiangdong1992/article/details/104658225

 public JSONObject sendMessage(String jsonMessage){
        if(tokenMap.get(TOKENKEY) == null){
            getAccessToken();
        }
        String url = send_msg_url.replace("{accessToken}",tokenMap.get(TOKENKEY).getAccessToken());
        logger.info("企业微信消息发送url:"+url);
        JSONObject jsonObject = HttpsUtil.httpsRequest(url, "POST",jsonMessage);
        logger.info("企业微信消息发送返回结果:"+jsonObject);
        //错误消息处理
        if (null != jsonObject) {
            int errcode = jsonObject.getInteger("errcode");
            if (0 == errcode) {
                //批量发送推送消息时,可能存在部分用户发送消息成功,部分用户userid不合法的情况
                if(!"".equals(jsonObject.getString("invaliduser"))){
                    logger.warn("发送企业微信消息成功,部分用户userId不合法,不合法的userId = " + jsonObject.getString("invaliduser"));
                }else {
                    logger.info("发送企业微信消息成功:" + JSON.toJSON(message).toString());
                }
            }else {
                //如果是由于token失效,重新获取token
                if(40014 == errcode || 41001 == errcode || 42001 == errcode){
                    //先锁tokenMap,再替换新的token
                    synchronized (tokenMap){
                        //首先删除过期的token
                        tokenMap.remove(TOKENKEY);
                        AccessToken token = getAccessToken();
                        //替换新的token
                        tokenMap.put(TOKENKEY, token);
                        //重新发送消息
                        sendMessage(message);
                    }
                }else {
                    logger.info("发送企业微信消息失败 errcode:"+jsonObject.getInteger("errcode")+",errmsg:"+jsonObject.getString("errmsg"));
                    throw new BusinessException("发送企业微信消息失败 errcode:"+jsonObject.getInteger("errcode")+",errmsg:"+jsonObject.getString("errmsg"));
                }
            }
        }else {
            logger.info("请求发送企业微信消息返回为空,requestUrl =" + url);
            throw new BusinessException("请求发送企业微信消息返回为空,requestUrl =" + url);
        }
        return jsonObject;
    }

你可能感兴趣的:(Java)