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

标签: 微信 公众 消息 | 发表时间:2014-10-26 07:30 | 作者:rzg813
出处:http://blog.csdn.net

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

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


个人笔记~~


作者:rzg813 发表于2014-10-25 23:30:04 原文链接
阅读:35 评论:0 查看评论

相关 [微信 公众 消息] 推荐:

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

- - CSDN博客移动开发推荐文章
微信公众号发送消息之发送客服消息基类封装. 当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数.

使用shell通过微信公众号发送模板消息 - CSDN博客

- -
如下通过shell脚本实现,通过微信公众号发送模板消息到个人微信号. 由于没有认证的公众号,只能通过自己申请的个人订阅号(可以自行申请),并到开发者工具中开通公众平台测试帐号实现该功能. 1.获取测试公众号appID和appsecret. *2.关注测试号二维码获取用户openid. 得到模板id: OA0PX8pqc2X7t_y05y5GxZ8LutBpu341FIYSeQOkno.

浅谈微信公众平台

- - 微博之博
过去的这个周末,应该大部分人都在家里调戏 微信公共 平台. 有人幸灾乐祸,有人稍作恐慌:芸芸众生相. 注册尝试了一个微信 公众平台,总结一句话:龙生龙,凤生凤. 以前曾经有人说中国的互联网,要么生要么死要么被腾讯. 企鹅家族优良的传统,势必不会放过 微博帝国的3亿用户群的潜在商业价值,所以这次爱起哄的企鹅家族,又一次决定露出起哄天性,悄悄的推出了微信公众平台.

微信公众平台开发(一)

- - BlogJava-首页技术区
  开始微信公众平台的开发,我们首先要了解微信平台可以帮助我们做哪些事情. 使用您的公众账号登陆http://mp.weixin.qq.com/,选择菜单--高级功能-开发模式--查看文档,即能看到微信公众平台目前所能开发的功能. 接受用户发送给您公众账号的消息. 需要特别说明的是,发送消息和回复消失是一个连贯的过程,只能在一个对话中完成.

微信公众平台接口开发

- - CSDN博客互联网推荐文章
随着微信公众平台的开放,微信营销推广也越发受到重视. 现在企业越来越注重求职者是否拥有“微信公众平台接口开发”的经验. 现在参考资料介绍下微信公众平台接口开发模式:. 首先你得有个微信公众平台账号,注册地址:http://mp.weixin.qq.com/. 开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:.

微信公众平台开发入门

- - Web前端 - ITeye博客
在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序、MySQL数据库、计算机网络通讯、及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务:. 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.

随时随地发送消息到微信

- - V2EX - 技术
wechat_sender 是基于 wxpy 和 tornado 实现的一个可以将你的网站、爬虫、脚本等其他应用中各种消息 (日志、报警、运行结果等) 发送到微信的工具. wxpy 基于 itchat 提供了较为完备的微信个人号 API,而我想使用个人微信来接收我的网站的报警信息以及一些爬虫的结果,因此我写了这个工具.

微信公众平台增加微信小店功能 可快速开店

- - TechWeb 今日焦点 RSS阅读
微信公众平台增加微信小店功能 可快速开店(TechWeb配图). 【TechWeb报道】5月29日消息,腾讯今日发布消息称,微信公众平台更新增加了微信小店功能,微信小店基于微信支付,包括添加商品、商品管理、订单管理、货架管理、维权等功能,开发者可使用接口批量添加商品,快速开店. 已接入微信支付的公众号,可在服务中心中申请开通微信小店功能.

微信公众平台:移动推送(Push)平台

- - 天涯海阁|Web2.0Share
之前曾经写过一个文章《 移动互联网的未来:基于情境/兴趣的推送》,至今我也觉得这个在未来会是有着巨大想想空间的移动生活方式. 之前其实也有不少初创企业在Push这个领域努力,不过效果却都不好,所以其实本质而言,要构建Push这样的平台,需要吸引大量的内容、媒体、品牌来提供Push内容,而对于内容、媒体、品牌而言,最在意的是这个平台有没有用户,而微信可能已经到了可以去构建这样一个信息推送平台的阶段.

一个程序员关注的微信公众账号

- - ITeye博客
春节回家的时候在家里无聊,开始玩微信,后面接触微信公众账号,陆续的关注了很多,每天至少会花半小时在这些账号的文章上面,有的文笔不错,有的十分简洁,但是都比较真实,值得一看,下面把认为不错的账号推荐一下. 我是一名程序员,关注产品、技术、移动以及八卦,如果和我口味类似,这些账号可以关注一下. 微信号:WebNotes.