Java代码实现向企业微信发送消息

1.向企业微信发送消息

        让用户订阅企业微信,从而用户的微信能收到发送的消息

1.1 注册企业微信

企业微信icon-default.png?t=N7T8https://work.weixin.qq.com/wework_admin/register_wx?from=myhome

1.2 创建企业微信应用

1.3 创建Java项目(我用的jdk1.8)

1.3.1 导入依赖

<!-- 企业微信配置依赖-->
<dependency>
        <groupId>com.github.binarywang</groupId>
        <artifactId>weixin-java-cp</artifactId>
        <version>4.0.8.B</version>
</dependency>
<!-- redis依赖-->
<dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.6.0</version>
</dependency>
<!-- fastjson-->
<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.76</version>
</dependency>

1.3.2 创建配置类

package com.linkwx.company;

import com.alibaba.fastjson.JSON;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
import org.apache.commons.lang3.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * 推送企业微信配置
 * */
public class WxConfig {
    private static Integer agentId=应用id;
    private static String secret="应用密钥";
    private static String corpId="企业微信id";
    // 配置企业微信服务
    public static WxCpService getWxCpService() {
        WxCpService wxCpService=new WxCpServiceImpl();
        WxCpDefaultConfigImpl config =new WxCpDefaultConfigImpl();
        config.setAgentId(agentId);
        config.setCorpSecret(secret);
        config.setCorpId(corpId);
        resetTokenAndJsApi(wxCpService,config);
        return wxCpService;
    }
// 重置token
    public static void resetTokenAndJsApi(WxCpService wxCpService,WxCpDefaultConfigImpl wxCpDefaultConfig) {
    // 配置redis
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(8);
        jedisPoolConfig.setMaxTotal(18);
        // redis启动后,默认启动的是6379端口,没有密码可以不要最后的参数
        Jedis jedis =new JedisPool(jedisPoolConfig,"localhost",6379,5000,"111111").getResource();

        wxCpService.setWxCpConfigStorage(wxCpDefaultConfig);
        String wxAccessToken = "wx"+agentId;
        String json=jedis.get(wxAccessToken);
        if(!StringUtils.isEmpty(json)){
            wxCpDefaultConfig = JSON.parseObject(json,WxCpDefaultConfigImpl.class);
        }
        if(wxCpDefaultConfig.isAccessTokenExpired()){
            try {
                String accessToken = null;
                accessToken =wxCpService.getAccessToken(false);
                wxCpDefaultConfig.setAccessToken(accessToken);
            }catch (WxErrorException e){
                e.printStackTrace();
            }
        }
        if(wxCpDefaultConfig.isJsapiTicketExpired()){
            String jsApi = null;
            try {
                jsApi = wxCpService.getJsapiTicket();
                wxCpDefaultConfig.setJsapiTicket(jsApi);
            } catch (WxErrorException e) {
                e.printStackTrace();
            }
        }
        jedis.set(wxAccessToken,JSON.toJSONString(wxCpDefaultConfig));
        jedis.close();
    }
}

 

1.3.3 创建发送消息的方法调用企业微信接口

package com.linkwx.company;

import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.impl.WxCpMessageServiceImpl;
import me.chanjar.weixin.cp.bean.message.WxCpMessage;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 发送消息功能代码
 * */
public class sendMessage {
    public static void SendToWx(String user, String title, String message, String url)throws WxErrorException {
        //微信消息对象
        WxCpMessageServiceImpl wxCpMessageService = new WxCpMessageServiceImpl(WxConfig.getWxCpService());
        WxCpMessage wxCpMessage = new WxCpMessage();
        wxCpMessage.setSafe("0");
        wxCpMessage.setMsgType("textcard");

        //发送给用户:userid
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String time = format.format(new Date());
        //设置发送用户
        wxCpMessage.setToUser(user);
        //设置发送标题
        wxCpMessage.setTitle(title);
        //设置发送内容
        wxCpMessage.setDescription(message);
        //设置跳转url
        wxCpMessage.setUrl(url);
        wxCpMessage.setBtnTxt("api");
        wxCpMessageService.send(wxCpMessage);
    }

}

1.4 总结

        这个方法需要你服务器的ip是公网ip,然后需要在企业微信添加信任ip

 

很高兴回答您的问题。以下是Java代码实现企业微信客户发送节日祝福的示例: ``` import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSONObject; import com.tencent.wework.api.domain.response.external.timed_task.ScheduleResponse; import com.tencent.wework.api.util.HttpUtils; public class SendMsgToChat { // 发送企业微信消息的接口URL public static final String SEND_MESSAGE_URL = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="; // 获取企业微信 access_token 的接口URL public static final String GET_ACCESS_TOKEN_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=your_corpid&corpsecret=your_corpsecret"; // 企业 ID,可以在企业微信管理后台查看 public static final String CORP_ID = "your_corpid"; // 发送企业微信客户消息的应用 agentId,可以在企业微信管理后台查看 public static final String AGENT_ID = "your_agentid"; // 客户标签 ID,可以在企业微信管理后台的客户标签中查看 public static final String TAG_ID = "your_tagid"; public static void main(String[] args) { // 获取企业微信 access_token String accessToken = getAccessToken(); // 发送消息 sendMessageToTag(accessToken, "Happy New Year!"); } /** * 获取企业微信 access_token * * @return */ private static String getAccessToken() { String accessToken = ""; String result = HttpUtils.get(GET_ACCESS_TOKEN_URL); JSONObject jsonObject = JSONObject.parseObject(result); if (jsonObject.containsKey("access_token")) { accessToken = jsonObject.getString("access_token"); } return accessToken; } /** * 发送消息给指定标签的客户 * * @param accessToken * @param msgContent */ private static void sendMessageToTag(String accessToken, String msgContent) { JSONObject jsonObject = new JSONObject(); jsonObject.put("toparty", TAG_ID); jsonObject.put("msgtype", "text"); JSONObject text = new JSONObject(); text.put("content", msgContent); jsonObject.put("text", text); String postData = jsonObject.toJSONString(); String url = SEND_MESSAGE_URL + accessToken; String result = HttpUtils.post(url, postData); ScheduleResponse response = JSONObject.parseObject(result, ScheduleResponse.class); System.out.println(response.toString()); } } ``` 在上面的代码中,我们首先定义了发送企业微信消息的接口URL、获取企业微信 access_token 的接口URL、企业 ID、应用 agentId 和客户标签 ID,这些信息需要替换为您自己企业微信的相应信息。然后,我们定义了两个方法,一个用于获取企业微信 access_token,另一个用于发送消息给指定标签的客户。 在 main 方法中,我们首先获取企业微信 access_token,然后调用 sendMessageToTag 方法发送消息。sendMessageToTag 方法中,我们首先构造发送消息的请求体(客户标签 ID 和消息内容),然后使用 HttpUtils 发送 POST 请求向企业微信发送消息。 注意:这里的企业微信客户是指标签下的客户,需要先在企业微信管理后台的客户标签中创建客户标签并添加客户,然后使用该客户标签 ID 发送消息。 希望这个 Java 示例对您有所帮助。如果您还有其他问题,请随时提出。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值