@@ -128,7 +128,7 @@ src/main/java是itchat4j的项目源码,在src/test/java目录下有两个小D
128128
129129## 消息格式
130130
131- 这里简要介绍一下` msg ` 各种消息,msg均为` json ` 格式的数据,可使用各自工具进行解析,在itchat4j中我通过alibaba的` fastjosn ` 工具库进行了解析,每种` msg ` 均为` fastjson ` 的标准` JSONObject ` 对象,后续处理起来非常方便,例如获取文本消息的消息内容:` msg.getString("Text") ` ,获取名片消息的被推荐人昵称:` msg.getJSONObject("RecommendInfo").getString("NickName") ` 。有时候可能不需要处理群消息,因此在构造` msg ` 消息体里我添加了一个判断是否群消息的字段` groupMsg ` ,可通过` msg.getBooleanValue ("groupMsg") ` 获取字段的值,如果是群消息,返回true,如果非群消息,返回false。
131+ 这里简要介绍一下` msg ` 各种消息,msg均为` json ` 格式的数据,可使用各自工具进行解析,在itchat4j中我通过alibaba的` fastjosn ` 工具库进行了解析,每种` msg ` 均为` fastjson ` 的标准` JSONObject ` 对象,后续处理起来非常方便,例如获取文本消息的消息内容:` msg.getString("Text") ` ,获取名片消息的被推荐人昵称:` msg.getJSONObject("RecommendInfo").getString("NickName") ` 。有时候可能不需要处理群消息,因此在构造` msg ` 消息体里我添加了一个判断是否群消息的字段` groupMsg ` ,可通过` msg.getBoolean ("groupMsg") ` 获取字段的值,如果是群消息,返回true,如果非群消息,返回false。
132132
133133### 1.文本消息
134134
@@ -458,43 +458,55 @@ public class MsgHandler implements IMsgHandlerFace {
458458 * 简单示例程序,收到文本信息自动回复原信息,收到图片、语音、小视频后根据路径自动保存
459459 *
460460 * @author https://github.com/yaphone
461- * @date 创建时间:2017年4月28日 下午10:50:36
461+ * @date 创建时间:2017年4月25日 上午12:18:09
462462 * @version 1.0
463463 *
464464 */
465465public class SimpleDemo implements IMsgHandlerFace {
466+ Logger LOG = Logger . getLogger(SimpleDemo . class);
466467
467468 @Override
468469 public String textMsgHandle (JSONObject msg ) {
469- String text = msg. getString(" Text" );
470- return text;
470+ String docFilePath = " D:/itchat4j/pic/test.docx" ; // 这里是需要发送的文件的路径
471+ if (! msg. getBoolean(" groupMsg" )) { // 群消息不处理
472+ String userId = msg. getString(" FromUserName" );
473+ MessageTools . sendFileMsgByUserId(userId, docFilePath); // 发送文件
474+ String text = msg. getString(" Text" ); // 发送文本消息,也可调用MessageTools.sendFileMsgByUserId(userId,text);
475+ return text;
476+ }
477+ return null ;
471478 }
472479
473480 @Override
474481 public String picMsgHandle (JSONObject msg ) {
475- String fileName = new SimpleDateFormat (" yyyy-MM-dd-HH-mm-ss" ). format(new Date ()) + " .jpg " ; // 这里使用收到图片的时间作为文件名
476- String picPath = " D://itchat4j/pic" + File . separator + fileName; // 保存图片的路径
477- DownloadTools . getDownloadFn(msg, MsgType . PIC , picPath); // 调用此方法来保存图片
482+ String fileName = new SimpleDateFormat (" yyyy-MM-dd-HH-mm-ss" ). format(new Date ()); // 这里使用收到图片的时间作为文件名
483+ String picPath = " D://itchat4j/pic" + File . separator + fileName + " .jpg " ; // 调用此方法来保存图片
484+ DownloadTools . getDownloadFn(msg, MsgTypeEnum . PIC. getType() , picPath); // 保存图片的路径
478485 return " 图片保存成功" ;
479486 }
480487
481488 @Override
482489 public String voiceMsgHandle (JSONObject msg ) {
483- String fileName = new SimpleDateFormat (" yyyy-MM-dd-HH-mm-ss" ). format(new Date ()) + " .mp3 " ; // 这里使用收到语音的时间作为文件名
484- String voicePath = " D://itchat4j/voice" + File . separator + fileName; // 保存语音的路径
485- DownloadTools . getDownloadFn(msg, MsgType . VOICE , voicePath); // 调用此方法来保存语音
490+ String fileName = new SimpleDateFormat (" yyyy-MM-dd-HH-mm-ss" ). format(new Date ());
491+ String voicePath = " D://itchat4j/voice" + File . separator + fileName + " .mp3 " ;
492+ DownloadTools . getDownloadFn(msg, MsgTypeEnum . VOICE. getType() , voicePath);
486493 return " 声音保存成功" ;
487494 }
488495
489496 @Override
490497 public String viedoMsgHandle (JSONObject msg ) {
491498 System . out. println(msg);
492- String fileName = new SimpleDateFormat (" yyyy-MM-dd-HH-mm-ss" ). format(new Date ()) + " .mp4 " ; // 这里使用收到小视频的时间作为文件名
493- String viedoPath = " D://itchat4j/viedo" + File . separator + fileName; // 保存小视频的路径
494- DownloadTools . getDownloadFn(msg, MsgType . VIEDO , viedoPath);// 调用此方法来保存小视频
499+ String fileName = new SimpleDateFormat (" yyyy-MM-dd-HH-mm-ss" ). format(new Date ());
500+ String viedoPath = " D://itchat4j/viedo" + File . separator + fileName + " .mp4 " ;
501+ DownloadTools . getDownloadFn(msg, MsgTypeEnum . VIEDO. getType() , viedoPath);
495502 return " 视频保存成功" ;
496503 }
497504
505+ @Override
506+ public String nameCardMsgHandle (JSONObject msg ) {
507+ return " 收到名片消息" ;
508+ }
509+
498510}
499511```
500512
@@ -510,14 +522,15 @@ public class SimpleDemo implements IMsgHandlerFace {
510522 * @version 1.0
511523 *
512524 */
513- public class Mytest {
525+ public class MyTest {
514526 public static void main (String [] args ) {
515527 String qrPath = " D://itchat4j//login" ; // 保存登陆二维码图片的路径
516528 IMsgHandlerFace msgHandler = new SimpleDemo (); // 实现IMsgHandlerFace接口的类
517529 Wechat wechat = new Wechat (msgHandler, qrPath); // 【注入】
518530 wechat. start(); // 启动服务,会在qrPath下生成一张二维码图片,扫描即可登陆,注意,二维码图片如果超过一定时间未扫描会过期,过期时会自动更新,所以你可能需要重新打开图片
519531 }
520532}
533+
521534```
522535
523536### Demo2 图灵机器人
@@ -527,6 +540,7 @@ public class Mytest {
527540这个示例中我们接入图灵机器人的API,将收到的好友的文本信息发送给图灵机器人,并将机器人回复的消息发送给好友,接下来还是把舞台交代码和注释君吧。
528541
529542``` Java
543+
530544/**
531545 * 图灵机器人示例
532546 *
@@ -536,8 +550,7 @@ public class Mytest {
536550 *
537551 */
538552public class TulingRobot implements IMsgHandlerFace {
539-
540- MyHttpClient myHttpClient = new MyHttpClient ();
553+ MyHttpClient myHttpClient = Core . getInstance(). getMyHttpClient();
541554 String apiKey = " 597b34bea4ec4c85a775c469c84b6817" ; // 这里是我申请的图灵机器人API接口,每天只能5000次调用,建议自己去申请一个,免费的:)
542555 Logger logger = Logger . getLogger(" TulingRobot" );
543556
@@ -568,29 +581,39 @@ public class TulingRobot implements IMsgHandlerFace {
568581
569582 @Override
570583 public String picMsgHandle (JSONObject msg ) {
571-
572584 return " 收到图片" ;
573585 }
574586
575587 @Override
576588 public String voiceMsgHandle (JSONObject msg ) {
577-
589+ String fileName = String . valueOf(new Date (). getTime());
590+ String voicePath = " D://itchat4j/voice" + File . separator + fileName + " .mp3" ;
591+ DownloadTools . getDownloadFn(msg, MsgTypeEnum . VOICE. getType(), voicePath);
578592 return " 收到语音" ;
579593 }
580594
581595 @Override
582596 public String viedoMsgHandle (JSONObject msg ) {
583-
597+ String fileName = String . valueOf(new Date (). getTime());
598+ String viedoPath = " D://itchat4j/viedo" + File . separator + fileName + " .mp4" ;
599+ DownloadTools . getDownloadFn(msg, MsgTypeEnum . VIEDO. getType(), viedoPath);
584600 return " 收到视频" ;
585601 }
586602
587603 public static void main (String [] args ) {
588604 IMsgHandlerFace msgHandler = new TulingRobot ();
589- Wechat wechat = new Wechat (msgHandler, " /home/itchat4j/demo /itchat4j/login" );
605+ Wechat wechat = new Wechat (msgHandler, " D:/ /itchat4j/login" );
590606 wechat. start();
591607 }
592608
609+ @Override
610+ public String nameCardMsgHandle (JSONObject msg ) {
611+ // TODO Auto-generated method stub
612+ return null ;
613+ }
614+
593615}
616+
594617```
595618
596619### Demo3 itchat4j集成在SpringMVC应用中
0 commit comments