Skip to content

Commit

Permalink
1.消息体封装为POJO类,更易操作。 2.增加处理文件消息接口。
Browse files Browse the repository at this point in the history
  • Loading branch information
yaphone committed Jul 21, 2017
1 parent be0833e commit d226324
Show file tree
Hide file tree
Showing 11 changed files with 74 additions and 10 deletions.
25 changes: 23 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

## 更新日志

- 2017-7-21:消息体封装为POJO类,更易操作。
- 2017-7-21:1.消息体封装为POJO类,更易操作。 2.增加处理文件消息接口

- 2017-6-28:增加被动添加好友功能。

Expand Down Expand Up @@ -360,8 +360,16 @@ public interface IMsgHandlerFace {
*/
public String verifyAddFriendMsgHandle(BaseMsg msg);

}
/**
* 处理收到的文件消息
*
* @date 2017年7月21日 下午11:59:14
* @param msg
* @return
*/
public String mediaMsgHandle(BaseMsg msg);

}
```

在每个接口方法中,需要处理的消息均为上面介绍的BaseMsg的POJO类,在`textMsgHandler`中,通过`msg.getText()`就可以获取收到的文本信息,然后作进一步处理,比如接入图灵机器人、消息自动回复等,我们需要在这个方法中返回一个字符串,即是需要回复给好友的消息,在SimpleDemo这个示例中,我们直接回复收到的原文本消息。
Expand Down Expand Up @@ -610,6 +618,12 @@ public class TulingRobot implements IMsgHandlerFace {
return null;
}

@Override
public String mediaMsgHandle(BaseMsg msg) {
// TODO Auto-generated method stub
return null;
}

}

```
Expand Down Expand Up @@ -732,7 +746,14 @@ public class PicYourFriends implements IMsgHandlerFace {
return null;
}

@Override
public String mediaMsgHandle(BaseMsg msg) {
// TODO Auto-generated method stub
return null;
}

}

```


Expand Down
8 changes: 5 additions & 3 deletions src/main/java/cn/zhouyafeng/itchat4j/core/MsgCenter.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,8 @@ public static JSONArray produceMsg(JSONArray msgList) {
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_VIDEO.getCode())
|| m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_MICROVIDEO.getCode())) {// viedo
m.put("Type", MsgTypeEnum.VIEDO.getType());
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_APP.getCode())) { // sharing
// 分享链接

} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_MEDIA.getCode())) { // 多媒体消息
m.put("Type", MsgTypeEnum.MEDIA.getType());
} else if (m.getInteger("MsgType").equals(MsgCodeEnum.MSGTYPE_STATUSNOTIFY.getCode())) {// phone
// init
// 微信初始化消息
Expand Down Expand Up @@ -149,6 +148,9 @@ public static void handleMsg(IMsgHandlerFace msgHandler) {
String result = msgHandler.verifyAddFriendMsgHandle(msg);
MessageTools.sendMsgById(result,
core.getMsgList().get(0).getRecommendInfo().getUserName());
} else if (msg.getType().equals(MsgTypeEnum.MEDIA.getType())) { // 多媒体消息
String result = msgHandler.mediaMsgHandle(msg);
MessageTools.sendMsgById(result, core.getMsgList().get(0).getFromUserName());
}
} catch (Exception e) {
e.printStackTrace();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,13 @@ public interface IMsgHandlerFace {
*/
public String verifyAddFriendMsgHandle(BaseMsg msg);

/**
* 处理收到的文件消息
*
* @date 2017年7月21日 下午11:59:14
* @param msg
* @return
*/
public String mediaMsgHandle(BaseMsg msg);

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public enum MsgCodeEnum {
MSGTYPE_VIDEO(43, "小视频消息"),
MSGTYPE_MICROVIDEO(62, "短视频消息"),
MSGTYPE_EMOTICON(47, "表情消息"),
MSGTYPE_APP(49, ""),
MSGTYPE_MEDIA(49, "多媒体消息"),
MSGTYPE_VOIPMSG(50, ""),
MSGTYPE_VOIPNOTIFY(52, ""),
MSGTYPE_VOIPINVITE(53, ""),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ public enum MsgTypeEnum {
VIEDO("Viedo", "小视频消息"),
NAMECARD("NameCard", "名片消息"),
SYS("Sys", "系统消息"),
VERIFYMSG("VerifyMsg", "添加好友");
VERIFYMSG("VerifyMsg", "添加好友"),
MEDIA("app", "文件消息");

private String type;
private String code;
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/cn/zhouyafeng/itchat4j/utils/enums/URLEnum.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,9 @@ public enum URLEnum {
WEB_WX_LOGOUT("%s/webwxlogout", "退出微信"),
WEB_WX_BATCH_GET_CONTACT("%s/webwxbatchgetcontact?type=ex&r=%s&lang=zh_CN&pass_ticket=%s", "查询群信息"),
WEB_WX_REMARKNAME("%s/webwxoplog?lang=zh_CN&pass_ticket=%s", "修改好友备注"),
WEB_WX_VERIFYUSER("%s/webwxverifyuser?r=%s&lang=zh_CN&pass_ticket=%s", "被动添加好友")
WEB_WX_VERIFYUSER("%s/webwxverifyuser?r=%s&lang=zh_CN&pass_ticket=%s", "被动添加好友"),
WEB_WX_GET_MEDIA("%s/webwxgetmedia", "下载文件")






Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ public static Object getDownloadFn(BaseMsg msg, String type, String path) {
} else if (type.equals(MsgTypeEnum.VIEDO.getType())) {
headerMap.put("Range", "bytes=0-");
url = String.format(URLEnum.WEB_WX_GET_VIEDO.getUrl(), (String) core.getLoginInfo().get("url"));
} else if (type.equals(MsgTypeEnum.MEDIA.getType())) {
headerMap.put("Range", "bytes=0-");
url = String.format(URLEnum.WEB_WX_GET_MEDIA.getUrl(), (String) core.getLoginInfo().get("fileUrl"));
params.add(new BasicNameValuePair("sender", msg.getFromUserName()));
params.add(new BasicNameValuePair("mediaid", msg.getMediaId()));
params.add(new BasicNameValuePair("filename", msg.getFileName()));
}
params.add(new BasicNameValuePair("msgid", msg.getNewMsgId()));
params.add(new BasicNameValuePair("skey", (String) core.getLoginInfo().get("skey")));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,12 @@ public String verifyAddFriendMsgHandle(BaseMsg msg) {
return text;
}

@Override
public String mediaMsgHandle(BaseMsg msg) {
String fileName = msg.getFileName();
String filePath = "D://itchat4j/file" + File.separator + fileName; // 这里是需要保存收到的文件路径,文件可以是任何格式如PDF,WORD,EXCEL等。
DownloadTools.getDownloadFn(msg, MsgTypeEnum.MEDIA.getType(), filePath);
return "文件" + fileName + "保存成功";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,10 @@ public String verifyAddFriendMsgHandle(BaseMsg msg) {
return null;
}

@Override
public String mediaMsgHandle(BaseMsg msg) {
// TODO Auto-generated method stub
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,10 @@ public String verifyAddFriendMsgHandle(BaseMsg msg) {
return null;
}

@Override
public String mediaMsgHandle(BaseMsg msg) {
// TODO Auto-generated method stub
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,10 @@ public String verifyAddFriendMsgHandle(BaseMsg msg) {
return null;
}

@Override
public String mediaMsgHandle(BaseMsg msg) {
// TODO Auto-generated method stub
return null;
}

}

0 comments on commit d226324

Please sign in to comment.