微信公众号之发送客服消息基类封装
白羽 2018-06-20 来源 :网络 阅读 957 评论 0

摘要:本文将带你了解微信公众号之发送客服消息基类封装,希望本文对大家学微信有所帮助。



当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。

http请求方式: POSThttps://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN

 

各消息类型所需的JSON数据包封装如下如下:

[java] view plain copy
1. package org.oms.wechat.message;  
2.   
3. import java.util.List;  
4.   
5. import org.oms.wechat.enums.EnumMessageType;  
6. import org.oms.wechat.message.resp.Article;  
7.   
8. import net.sf.json.JSONArray;  
9. import net.sf.json.JSONObject;  
10.   
11. /** 
12.  * 发送客服消息基类 
13.  *  
14.  * @author sunlight 
15.  * 
16.  */  
17. public class CustomMessage {  
18.     /** 
19.      * 文本客服消息 
20.      *  
21.      * @param openId 
22.      *            消息接收者openId 
23.      * @param content 
24.      *            文本消息内容 
25.      * @return 
26.      */  
27.     public static String TextMsg(String openId, String content) {  
28.         JSONObject jo = new JSONObject();  
29.         jo.put("touser", openId);  
30.         jo.put("msgtype", EnumMessageType.text.name());  
31.         JSONObject joContent = new JSONObject();  
32.         joContent.put("content", content);  
33.         jo.put("text", joContent);  
34.         return jo.toString();  
35.     }  
36.   
37.     /** 
38.      * 图片客服消息 
39.      *  
40.      * @param openId 
41.      *            消息接收者openId 
42.      * @param mediaId 
43.      *            媒体文件id 
44.      * @return 
45.      */  
46.     public static String ImageMsg(String openId, String mediaId) {  
47.         JSONObject jo = new JSONObject();  
48.         jo.put("touser", openId);  
49.         jo.put("msgtype", EnumMessageType.image.name());  
50.         JSONObject joMedia = new JSONObject();  
51.         joMedia.put("media_id", mediaId);  
52.         jo.put("image", joMedia);  
53.         return jo.toString();  
54.     }  
55.   
56.     /** 
57.      * 语音客服消息 
58.      *  
59.      * @param openId 
60.      *            消息接收者openId 
61.      * @param mediaId 
62.      *            媒体文件id 
63.      * @return 
64.      */  
65.     public static String VoiceMsg(String openId, String mediaId) {  
66.         JSONObject jo = new JSONObject();  
67.         jo.put("touser", openId);  
68.         jo.put("msgtype", EnumMessageType.voice.name());  
69.         JSONObject joMedia = new JSONObject();  
70.         joMedia.put("media_id", mediaId);  
71.         jo.put("voice", joMedia);  
72.         return jo.toString();  
73.     }  
74.   
75.     /** 
76.      *  
77.      * 视频客服消息 
78.      *  
79.      * @param openId 
80.      *            消息接收者openId 
81.      * @param mediaId 
82.      *            媒体文件id 
83.      * @param thumb_media_id 
84.      *            缩略图的媒体ID 
85.      * @param title 
86.      *            视频消息的标题(非必须) 
87.      * @param description 
88.      *            视频消息的描述(非必须) 
89.      * @return 
90.      */  
91.     public static String VideoMsg(String openId, String mediaId,  
92.             String thumb_media_id, String title, String description) {  
93.         JSONObject jo = new JSONObject();  
94.         jo.put("touser", openId);  
95.         jo.put("msgtype", EnumMessageType.video.name());  
96.         JSONObject joMedia = new JSONObject();  
97.         joMedia.put("media_id", mediaId);  
98.         joMedia.put("thumb_media_id", thumb_media_id);  
99.         joMedia.put("title", title);  
100.         joMedia.put("description", description);  
101.         jo.put("video", joMedia);  
102.         return jo.toString();  
103.     }  
104.   
105.     /** 
106.      *  
107.      * 视频客服消息 
108.      *  
109.      * @param openId 
110.      *            消息接收者openId 
111.      * @param mediaId 
112.      *            媒体文件id 
113.      * @param thumb_media_id 
114.      *            缩略图的媒体ID 
115.      * @return 
116.      */  
117.     public static String VideoMsg(String openId, String mediaId,  
118.             String thumb_media_id) {  
119.         JSONObject jo = new JSONObject();  
120.         jo.put("touser", openId);  
121.         jo.put("msgtype", EnumMessageType.video.name());  
122.         JSONObject joMedia = new JSONObject();  
123.         joMedia.put("media_id", mediaId);  
124.         joMedia.put("thumb_media_id", thumb_media_id);  
125.         joMedia.put("title", "");  
126.         joMedia.put("description", "");  
127.         jo.put("video", joMedia);  
128.         return jo.toString();  
129.     }  
130.   
131.     /** 
132.      *  
133.      * 音乐客服消息 
134.      *  
135.      * @param openId 
136.      *            消息接收者openId 
137.      * @param mediaId 
138.      *            媒体文件id 
139.      * @param thumb_media_id 
140.      *            缩略图的媒体ID 
141.      * @param title 
142.      *            音乐消息的标题(非必须) 
143.      * @param description 
144.      *            音乐消息的描述(非必须) 
145.      * @param musicurl 
146.      *            音乐链接 
147.      * @param hqmusicurl 
148.      *            高品质音乐链接,wifi环境优先使用该链接播放音乐 
149.      * @param thumb_media_id 
150.      *            缩略图的媒体ID 
151.      * @return 
152.      */  
153.     public static String MusicMsg(String openId, String title,  
154.             String description, String musicurl, String hqmusicurl,  
155.             String thumb_media_id) {  
156.         JSONObject jo = new JSONObject();  
157.         jo.put("touser", openId);  
158.         jo.put("msgtype", EnumMessageType.music.name());  
159.         JSONObject joMedia = new JSONObject();  
160.         joMedia.put("title", title);  
161.         joMedia.put("description", description);  
162.         joMedia.put("musicurl", musicurl);  
163.         joMedia.put("hqmusicurl", hqmusicurl);  
164.         joMedia.put("thumb_media_id", thumb_media_id);  
165.         jo.put("music", joMedia);  
166.         return jo.toString();  
167.     }  
168.   
169.     /** 
170.      *  
171.      * 音乐客服消息 
172.      *  
173.      * @param openId 
174.      *            消息接收者openId 
175.      * @param mediaId 
176.      *            媒体文件id 
177.      * @param thumb_media_id 
178.      *            缩略图的媒体ID 
179.      * @param musicurl 
180.      *            音乐链接 
181.      * @param hqmusicurl 
182.      *            高品质音乐链接,wifi环境优先使用该链接播放音乐 
183.      * @param thumb_media_id 
184.      *            缩略图的媒体ID 
185.      * @return 
186.      */  
187.     public static String MusicMsg(String openId, String musicurl,  
188.             String hqmusicurl, String thumb_media_id) {  
189.         JSONObject jo = new JSONObject();  
190.         jo.put("touser", openId);  
191.         jo.put("msgtype", EnumMessageType.music.name());  
192.         JSONObject joMedia = new JSONObject();  
193.         joMedia.put("title", "");  
194.         joMedia.put("description", "");  
195.         joMedia.put("musicurl", musicurl);  
196.         joMedia.put("hqmusicurl", hqmusicurl);  
197.         joMedia.put("thumb_media_id", thumb_media_id);  
198.         jo.put("music", joMedia);  
199.         return jo.toString();  
200.     }  
201.   
202.     /** 
203.      * 发送图文客服消息 
204.      *  
205.      * @param openId 
206.      *            消息接收者openId 
207.      * @param articles 
208.      *            图文消息列表 
209.      * @return 
210.      */  
211.     public static String NewsMsg(String openId, List<Article> articles) {  
212.         JSONObject jo = new JSONObject();  
213.         jo.put("touser", openId);  
214.         jo.put("msgtype", EnumMessageType.news.name());  
215.         JSONObject joMedia = new JSONObject();  
216.         JSONArray ja = new JSONArray();  
217.         for (Article article : articles) {  
218.             JSONObject joChild = new JSONObject();  
219.             joChild.put("title", article.getTitle());  
220.             joChild.put("description", article.getDescription());  
221.             joChild.put("url", article.getUrl());  
222.             joChild.put("picurl", article.getPicUrl());  
223.             ja.add(joChild);  
224.         }  
225.         joMedia.put("articles", ja);  
226.         jo.put("news", joMedia);  
227.         return jo.toString();  
228.     }  
229. }

 


 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!

 


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程