微信公众号发送消息之发送客服消息基类封装
- - CSDN博客移动开发推荐文章微信公众号发送消息之发送客服消息基类封装. 当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数.
微信公众号发送消息之发送客服消息基类封装
当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN
各消息类型所需的JSON数据包封装如下如下:
package org.oms.wechat.message; import java.util.List; import org.oms.wechat.enums.EnumMessageType; import org.oms.wechat.message.resp.Article; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * 发送客服消息基类 * * @author sunlight * */ public class CustomMessage { /** * 文本客服消息 * * @param openId * 消息接收者openId * @param content * 文本消息内容 * @return */ public static String TextMsg(String openId, String content) { JSONObject jo = new JSONObject(); jo.put("touser", openId); jo.put("msgtype", EnumMessageType.text.name()); JSONObject joContent = new JSONObject(); joContent.put("content", content); jo.put("text", joContent); return jo.toString(); } /** * 图片客服消息 * * @param openId * 消息接收者openId * @param mediaId * 媒体文件id * @return */ public static String ImageMsg(String openId, String mediaId) { JSONObject jo = new JSONObject(); jo.put("touser", openId); jo.put("msgtype", EnumMessageType.image.name()); JSONObject joMedia = new JSONObject(); joMedia.put("media_id", mediaId); jo.put("image", joMedia); return jo.toString(); } /** * 语音客服消息 * * @param openId * 消息接收者openId * @param mediaId * 媒体文件id * @return */ public static String VoiceMsg(String openId, String mediaId) { JSONObject jo = new JSONObject(); jo.put("touser", openId); jo.put("msgtype", EnumMessageType.voice.name()); JSONObject joMedia = new JSONObject(); joMedia.put("media_id", mediaId); jo.put("voice", joMedia); return jo.toString(); } /** * * 视频客服消息 * * @param openId * 消息接收者openId * @param mediaId * 媒体文件id * @param thumb_media_id * 缩略图的媒体ID * @param title * 视频消息的标题(非必须) * @param description * 视频消息的描述(非必须) * @return */ public static String VideoMsg(String openId, String mediaId, String thumb_media_id, String title, String description) { JSONObject jo = new JSONObject(); jo.put("touser", openId); jo.put("msgtype", EnumMessageType.video.name()); JSONObject joMedia = new JSONObject(); joMedia.put("media_id", mediaId); joMedia.put("thumb_media_id", thumb_media_id); joMedia.put("title", title); joMedia.put("description", description); jo.put("video", joMedia); return jo.toString(); } /** * * 视频客服消息 * * @param openId * 消息接收者openId * @param mediaId * 媒体文件id * @param thumb_media_id * 缩略图的媒体ID * @return */ public static String VideoMsg(String openId, String mediaId, String thumb_media_id) { JSONObject jo = new JSONObject(); jo.put("touser", openId); jo.put("msgtype", EnumMessageType.video.name()); JSONObject joMedia = new JSONObject(); joMedia.put("media_id", mediaId); joMedia.put("thumb_media_id", thumb_media_id); joMedia.put("title", ""); joMedia.put("description", ""); jo.put("video", joMedia); return jo.toString(); } /** * * 音乐客服消息 * * @param openId * 消息接收者openId * @param mediaId * 媒体文件id * @param thumb_media_id * 缩略图的媒体ID * @param title * 音乐消息的标题(非必须) * @param description * 音乐消息的描述(非必须) * @param musicurl * 音乐链接 * @param hqmusicurl * 高品质音乐链接,wifi环境优先使用该链接播放音乐 * @param thumb_media_id * 缩略图的媒体ID * @return */ public static String MusicMsg(String openId, String title, String description, String musicurl, String hqmusicurl, String thumb_media_id) { JSONObject jo = new JSONObject(); jo.put("touser", openId); jo.put("msgtype", EnumMessageType.music.name()); JSONObject joMedia = new JSONObject(); joMedia.put("title", title); joMedia.put("description", description); joMedia.put("musicurl", musicurl); joMedia.put("hqmusicurl", hqmusicurl); joMedia.put("thumb_media_id", thumb_media_id); jo.put("music", joMedia); return jo.toString(); } /** * * 音乐客服消息 * * @param openId * 消息接收者openId * @param mediaId * 媒体文件id * @param thumb_media_id * 缩略图的媒体ID * @param musicurl * 音乐链接 * @param hqmusicurl * 高品质音乐链接,wifi环境优先使用该链接播放音乐 * @param thumb_media_id * 缩略图的媒体ID * @return */ public static String MusicMsg(String openId, String musicurl, String hqmusicurl, String thumb_media_id) { JSONObject jo = new JSONObject(); jo.put("touser", openId); jo.put("msgtype", EnumMessageType.music.name()); JSONObject joMedia = new JSONObject(); joMedia.put("title", ""); joMedia.put("description", ""); joMedia.put("musicurl", musicurl); joMedia.put("hqmusicurl", hqmusicurl); joMedia.put("thumb_media_id", thumb_media_id); jo.put("music", joMedia); return jo.toString(); } /** * 发送图文客服消息 * * @param openId * 消息接收者openId * @param articles * 图文消息列表 * @return */ public static String NewsMsg(String openId, List<Article> articles) { JSONObject jo = new JSONObject(); jo.put("touser", openId); jo.put("msgtype", EnumMessageType.news.name()); JSONObject joMedia = new JSONObject(); JSONArray ja = new JSONArray(); for (Article article : articles) { JSONObject joChild = new JSONObject(); joChild.put("title", article.getTitle()); joChild.put("description", article.getDescription()); joChild.put("url", article.getUrl()); joChild.put("picurl", article.getPicUrl()); ja.add(joChild); } joMedia.put("articles", ja); jo.put("news", joMedia); return jo.toString(); } }
个人笔记~~