摘要:微信公眾平臺服務器配置通過后,就能進行下面的開發啦首先可以查看官方的說明文檔普通消息的類型分為種文本消息圖片消息語音消息視頻消息小視頻消息地理位置消息鏈接消息下面介紹實現文本的自動回復文本消息的結構是參數包含根據開發文檔直接上手實體類
微信公眾平臺服務器配置通過后,就能進行下面的開發啦~~
首先可以查看官方的說明文檔:https://mp.weixin.qq.com/wiki...
普通消息的類型分為7種:
文本消息
圖片消息
語音消息
視頻消息
小視頻消息
地理位置消息
鏈接消息
下面介紹實現文本的自動回復:
文本消息的XML結構是:
< ![CDATA[toUser] ]> < ![CDATA[fromUser] ]> 1348831860 < ![CDATA[text] ]> < ![CDATA[this is a test] ]> 1234567890123456
參數包含:
根據開發文檔直接上手--->_>
實體類的定義:
定義一個BaseMessage,消息基類,封裝通用屬性:
public class BaseMessage { // 開發者微信號 private String ToUserName; // 發送方帳號(一個OpenID) private String FromUserName; // 消息創建時間 (整型) private long CreateTime; // 消息類型(text/image/location/link) private String MsgType; // 消息id,64位整型 private long MsgId; /** * 位0x0001被標志時,星標剛收到的消息 */ 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{ // 消息內容 private String Content; public String getContent() { return Content; } public void setContent(String content) { Content = content; } }
一定要注意,屬性名稱需要大寫,屬性名稱需要大寫,屬性名稱需要大寫!!不要問我為啥這么強調。
新建接口MessageService,并實現接口:
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); // 發送方帳號(open_id) String fromUserName = requestMap.get("FromUserName"); // 公眾帳號 String toUserName = requestMap.get("ToUserName"); // 消息類型 String msgType = requestMap.get("MsgType"); // 消息內容 String content = requestMap.get("Content"); LOGGER.info("FromUserName is:" + fromUserName + ", ToUserName is:" + toUserName + ", MsgType is:" + msgType); // 文本消息 if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) { //這里根據關鍵字執行相應的邏輯 /*if(content.equals("xxx")){ }*/ //自動回復 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); } // 取消訂閱后用戶再收不到公眾號發送的消息,因此不需要回復消息 else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {// 取消訂閱 } } } catch (Exception e) { LOGGER.error("error......"); } return respMessage; } }
上一篇文章,已經創建了WechatIndexController ,里面的GET方法用來驗證token,下面直接加一個POST方法,用于進行消息管理。
@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"); // 調用核心業務類接收消息、處理消息 String respMessage = messageService.newMessageRequest(request); // 響應消息 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; } }
啟動服務,關注此微信公眾號,就會按照我們設置的顯示啦??!
另外,圖文的實現與之類似,這里不在進行過多的闡述,源碼中已經實現,需要的可以直接下載查看。
源碼:https://github.com/zhouminpz/...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/35958.html
摘要:微信公眾平臺服務器配置通過后,就能進行下面的開發啦首先可以查看官方的說明文檔普通消息的類型分為種文本消息圖片消息語音消息視頻消息小視頻消息地理位置消息鏈接消息下面介紹實現文本的自動回復文本消息的結構是參數包含根據開發文檔直接上手實體類 微信公眾平臺服務器配置通過后,就能進行下面的開發啦~~首先可以查看官方的說明文檔:https://mp.weixin.qq.com/wiki... sh...
摘要:準備寫一個系列文章,記錄微信公眾號的開發過程,也希望能為同為開發的提供一些思路,不才,見諒。微信公眾號分為編輯模式和開發者模式,一旦啟用了開發者模式,前期的一些例如自動回復菜單等會失效,望周知。 準備寫一個系列文章,記錄微信公眾號的開發過程,也希望能為同為開發的提供一些思路,不才,見諒。 微信公眾號分為編輯模式和開發者模式,一旦啟用了開發者模式,前期的一些例如自動回復、菜單等會失效,望...
摘要:準備寫一個系列文章,記錄微信公眾號的開發過程,也希望能為同為開發的提供一些思路,不才,見諒。微信公眾號分為編輯模式和開發者模式,一旦啟用了開發者模式,前期的一些例如自動回復菜單等會失效,望周知。 準備寫一個系列文章,記錄微信公眾號的開發過程,也希望能為同為開發的提供一些思路,不才,見諒。 微信公眾號分為編輯模式和開發者模式,一旦啟用了開發者模式,前期的一些例如自動回復、菜單等會失效,望...
摘要:掃碼登陸微信公眾號平臺,此時默認的是編輯模式,需要修改為開發者模式。若確認此次請求來自微信服務器,請原樣返回參數內容,則接入生效,成為開發者成功,否則接入失敗。 掃碼登陸微信公眾號平臺,此時默認的是編輯模式,需要修改為開發者模式。 找到開發--->基本配置, showImg(https://segmentfault.com/img/bVbdTk2?w=323&h=786); showI...
閱讀 2973·2023-04-26 02:29
閱讀 585·2019-08-30 15:54
閱讀 1658·2019-08-29 13:13
閱讀 600·2019-08-28 17:51
閱讀 2721·2019-08-26 13:58
閱讀 1531·2019-08-26 13:27
閱讀 2819·2019-08-26 11:39
閱讀 3445·2019-08-26 10:46