ホームページ >WeChat アプレット >WeChatの開発 >メッセージを受信して​​エンティティを作成するための WeChat 分類の Java コード例

メッセージを受信して​​エンティティを作成するための WeChat 分類の Java コード例

Y2J
Y2Jオリジナル
2017-05-04 09:15:451725ブラウズ

この記事では主に Java WeChat パブリック プラットフォーム開発の 3 番目のステップ、受信したメッセージの分類とエンティティの作成について詳しく紹介します。興味のある友人は参照してください

前の記事で述べたように。アプリケーション サーバーと Tencent サーバーはメッセージを通じて通信します。ここでは、その後の使用を容易にするために、WeChat 投稿のメッセージ タイプを簡単に紹介します。

(1) メッセージエンティティ基本クラス

package com.cuiyongzhi.wechat.message.req;
/**
 * ClassName: BaseMessage
 * @Description: 微信请求消息基本类
 * @author dapengniao
 * @date 2016年3月7日 下午3:03:59
 */
public class BaseMessage {
 // 开发者微信号
 private String ToUserName;
 // 发送方帐号(一个OpenID)
 private String FromUserName;
 // 消息创建时间 (整型)
 private long CreateTime;
 // 消息类型(text/image/location/link/video/shortvideo)
 private String MsgType;
 // 消息id,64位整型
 private long MsgId;
 
 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 createTime) {
  CreateTime = createTime;
 }
 
 public String getMsgType() {
  return MsgType;
 }
 
 public void setMsgType(String msgType) {
  MsgType = msgType;
 }
 
 public long getMsgId() {
  return MsgId;
 }
 
 public void setMsgId(long msgId) {
  MsgId = msgId;
 }
}

(2) 通常のメッセージポジョエンティティ

① 画像メッセージ

package com.cuiyongzhi.wechat.message.req;
 
/**
 * ClassName: ImageMessage
 * @Description: 图片消息
 * @author dapengniao
 * @date 2016年3月7日 下午3:04:52
 */
public class ImageMessage extends BaseMessage {
 // 图片链接
 private String PicUrl;
 
 public String getPicUrl() {
  return PicUrl;
 }
 
 public void setPicUrl(String picUrl) {
  PicUrl = picUrl;
 }
}

② 接続メッセージ

package com.cuiyongzhi.wechat.message.req;
 
/**
 * ClassName: LinkMessage
 * @Description: 连接消息
 * @author dapengniao
 * @date 2016年3月7日 下午3:05:48
 */
public class LinkMessage extends BaseMessage {
 // 消息标题
 private String Title;
 // 消息描述
 private String Description;
 // 消息链接
 private String Url;
 
 public String getTitle() {
  return Title;
 }
 
 public void setTitle(String title) {
  Title = title;
 }
 
 public String getDescription() {
  return Description;
 }
 
 public void setDescription(String description) {
  Description = description;
 }
 
 public String getUrl() {
  return Url;
 }
 
 public void setUrl(String url) {
  Url = url;
 }
}

③ 位置情報メッセージ

package com.cuiyongzhi.wechat.message.req;
 
/**
 * ClassName: LocationMessage
 * @Description: 地理位置消息
 * @author dapengniao
 * @date 2016年3月7日 下午3:06:10
 */
public class LocationMessage extends BaseMessage { 
 // 地理位置维度 
 private String Location_X; 
 // 地理位置经度 
 private String Location_Y; 
 // 地图缩放大小 
 private String Scale; 
 // 地理位置信息 
 private String Label; 
 public String getLocation_X() { 
  return Location_X; 
 } 
 public void setLocation_X(String location_X) { 
  Location_X = location_X; 
 } 
 public String getLocation_Y() { 
  return Location_Y; 
 } 
 public void setLocation_Y(String location_Y) { 
  Location_Y = location_Y; 
 } 
 public String getScale() { 
  return Scale; 
 } 
 public void setScale(String scale) { 
  Scale = scale; 
 } 
 public String getLabel() { 
  return Label; 
 } 
 public void setLabel(String label) { 
  Label = label; 
 } 
}

④ テキストメッセージ

れーれー

⑤映像・子画面メッセージ

package com.cuiyongzhi.wechat.message.req;
 
/**
 * ClassName: TextMessage
 * @Description: 文本消息
 * @author dapengniao
 * @date 2016年3月7日 下午3:06:40
 */
public class TextMessage extends BaseMessage { 
 // 消息内容 
 private String Content; 
 public String getContent() { 
  return Content; 
 } 
 public void setContent(String content) { 
  Content = content; 
 } 
}

⑥音声メッセージ

package com.cuiyongzhi.wechat.message.req;
 
