企业微信应用发送消息

项目场景:

企业微信应用发送定时任务消息

需求文本消息


遇到的bug

1.本地测试遇见“errcode“:60020,“errmsg“:“not allow to access from your ip

        需要添加应用可信Ip,这里面编辑就行

        

2.发送报错errcode":40008,"errmsg":"Warning: wrong json format

        我这里是参数入错

        这是官方文档

发送应用消息 - 接口文档 - 企业微信开发者中心

        本地因为用的阿里规范(驼峰的),匹配不到,报错


代码实现:

获取发送目标  删减的,成员Id根据项目获取

List<User> list = new ArrayList<>();
String user = "";
for (int i = 0; i<list.size();i++){
    if (i < list.size()-1 ){
        String userCode = list.get(i).getUserId();
        user += userCode+"|";
    }else{
        String userCode = list.get(i).getUserId();
        user += userCode;
    }
}

发送消息:

/*
        封装消息
*/
@Override
public AjaxResult sendMessages(String toUser, String contentValue) {
    //创建文本消息对象
    TextMessageVo message = new TextMessageVo();
    message.setTouser(toUser);
    message.setMsgtype("text");
    TextVo text = new TextVo();
    text.setContent(contentValue);
    message.setText(text);
    //发送消息
    AjaxResult ajaxResult = sendMessage(message);

    return ajaxResult;
}

/**
 * 公共方法:发送消息
 * @param message
 */
public AjaxResult sendMessage(BaseMessageVo message){
    Integer agentId = Integer.valueOf(DictUtils.getDictValue("enterprise_wx","agentId"));
    message.setAgentid(agentId);
    // 获取 accessToken
    String accessToken = weiXinQiYeUtil.accessToken();
    // 1.获取 json 字符串:将 message 对象转换为 json 字符串
    Gson gson = new Gson();
    String jsonMessage = gson.toJson(message);
    System.out.println("jsonTextMessage:"+jsonMessage);

    // 2.请求的 url
    String sendMessageUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="+accessToken;

    // 3.调用接口,发送消息
    JSONObject jsonObject = HttpRequestUtil.httpRequest(sendMessageUrl, "POST", jsonMessage);
    System.out.println("jsonObject:"+jsonObject.toString());

    // 4.错误消息处理
    if (null != jsonObject) {
        if (0 != jsonObject.getByte("errcode")) {
            return AjaxResult.error("发送消息失败!");
        }
        return AjaxResult.success();
    }
    return null;
}
@Data
public class TextMessageVo extends BaseMessageVo{

    /**
     * 文本
     */
    private TextVo text;
    /**
     * 表示是否是保密消息,0表示否,1表示是,默认0
     */
    private int safe;
}
@Data
public class BaseMessageVo {

    /**
     * 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。
     * 非必传
     * 特殊情况:指定为@all,则向该企业应用的全部成员发送
     * touser、toparty、totag不能同时为空。
     */
    private String touser;
    /**
     * 部门ID列表,多个接收者用‘|’分隔,最多支持100个。
     * 非必传
     * 当touser为@all时忽略本参数
     */
    private String toparty;
    /**
     * 标签ID列表,多个接收者用‘|’分隔,最多支持100个。
     * 非必传
     * 当touser为@all时忽略本参数
     */
    private String totag;
    /**
     * 消息类型
     * 必传
     */
    private String msgtype;
    /**
     * 企业应用的id。可在应用的设置页面查看
     * 必传
     */
    private int agentid;
}
@Data
public class TextVo {

    /**
     * 消息内容,最长不超过2048个字节
     * 必传
     */
    private String content;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值