1. 前言
上一篇我们获取到了用户信息,本篇我们实现下主动给客户发送消息,也叫客服消息。
2. 代码
代码比较简单,如下:
/**
* 客服消息
*/
@RestController
public class KefuMessageController {
@Autowired
private WxMpService wxMpService;
/**
* 主动发送消息
*/
@RequestMapping("/sendMessage")
public boolean sendMessage(@RequestParam("openid") String openid, @RequestParam("content") String content) throws WxErrorException {
WxMpKefuMessage message=WxMpKefuMessage.TEXT().toUser(openid).content(content).build();
wxMpService.getKefuService().sendKefuMessage(message);
return true;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
通过sendMessage方法,即可给指定openid的用发送content文本消息。
3. 测试
访问http://127.0.0.1/wx-server/sendMessage?openid=oINiq6UqTiKqfXN3H6RmeKvvRnmw&content=这是一个测试消息。注意openid为之前章节获取的关注本公众号的用户openid。
此时打开对应用户关注的公众号会话信息,会发现已收到相关消息。
4. 发送其他类型消息
实际上,除了文本消息,还有其他类型的消息,此处给出格式,感兴趣的同学自己去研究就OK。
文本消息:
WxMpKefuMessage
.TEXT()
.toUser("OPENID")
.content("sfsfdsdf")
.build();
图片消息:
WxMpKefuMessage
.IMAGE()
.toUser("OPENID")
.mediaId("MEDIA_ID")
.build();
语音消息:
WxMpKefuMessage.VOICE()
.toUser("OPENID")
.mediaId("MEDIA_ID")
.build();
视频消息:
WxMpKefuMessage.VIDEO()
.toUser("OPENID")
.title("TITLE")
.mediaId("MEDIA_ID")
.thumbMediaId("MEDIA_ID")
.description("DESCRIPTION")
.build();
音乐消息:
WxMpKefuMessage.MUSIC()
.toUser("OPENID")
.title("TITLE")
.thumbMediaId("MEDIA_ID")
.description("DESCRIPTION")
.musicUrl("MUSIC_URL")
.hqMusicUrl("HQ_MUSIC_URL")
.build();
图文消息:
WxMpKefuMessage.WxArticle article1 = new WxMpKefuMessage.WxArticle();
article1.setUrl("URL");
article1.setPicUrl("PIC_URL");
article1.setDescription("Is Really A Happy Day");
article1.setTitle("Happy Day");
WxMpKefuMessage.WxArticle article2 = new WxMpKefuMessage.WxArticle();
article2.setUrl("URL");
article2.setPicUrl("PIC_URL");
article2.setDescription("Is Really A Happy Day");
article2.setTitle("Happy Day");
WxMpKefuMessage.NEWS()
.toUser("OPENID")
.addArticle(article1)
.addArticle(article2)
.build();
5. 小结
使用比较多的是文本消息,本文给出示例,参考实现即可。