摘要:微信公眾平臺服務(wù)器配置通過后,就能進(jìn)行下面的開發(fā)啦首先可以查看官方的說明文檔普通消息的類型分為種文本消息圖片消息語音消息視頻消息小視頻消息地理位置消息鏈接消息下面介紹實(shí)現(xiàn)文本的自動回復(fù)文本消息的結(jié)構(gòu)是參數(shù)包含根據(jù)開發(fā)文檔直接上手實(shí)體類
微信公眾平臺服務(wù)器配置通過后,就能進(jìn)行下面的開發(fā)啦~~
首先可以查看官方的說明文檔:https://mp.weixin.qq.com/wiki...
普通消息的類型分為7種:
文本消息
圖片消息
語音消息
視頻消息
小視頻消息
地理位置消息
鏈接消息
下面介紹實(shí)現(xiàn)文本的自動回復(fù):
文本消息的XML結(jié)構(gòu)是:
< ![CDATA[toUser] ]> < ![CDATA[fromUser] ]> 1348831860 < ![CDATA[text] ]> < ![CDATA[this is a test] ]> 1234567890123456
參數(shù)包含:
根據(jù)開發(fā)文檔直接上手--->_>
實(shí)體類的定義:
定義一個(gè)BaseMessage,消息基類,封裝通用屬性:
public class BaseMessage { // 開發(fā)者微信號 private String ToUserName; // 發(fā)送方帳號(一個(gè)OpenID) private String FromUserName; // 消息創(chuàng)建時(shí)間 (整型) private long CreateTime; // 消息類型(text/image/location/link) private String MsgType; // 消息id,64位整型 private long MsgId; /** * 位0x0001被標(biāo)志時(shí),星標(biāo)剛收到的消息 */ private int FuncFlag; public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } public String getFromUserName() { return FromUserName; } public void setFromUserName(String fromUserName) { FromUserName = fromUserName; } public long getCreateTime() { return CreateTime; } public void setCreateTime(long l) { CreateTime = l; } public String getMsgType() { return MsgType; } public void setMsgType(String msgType) { MsgType = msgType; } public long getMsgId() { return MsgId; } public void setMsgId(long msgId) { MsgId = msgId; } public int getFuncFlag() { return FuncFlag; } public void setFuncFlag(int funcFlag) { FuncFlag = funcFlag; } }
接下來TextMessage,文本屬性TextMessage:
public class TextMessage extends BaseMessage{ // 消息內(nèi)容 private String Content; public String getContent() { return Content; } public void setContent(String content) { Content = content; } }
一定要注意,屬性名稱需要大寫,屬性名稱需要大寫,屬性名稱需要大寫!!不要問我為啥這么強(qiáng)調(diào)。
新建接口MessageService,并實(shí)現(xiàn)接口:
public interface MessageService { /** * 微信公眾號處理 * @param request * @return */ String newMessageRequest(HttpServletRequest request); }
@Service("messageService") public class MessageServiceImpl implements MessageService { private static final Logger LOGGER = LoggerFactory.getLogger(MessageServiceImpl.class); @Override public String newMessageRequest(HttpServletRequest request) { String respMessage = null; try { // xml請求解析 MaprequestMap = MessageUtil.xmlToMap(request); // 發(fā)送方帳號(open_id) String fromUserName = requestMap.get("FromUserName"); // 公眾帳號 String toUserName = requestMap.get("ToUserName"); // 消息類型 String msgType = requestMap.get("MsgType"); // 消息內(nèi)容 String content = requestMap.get("Content"); LOGGER.info("FromUserName is:" + fromUserName + ", ToUserName is:" + toUserName + ", MsgType is:" + msgType); // 文本消息 if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) { //這里根據(jù)關(guān)鍵字執(zhí)行相應(yīng)的邏輯 /*if(content.equals("xxx")){ }*/ //自動回復(fù) TextMessage text = new TextMessage(); text.setContent("霍霍哈嘿"+content); text.setToUserName(fromUserName); text.setFromUserName(toUserName); text.setCreateTime(new Date().getTime()); text.setMsgType(msgType); respMessage = MessageUtil.textMessageToXml(text); } // 事件推送 else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) { String eventType = requestMap.get("Event");// 事件類型 // 訂閱 if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) { //文本消息 TextMessage text = new TextMessage(); text.setContent("我不管,我最美!!"); text.setToUserName(fromUserName); text.setFromUserName(toUserName); text.setCreateTime(new Date().getTime()); text.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT); respMessage = MessageUtil.textMessageToXml(text); } // 取消訂閱后用戶再收不到公眾號發(fā)送的消息,因此不需要回復(fù)消息 else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {// 取消訂閱 } } } catch (Exception e) { LOGGER.error("error......"); } return respMessage; } }
上一篇文章,已經(jīng)創(chuàng)建了WechatIndexController ,里面的GET方法用來驗(yàn)證token,下面直接加一個(gè)POST方法,用于進(jìn)行消息管理。
@Autowired private MessageService messageService; @RequestMapping(method = RequestMethod.POST) public void post(HttpServletRequest request, HttpServletResponse response) { try { request.setCharacterEncoding("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); log.error(e.getMessage(),e); } response.setContentType("text/html;charset=UTF-8"); // 調(diào)用核心業(yè)務(wù)類接收消息、處理消息 String respMessage = messageService.newMessageRequest(request); // 響應(yīng)消息 PrintWriter out = null; try { out = response.getWriter(); out.print(respMessage); } catch (IOException e) { e.printStackTrace(); log.error(e.getMessage(),e); } finally { out.close(); out = null; } }
啟動服務(wù),關(guān)注此微信公眾號,就會按照我們設(shè)置的顯示啦!!
另外,圖文的實(shí)現(xiàn)與之類似,這里不在進(jìn)行過多的闡述,源碼中已經(jīng)實(shí)現(xiàn),需要的可以直接下載查看。
源碼:https://github.com/zhouminpz/...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/76412.html
摘要:微信公眾平臺服務(wù)器配置通過后,就能進(jìn)行下面的開發(fā)啦首先可以查看官方的說明文檔普通消息的類型分為種文本消息圖片消息語音消息視頻消息小視頻消息地理位置消息鏈接消息下面介紹實(shí)現(xiàn)文本的自動回復(fù)文本消息的結(jié)構(gòu)是參數(shù)包含根據(jù)開發(fā)文檔直接上手實(shí)體類 微信公眾平臺服務(wù)器配置通過后,就能進(jìn)行下面的開發(fā)啦~~首先可以查看官方的說明文檔:https://mp.weixin.qq.com/wiki... sh...
摘要:準(zhǔn)備寫一個(gè)系列文章,記錄微信公眾號的開發(fā)過程,也希望能為同為開發(fā)的提供一些思路,不才,見諒。微信公眾號分為編輯模式和開發(fā)者模式,一旦啟用了開發(fā)者模式,前期的一些例如自動回復(fù)菜單等會失效,望周知。 準(zhǔn)備寫一個(gè)系列文章,記錄微信公眾號的開發(fā)過程,也希望能為同為開發(fā)的提供一些思路,不才,見諒。 微信公眾號分為編輯模式和開發(fā)者模式,一旦啟用了開發(fā)者模式,前期的一些例如自動回復(fù)、菜單等會失效,望...
摘要:準(zhǔn)備寫一個(gè)系列文章,記錄微信公眾號的開發(fā)過程,也希望能為同為開發(fā)的提供一些思路,不才,見諒。微信公眾號分為編輯模式和開發(fā)者模式,一旦啟用了開發(fā)者模式,前期的一些例如自動回復(fù)菜單等會失效,望周知。 準(zhǔn)備寫一個(gè)系列文章,記錄微信公眾號的開發(fā)過程,也希望能為同為開發(fā)的提供一些思路,不才,見諒。 微信公眾號分為編輯模式和開發(fā)者模式,一旦啟用了開發(fā)者模式,前期的一些例如自動回復(fù)、菜單等會失效,望...
摘要:掃碼登陸微信公眾號平臺,此時(shí)默認(rèn)的是編輯模式,需要修改為開發(fā)者模式。若確認(rèn)此次請求來自微信服務(wù)器,請?jiān)瓨臃祷貐?shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。 掃碼登陸微信公眾號平臺,此時(shí)默認(rèn)的是編輯模式,需要修改為開發(fā)者模式。 找到開發(fā)--->基本配置, showImg(https://segmentfault.com/img/bVbdTk2?w=323&h=786); showI...
閱讀 2602·2021-11-17 09:33
閱讀 3949·2021-10-19 11:46
閱讀 914·2021-10-14 09:42
閱讀 2258·2021-09-22 15:41
閱讀 4221·2021-09-22 15:20
閱讀 4636·2021-09-07 10:22
閱讀 2308·2021-09-04 16:40
閱讀 819·2019-08-30 15:52