1. 概述
群发消息的意思是将消息发给一群人,这个好理解。当然,公众平台这个领域,群发消息是要发给关注了本公众号的人群的。
公众号提供了两种群发方式,一个是发给多个openid,一个是按标签发送,接下来实现下。
2. 代码部分
代码比较简单如下,注意两种发送方式使用的类不同。
/**
* 群发消息控制器
*/
@Api(tags = "群发消息API")
@RestController
public class MassMessageController {
@Autowired
private WxMpService wxMpService;
@ApiOperation(value = "指定openids发送")
@PostMapping("/massOpenIdsMessageSend")
public WxMpMassSendResult massOpenIdsMessageSend(@RequestParam("openids") String[] openids, @RequestParam("content") String content) throws WxErrorException {
WxMpMassOpenIdsMessage massMessage = new WxMpMassOpenIdsMessage();
massMessage.setMsgType(WxConsts.MassMsgType.TEXT);
massMessage.setContent(content);
for (String openid : openids) {
massMessage.getToUsers().add(openid);
}
WxMpMassSendResult massResult = wxMpService.getMassMessageService().massOpenIdsMessageSend(massMessage);
return massResult;
}
@ApiOperation(value = "指定标签发送")
@PostMapping("/massGroupMessageSend")
public WxMpMassSendResult massGroupMessageSend(@RequestParam("tagId") Long tagId, @RequestParam("content") String content) throws WxErrorException {
WxMpMassTagMessage massMessage = new WxMpMassTagMessage();
massMessage.setMsgType(WxConsts.MassMsgType.TEXT);
massMessage.setContent(content);
massMessage.setTagId(tagId);
WxMpMassSendResult massResult = wxMpService.getMassMessageService().massGroupMessageSend(massMessage);
return massResult;
}
}
3. 测试
启动项目后,先查询用户列表得到openid,然后查询标签列表得到tagId,然后进行接口测试即可。
注意调用成功后,对应用户的微信会收到公众号主动发送过来的消息。
收到后,效果如下:
4. 小结
注意群发消息需要发给多个人,所以在通过openids发送时,至少得填写两个人的openid。