|
@@ -1,15 +1,5 @@
|
|
|
package cn.binarywang.wx.miniapp.demo;
|
|
|
|
|
|
-import java.io.File;
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.InputStream;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.concurrent.locks.ReentrantLock;
|
|
|
-
|
|
|
-import org.eclipse.jetty.server.Server;
|
|
|
-import org.eclipse.jetty.servlet.ServletHandler;
|
|
|
-import org.eclipse.jetty.servlet.ServletHolder;
|
|
|
-
|
|
|
import cn.binarywang.wx.miniapp.api.WxMaService;
|
|
|
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
|
|
|
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
|
|
@@ -20,11 +10,23 @@ import cn.binarywang.wx.miniapp.config.WxMaConfig;
|
|
|
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
|
|
|
import cn.binarywang.wx.miniapp.message.WxMaMessageHandler;
|
|
|
import cn.binarywang.wx.miniapp.message.WxMaMessageRouter;
|
|
|
+import cn.binarywang.wx.miniapp.message.WxMaXmlOutMessage;
|
|
|
import cn.binarywang.wx.miniapp.test.TestConfig;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import me.chanjar.weixin.common.api.WxConsts;
|
|
|
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
|
|
|
import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
import me.chanjar.weixin.common.session.WxSessionManager;
|
|
|
+import org.eclipse.jetty.server.Server;
|
|
|
+import org.eclipse.jetty.servlet.ServletHandler;
|
|
|
+import org.eclipse.jetty.servlet.ServletHolder;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.concurrent.locks.ReentrantLock;
|
|
|
|
|
|
/**
|
|
|
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
|
@@ -33,29 +35,31 @@ public class WxMaDemoServer {
|
|
|
|
|
|
private static final WxMaMessageHandler logHandler = new WxMaMessageHandler() {
|
|
|
@Override
|
|
|
- public void handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
- WxMaService service, WxSessionManager sessionManager) throws WxErrorException {
|
|
|
+ public WxMaXmlOutMessage handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
+ WxMaService service, WxSessionManager sessionManager) throws WxErrorException {
|
|
|
System.out.println("收到消息:" + wxMessage.toString());
|
|
|
service.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content("收到信息为:" + wxMessage.toJson())
|
|
|
.toUser(wxMessage.getFromUser()).build());
|
|
|
+ return null;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
private static final WxMaMessageHandler textHandler = new WxMaMessageHandler() {
|
|
|
@Override
|
|
|
- public void handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
- WxMaService service, WxSessionManager sessionManager)
|
|
|
+ public WxMaXmlOutMessage handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
+ WxMaService service, WxSessionManager sessionManager)
|
|
|
throws WxErrorException {
|
|
|
service.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content("回复文本消息")
|
|
|
.toUser(wxMessage.getFromUser()).build());
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
private static final WxMaMessageHandler picHandler = new WxMaMessageHandler() {
|
|
|
@Override
|
|
|
- public void handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
- WxMaService service, WxSessionManager sessionManager) throws WxErrorException {
|
|
|
+ public WxMaXmlOutMessage handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
+ WxMaService service, WxSessionManager sessionManager) throws WxErrorException {
|
|
|
try {
|
|
|
WxMediaUploadResult uploadResult = service.getMediaService()
|
|
|
.uploadMedia(WxMaConstants.MediaType.IMAGE, "png",
|
|
@@ -69,13 +73,14 @@ public class WxMaDemoServer {
|
|
|
} catch (WxErrorException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
+ return null;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
private static final WxMaMessageHandler qrcodeHandler = new WxMaMessageHandler() {
|
|
|
@Override
|
|
|
- public void handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
- WxMaService service, WxSessionManager sessionManager) throws WxErrorException {
|
|
|
+ public WxMaXmlOutMessage handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
+ WxMaService service, WxSessionManager sessionManager) throws WxErrorException {
|
|
|
try {
|
|
|
final File file = service.getQrcodeService().createQrcode("123", 430);
|
|
|
WxMediaUploadResult uploadResult = service.getMediaService().uploadMedia(WxMaConstants.MediaType.IMAGE, file);
|
|
@@ -88,13 +93,14 @@ public class WxMaDemoServer {
|
|
|
} catch (WxErrorException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
+ return null;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
private static final WxMaMessageHandler templateMsgHandler = new WxMaMessageHandler() {
|
|
|
@Override
|
|
|
- public void handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
- WxMaService service, WxSessionManager sessionManager)
|
|
|
+ public WxMaXmlOutMessage handle(WxMaMessage wxMessage, Map<String, Object> context,
|
|
|
+ WxMaService service, WxSessionManager sessionManager)
|
|
|
throws WxErrorException {
|
|
|
service.getMsgService().sendTemplateMsg(WxMaTemplateMessage.builder()
|
|
|
.templateId(templateId).data(Lists.newArrayList(
|
|
@@ -102,10 +108,22 @@ public class WxMaDemoServer {
|
|
|
.toUser(wxMessage.getFromUser())
|
|
|
.formId("自己替换可用的formid")
|
|
|
.build());
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
+ private static final WxMaMessageHandler customerServiceMessageHandler = new WxMaMessageHandler() {
|
|
|
+ @Override
|
|
|
+ public WxMaXmlOutMessage handle(WxMaMessage message, Map<String, Object> context, WxMaService service, WxSessionManager sessionManager) {
|
|
|
+ return new WxMaXmlOutMessage()
|
|
|
+ .setMsgType(WxConsts.XmlMsgType.TRANSFER_CUSTOMER_SERVICE)
|
|
|
+ .setFromUserName(message.getToUser())
|
|
|
+ .setCreateTime(Calendar.getInstance().getTimeInMillis() / 1000)
|
|
|
+ .setToUserName(message.getFromUser());
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
private static WxMaConfig config;
|
|
|
private static WxMaService service;
|
|
|
private static WxMaMessageRouter router;
|
|
@@ -142,7 +160,8 @@ public class WxMaDemoServer {
|
|
|
.rule().async(false).content("模板").handler(templateMsgHandler).end()
|
|
|
.rule().async(false).content("文本").handler(textHandler).end()
|
|
|
.rule().async(false).content("图片").handler(picHandler).end()
|
|
|
- .rule().async(false).content("二维码").handler(qrcodeHandler).end();
|
|
|
+ .rule().async(false).content("二维码").handler(qrcodeHandler).end()
|
|
|
+ .rule().async(false).content("转发客服").handler(customerServiceMessageHandler).end();
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|