/**
 * ClassName: VideoMessage
 * @Description: 视频/小视屏消息
 * @author dapengniao
 * @date 2016年3月7日 下午3:12:51
 */
public class VideoMessage extends BaseMessage {
 private String MediaId; // 视频消息媒体id,可以调用多媒体文件下载接口拉取数据
 private String ThumbMediaId; // 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据
 public String getMediaId() {
  return MediaId;
 }
 public void setMediaId(String mediaId) {
  MediaId = mediaId;
 }
 public String getThumbMediaId() {
  return ThumbMediaId;
 }
 public void setThumbMediaId(String thumbMediaId) {
  ThumbMediaId = thumbMediaId;
 }
}

(3)メッセージ分類処理

上記の受信メッセージカテゴリに応じて異なる配信処理を行う ここでは独自の業務ディストリビュータ(EventDispatcher、MsgDispatcher)を設けております。通常のメッセージ処理とイベントメッセージの処理をそれぞれ!

①MsgDispatcher.java - 通常メッセージの業務配信処理に使用

package com.cuiyongzhi.wechat.message.req;
/**
 * ClassName: VoiceMessage
 * @Description: 语音消息
 * @author dapengniao
 * @date 2016年3月7日 下午3:07:10
 */
public class VoiceMessage extends BaseMessage { 
 // 媒体ID 
 private String MediaId; 
 // 语音格式 
 private String Format; 
 
 public String getMediaId() { 
  return MediaId; 
 } 
 public void setMediaId(String mediaId) { 
  MediaId = mediaId; 
 } 
 public String getFormat() { 
  return Format; 
 } 
 public void setFormat(String format) { 
  Format = format; 
 } 
}

②EventDispatcher.java - イベントメッセージの業務配信処理

package com.cuiyongzhi.wechat.dispatcher;
import java.util.Map;
import com.cuiyongzhi.wechat.util.MessageUtil;
/**
 * ClassName: MsgDispatcher
 * @Description: 消息业务处理分发器
 * @author dapengniao
 * @date 2016年3月7日 下午4:04:21
 */
public class MsgDispatcher {
 public static String processMessage(Map<String, String> map) {
  if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) { // 文本消息
   System.out.println("==============这是文本消息!");
  }
   
  if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) { // 图片消息
   System.out.println("==============这是图片消息!");
  }
   
  if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) { // 链接消息
   System.out.println("==============这是链接消息!");
  }
   
  if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) { // 位置消息
   System.out.println("==============这是位置消息!");
  }
   
  if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_VIDEO)) { // 视频消息
   System.out.println("==============这是视频消息!");
  }  
   
  if (map.get("MsgType").equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) { // 语音消息
   System.out.println("==============这是语音消息!");
  }
 
  return null;
 }
}

この時点で、メッセージエントランスにpostメソッドを追加する必要があります[WechatSecurity.java]いくつかの変更を加えた結果、最終結果は次のようになります:

package com.cuiyongzhi.wechat.dispatcher;
 
import java.util.Map;
 
import com.cuiyongzhi.wechat.util.MessageUtil;
 
/**
 * ClassName: EventDispatcher
 * @Description: 事件消息业务分发器
 * @author dapengniao
 * @date 2016年3月7日 下午4:04:41
 */
public class EventDispatcher {
 public static String processEvent(Map<String, String> map) {
  if (map.get("Event").equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) { //关注事件
   System.out.println("==============这是关注事件!");
  }
   
  if (map.get("Event").equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) { //取消关注事件
   System.out.println("==============这是取消关注事件!");
  }
   
  if (map.get("Event").equals(MessageUtil.EVENT_TYPE_SCAN)) { //扫描二维码事件
   System.out.println("==============这是扫描二维码事件!");
  }
   
  if (map.get("Event").equals(MessageUtil.EVENT_TYPE_LOCATION)) { //位置上报事件
   System.out.println("==============这是位置上报事件!");
  }
   
  if (map.get("Event").equals(MessageUtil.EVENT_TYPE_CLICK)) { //自定义菜单点击事件
   System.out.println("==============这是自定义菜单点击事件!");
  }
   
  if (map.get("Event").equals(MessageUtil.EVENT_TYPE_VIEW)) { //自定义菜单View事件
   System.out.println("==============这是自定义菜单View事件!");
  }
   
   
  return null;
 }
}

最後に、プロジェクトが成功した後、以下の図に示すように、さまざまなタイプのメッセージを送信することで、メッセージ分類が正しいことを検証できます。

非常に多くの新しいファイルが作成されました。最後にプロジェクト全体のディレクトリ構造を見てみましょう:

以上がメッセージを受信して​​エンティティを作成するための WeChat 分類の Java コード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。