白羽
2018-06-20
来源 :网络
阅读 1608
评论 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
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号