微信公众号发送消息之发送客服消息基类封装

微信公众号发送消息之发送客服消息基类封装

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


个人笔记~~


微信公众号发送消息之发送客服消息基类封装

上一篇:调用微信高级群发接口--视频群发接口出问题(微信官方文档错误纠正)


下一篇:Android分享到微信等社交平台教程