5.4 响应菜单点击事件

菜单创建完成后,就能在微信客户端上看到效果了,此时点击view类型的菜单按钮会自动使用微信内置的浏览器访问URL,而点击click类型的菜单按钮不会有任何反应,这又是为什么呢?当用户点击click类型的菜单按钮时,微信服务器会向公众账号后台推送一条消息类型为event,事件类型为CLICK的事件消息。我们需要在公众账号后台接收该事件消息,并做出响应。

以上一节创建的菜单为例,相应的菜单点击事件处理代码如下:

  1. 1 // 判断消息类型
  2. 2 if (msgType.equals("event")) {
  3. 3  // 事件类型
  4. 4  String eventType = requestMap.get("Event");
  5. 5  // 自定义菜单点击事件
  6. 6  if (eventType.equals("CLICK ")) {
  7. 7  // 事件KEY值,与创建菜单时的key值对应
  8. 8  String eventKey = requestMap.get("EventKey");
  9. 9  // 根据key值判断用户点击的按钮
  10. 10  if (eventKey.equals("V1001_TODAY_MUSIC")) {
  11. 11  respContent = "用户点击了"今日歌曲"按钮";
  12. 12  } else if (eventKey.equals("V1001_HELLO_WORLD")) {
  13. 13  respContent = "用户点击了"hello word"按钮";
  14. 14  } else if (eventKey.equals("V1001_GOOD")) {
  15. 15  respContent = "用户点击了"赞一下我们"按钮";
  16. 16  }
  17. 17  }
  18. 18  // TODO 其他操作……
  19. 19 }
  20. 20 // TODO 其他操作……

代码中的第2行、第6行说明了判断菜单点击事件的两个条件(消息类型为event,并且事件类型为CLICK),第8行是获取被点击菜单按钮的key值,10~16行代码是根据key值判断用户点击的是哪个菜单按钮并做出相应的回复。