摘要:本文将带你了解微信公众号之发送客服消息基类封装,希望本文对大家学微信有所帮助。
当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为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. }
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号