微信公众号发送消息之发送客服消息基类封装
当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为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();
}
}
个人笔记~~