forked from chanjarster/weixin-java-tools
-
-
Notifications
You must be signed in to change notification settings - Fork 8.5k
CP_主动发送消息
bright edited this page Sep 9, 2021
·
3 revisions
和公众号不同,企业号消息发送接口本身就带有群发功能。
wxCpMessageService = new WxCpMessageServiceImpl(wxCpService);
WxCpMessage message = ...;
// 设置消息的内容等信息
wxCpMessageService.send(message);
不同类型的客服消息有不同的构造方法:
WxCpMessage wxCpMessage = WxCpMessage
.TEXT()
.agentId(...) // 企业号应用ID
.toUser("非必填,UserID列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送")
.toParty("非必填,PartyID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.toTag("非必填,TagID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.content("sfsfdsdf")
.build();
wxCpMessageService.send(message);
WxCpMessage
.IMAGE()
.agentId(...) // 企业号应用ID
.toUser("非必填,UserID列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送")
.toParty("非必填,PartyID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.toTag("非必填,TagID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.mediaId("MEDIA_ID")
.build();
WxCpMessage.VOICE()
.agentId(...) // 企业号应用ID
.toUser("非必填,UserID列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送")
.toParty("非必填,PartyID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.toTag("非必填,TagID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.mediaId("MEDIA_ID")
.build();
WxCpMessage.VIDEO()
.agentId(...) // 企业号应用ID
.toUser("非必填,UserID列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送")
.toParty("非必填,PartyID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.toTag("非必填,TagID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.title("TITLE")
.mediaId("MEDIA_ID")
.thumbMediaId("MEDIA_ID")
.description("DESCRIPTION")
.build();
NewArticle article1 = new NewArticle();
article1.setUrl("URL");
article1.setPicUrl("PIC_URL");
article1.setDescription("Is Really A Happy Day");
article1.setTitle("Happy Day");
NewArticle article2 = new NewArticle();
article2.setUrl("URL");
article2.setPicUrl("PIC_URL");
article2.setDescription("Is Really A Happy Day");
article2.setTitle("Happy Day");
WxCpMessage.NEWS()
.agentId(...) // 企业号应用ID
.toUser("非必填,UserID列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送")
.toParty("非必填,PartyID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.toTag("非必填,TagID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数")
.addArticle(article1)
.addArticle(article2)
.build();
String encType = request.getParameter("encrypt_type");
String nonce = request.getParameter("nonce");
String timestamp = request.getParameter("timestamp");
String msgSignature = request.getParameter("msg_signature");
String signature = request.getParameter("signature");
String openid = request.getParameter("openid");
log.info("接收微信请求:[openid=[{}], [openid=[{}],[signature=[{}], encType=[{}], msgSignature=[{}],"
+ " timestamp=[{}], nonce=[{}], requestBody=[{}] ",
appid, openid, signature, encType, msgSignature, timestamp, nonce, requestBody);
// 请求里面没有对应信息。 // if (!this.wxMpService.switchover(appid)) { //appid // throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appid)); // }
if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
throw new IllegalArgumentException("非法请求,可能属于伪造的请求!");
}
return ResponseEntity.ok("");