mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 10:38:42 +08:00 
			
		
		
		
	发送客服消息接口转移到客服专用service中,使用时需要加入getKefuService()
This commit is contained in:
		| @ -1,12 +1,18 @@ | |||||||
| package me.chanjar.weixin.mp.api; | package me.chanjar.weixin.mp.api; | ||||||
|  |  | ||||||
| import me.chanjar.weixin.common.exception.WxErrorException; |  | ||||||
| import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest; |  | ||||||
| import me.chanjar.weixin.mp.bean.kefu.result.*; |  | ||||||
|  |  | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
|  | import me.chanjar.weixin.common.exception.WxErrorException; | ||||||
|  | import me.chanjar.weixin.mp.bean.WxMpCustomMessage; | ||||||
|  | import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest; | ||||||
|  | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfList; | ||||||
|  | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfMsgList; | ||||||
|  | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfOnlineList; | ||||||
|  | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfSessionGetResult; | ||||||
|  | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfSessionList; | ||||||
|  | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfSessionWaitCaseList; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 客服接口 , |  * 客服接口 , | ||||||
|  * 命名采用kefu拼音的原因是: |  * 命名采用kefu拼音的原因是: | ||||||
| @ -17,6 +23,14 @@ import java.util.Date; | |||||||
|  */ |  */ | ||||||
| public interface WxMpKefuService { | public interface WxMpKefuService { | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * <pre> | ||||||
|  |    * 发送客服消息 | ||||||
|  |    * 详情请见: <a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140547&token=&lang=zh_CN">发送客服消息</a> | ||||||
|  |    * </pre> | ||||||
|  |    */ | ||||||
|  |   boolean customMessageSend(WxMpCustomMessage message) throws WxErrorException; | ||||||
|  |  | ||||||
|   //*******************客服管理接口***********************// |   //*******************客服管理接口***********************// | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|  | |||||||
| @ -3,7 +3,6 @@ package me.chanjar.weixin.mp.api; | |||||||
| import me.chanjar.weixin.common.bean.WxJsapiSignature; | import me.chanjar.weixin.common.bean.WxJsapiSignature; | ||||||
| import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||||
| import me.chanjar.weixin.common.util.http.RequestExecutor; | import me.chanjar.weixin.common.util.http.RequestExecutor; | ||||||
| import me.chanjar.weixin.mp.bean.WxMpCustomMessage; |  | ||||||
| import me.chanjar.weixin.mp.bean.WxMpIndustry; | import me.chanjar.weixin.mp.bean.WxMpIndustry; | ||||||
| import me.chanjar.weixin.mp.bean.WxMpMassGroupMessage; | import me.chanjar.weixin.mp.bean.WxMpMassGroupMessage; | ||||||
| import me.chanjar.weixin.mp.bean.WxMpMassNews; | import me.chanjar.weixin.mp.bean.WxMpMassNews; | ||||||
| @ -82,14 +81,6 @@ public interface WxMpService { | |||||||
|    */ |    */ | ||||||
|   WxJsapiSignature createJsapiSignature(String url) throws WxErrorException; |   WxJsapiSignature createJsapiSignature(String url) throws WxErrorException; | ||||||
|  |  | ||||||
|   /** |  | ||||||
|    * <pre> |  | ||||||
|    * 发送客服消息 |  | ||||||
|    * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=发送客服消息 |  | ||||||
|    * </pre> |  | ||||||
|    */ |  | ||||||
|   void customMessageSend(WxMpCustomMessage message) throws WxErrorException; |  | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * <pre> |    * <pre> | ||||||
|    * 上传群发用的图文消息,上传后才能群发图文消息 |    * 上传群发用的图文消息,上传后才能群发图文消息 | ||||||
|  | |||||||
| @ -3,15 +3,18 @@ package me.chanjar.weixin.mp.api.impl; | |||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  |  | ||||||
| import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||||
|  |  | ||||||
| import me.chanjar.weixin.common.bean.result.WxError; | import me.chanjar.weixin.common.bean.result.WxError; | ||||||
|  | import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; | ||||||
| import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||||
| import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; | import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; | ||||||
| import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor; |  | ||||||
| import me.chanjar.weixin.common.util.http.SimplePostRequestExecutor; |  | ||||||
| import me.chanjar.weixin.mp.api.WxMpKefuService; | import me.chanjar.weixin.mp.api.WxMpKefuService; | ||||||
| import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||||
|  | import me.chanjar.weixin.mp.bean.WxMpCustomMessage; | ||||||
| import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest; | import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest; | ||||||
| import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfSessionRequest; | import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfSessionRequest; | ||||||
| import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfList; | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfList; | ||||||
| @ -27,6 +30,8 @@ import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfSessionWaitCaseList; | |||||||
|  * |  * | ||||||
|  */ |  */ | ||||||
| public class WxMpKefuServiceImpl implements WxMpKefuService { | public class WxMpKefuServiceImpl implements WxMpKefuService { | ||||||
|  |   protected final Logger log = LoggerFactory | ||||||
|  |       .getLogger(WxMpKefuServiceImpl.class); | ||||||
|   private static final String API_URL_PREFIX = "https://api.weixin.qq.com/customservice"; |   private static final String API_URL_PREFIX = "https://api.weixin.qq.com/customservice"; | ||||||
|   private WxMpService wxMpService; |   private WxMpService wxMpService; | ||||||
|  |  | ||||||
| @ -34,19 +39,31 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|     this.wxMpService = wxMpService; |     this.wxMpService = wxMpService; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @Override | ||||||
|  |   public boolean customMessageSend(WxMpCustomMessage message) | ||||||
|  |       throws WxErrorException { | ||||||
|  |     String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send"; | ||||||
|  |     String responseContent = this.wxMpService.post(url, message.toJson()); | ||||||
|  |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, message.toJson(), | ||||||
|  |         responseContent); | ||||||
|  |     return true; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpKfList kfList() throws WxErrorException { |   public WxMpKfList kfList() throws WxErrorException { | ||||||
|     String url = "https://api.weixin.qq.com/cgi-bin/customservice/getkflist"; |     String url = API_URL_PREFIX + "/getkflist"; | ||||||
|     String responseContent = this.wxMpService |     String responseContent = this.wxMpService.get(url, null); | ||||||
|         .execute(new SimpleGetRequestExecutor(), url, null); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, null, | ||||||
|  |         responseContent); | ||||||
|     return WxMpKfList.fromJson(responseContent); |     return WxMpKfList.fromJson(responseContent); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpKfOnlineList kfOnlineList() throws WxErrorException { |   public WxMpKfOnlineList kfOnlineList() throws WxErrorException { | ||||||
|     String url = "https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist"; |     String url = API_URL_PREFIX + "/getonlinekflist"; | ||||||
|     String responseContent = this.wxMpService |     String responseContent = this.wxMpService.get(url, null); | ||||||
|         .execute(new SimpleGetRequestExecutor(), url, null); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, null, | ||||||
|  |         responseContent); | ||||||
|     return WxMpKfOnlineList.fromJson(responseContent); |     return WxMpKfOnlineList.fromJson(responseContent); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -54,8 +71,9 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|   public boolean kfAccountAdd(WxMpKfAccountRequest request) |   public boolean kfAccountAdd(WxMpKfAccountRequest request) | ||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     String url = API_URL_PREFIX + "/kfaccount/add"; |     String url = API_URL_PREFIX + "/kfaccount/add"; | ||||||
|     this.wxMpService.execute(new SimplePostRequestExecutor(), url, |     String responseContent = this.wxMpService.post(url, request.toJson()); | ||||||
|         request.toJson()); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, request.toJson(), | ||||||
|  |         responseContent); | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -63,16 +81,18 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|   public boolean kfAccountUpdate(WxMpKfAccountRequest request) |   public boolean kfAccountUpdate(WxMpKfAccountRequest request) | ||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     String url = API_URL_PREFIX + "/kfaccount/update"; |     String url = API_URL_PREFIX + "/kfaccount/update"; | ||||||
|     this.wxMpService.execute(new SimplePostRequestExecutor(), url, |     String responseContent = this.wxMpService.post(url, request.toJson()); | ||||||
|         request.toJson()); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, request.toJson(), | ||||||
|  |         responseContent); | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public boolean kfAccountInviteWorker(WxMpKfAccountRequest request) throws WxErrorException { |   public boolean kfAccountInviteWorker(WxMpKfAccountRequest request) throws WxErrorException { | ||||||
|     String url = API_URL_PREFIX + "/kfaccount/inviteworker"; |     String url = API_URL_PREFIX + "/kfaccount/inviteworker"; | ||||||
|     this.wxMpService.execute(new SimplePostRequestExecutor(), url, |     String responseContent = this.wxMpService.post(url, request.toJson()); | ||||||
|             request.toJson()); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, request.toJson(), | ||||||
|  |         responseContent); | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -80,14 +100,20 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|   public boolean kfAccountUploadHeadImg(String kfAccount, File imgFile) |   public boolean kfAccountUploadHeadImg(String kfAccount, File imgFile) | ||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     String url = API_URL_PREFIX + "/kfaccount/uploadheadimg?kf_account=" + kfAccount; |     String url = API_URL_PREFIX + "/kfaccount/uploadheadimg?kf_account=" + kfAccount; | ||||||
|     this.wxMpService.execute(new MediaUploadRequestExecutor(), url, imgFile); |     WxMediaUploadResult responseContent = this.wxMpService | ||||||
|  |         .execute(new MediaUploadRequestExecutor(), url, imgFile); | ||||||
|  |     this.log.debug("\nurl:{}\nparams:{}&file:{}\nresponse:{}", url, kfAccount, | ||||||
|  |         imgFile.getAbsolutePath(), | ||||||
|  |         responseContent); | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public boolean kfAccountDel(String kfAccount) throws WxErrorException { |   public boolean kfAccountDel(String kfAccount) throws WxErrorException { | ||||||
|     String url = API_URL_PREFIX + "/kfaccount/del?kf_account=" + kfAccount; |     String url = API_URL_PREFIX + "/kfaccount/del?kf_account=" + kfAccount; | ||||||
|     this.wxMpService.execute(new SimpleGetRequestExecutor(), url, null); |     String responseContent = this.wxMpService.get(url, null); | ||||||
|  |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, null, | ||||||
|  |         responseContent); | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -96,8 +122,9 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     WxMpKfSessionRequest request = new WxMpKfSessionRequest(kfAccount, openid); |     WxMpKfSessionRequest request = new WxMpKfSessionRequest(kfAccount, openid); | ||||||
|     String url = API_URL_PREFIX + "/kfsession/create"; |     String url = API_URL_PREFIX + "/kfsession/create"; | ||||||
|     this.wxMpService.execute(new SimplePostRequestExecutor(), url, |     String responseContent = this.wxMpService.post(url, request.toJson()); | ||||||
|         request.toJson()); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, request.toJson(), | ||||||
|  |         responseContent); | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -106,8 +133,9 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     WxMpKfSessionRequest request = new WxMpKfSessionRequest(kfAccount, openid); |     WxMpKfSessionRequest request = new WxMpKfSessionRequest(kfAccount, openid); | ||||||
|     String url = API_URL_PREFIX + "/kfsession/close"; |     String url = API_URL_PREFIX + "/kfsession/close"; | ||||||
|     this.wxMpService.execute(new SimplePostRequestExecutor(), url, |     String responseContent = this.wxMpService.post(url, request.toJson()); | ||||||
|         request.toJson()); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, request.toJson(), | ||||||
|  |         responseContent); | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -115,8 +143,9 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|   public WxMpKfSessionGetResult kfSessionGet(String openid) |   public WxMpKfSessionGetResult kfSessionGet(String openid) | ||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     String url = API_URL_PREFIX + "/kfsession/getsession?openid=" + openid; |     String url = API_URL_PREFIX + "/kfsession/getsession?openid=" + openid; | ||||||
|     String responseContent = this.wxMpService |     String responseContent = this.wxMpService.get(url, null); | ||||||
|         .execute(new SimpleGetRequestExecutor(), url, null); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, null, | ||||||
|  |         responseContent); | ||||||
|     return WxMpKfSessionGetResult.fromJson(responseContent); |     return WxMpKfSessionGetResult.fromJson(responseContent); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -124,8 +153,9 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|   public WxMpKfSessionList kfSessionList(String kfAccount) |   public WxMpKfSessionList kfSessionList(String kfAccount) | ||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     String url = API_URL_PREFIX + "/kfsession/getsessionlist?kf_account=" + kfAccount; |     String url = API_URL_PREFIX + "/kfsession/getsessionlist?kf_account=" + kfAccount; | ||||||
|     String responseContent = this.wxMpService |     String responseContent = this.wxMpService.get(url, null); | ||||||
|         .execute(new SimpleGetRequestExecutor(), url, null); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, null, | ||||||
|  |         responseContent); | ||||||
|     return WxMpKfSessionList.fromJson(responseContent); |     return WxMpKfSessionList.fromJson(responseContent); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -133,8 +163,9 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|   public WxMpKfSessionWaitCaseList kfSessionGetWaitCase() |   public WxMpKfSessionWaitCaseList kfSessionGetWaitCase() | ||||||
|       throws WxErrorException { |       throws WxErrorException { | ||||||
|     String url = API_URL_PREFIX + "/kfsession/getwaitcase"; |     String url = API_URL_PREFIX + "/kfsession/getwaitcase"; | ||||||
|     String responseContent = this.wxMpService |     String responseContent = this.wxMpService.get(url, null); | ||||||
|         .execute(new SimpleGetRequestExecutor(), url, null); |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, null, | ||||||
|  |         responseContent); | ||||||
|     return WxMpKfSessionWaitCaseList.fromJson(responseContent); |     return WxMpKfSessionWaitCaseList.fromJson(responseContent); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @ -156,7 +187,9 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { | |||||||
|     param.addProperty("msgid", msgId); //msgid	消息id顺序从小到大,从1开始 |     param.addProperty("msgid", msgId); //msgid	消息id顺序从小到大,从1开始 | ||||||
|     param.addProperty("number", number); //number	每次获取条数,最多10000条 |     param.addProperty("number", number); //number	每次获取条数,最多10000条 | ||||||
|  |  | ||||||
|     String responseContent = this.wxMpService.execute(new SimplePostRequestExecutor(), url, param.toString()); |     String responseContent = this.wxMpService.post(url, param.toString()); | ||||||
|  |     this.log.debug("\nurl:{}\nparams:{}\nresponse:{}", url, param.toString(), | ||||||
|  |         responseContent); | ||||||
|     return WxMpKfMsgList.fromJson(responseContent); |     return WxMpKfMsgList.fromJson(responseContent); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | |||||||
| @ -44,7 +44,6 @@ import me.chanjar.weixin.mp.api.WxMpQrcodeService; | |||||||
| import me.chanjar.weixin.mp.api.WxMpService; | import me.chanjar.weixin.mp.api.WxMpService; | ||||||
| import me.chanjar.weixin.mp.api.WxMpUserService; | import me.chanjar.weixin.mp.api.WxMpUserService; | ||||||
| import me.chanjar.weixin.mp.api.WxMpUserTagService; | import me.chanjar.weixin.mp.api.WxMpUserTagService; | ||||||
| import me.chanjar.weixin.mp.bean.WxMpCustomMessage; |  | ||||||
| import me.chanjar.weixin.mp.bean.WxMpIndustry; | import me.chanjar.weixin.mp.bean.WxMpIndustry; | ||||||
| import me.chanjar.weixin.mp.bean.WxMpMassGroupMessage; | import me.chanjar.weixin.mp.bean.WxMpMassGroupMessage; | ||||||
| import me.chanjar.weixin.mp.bean.WxMpMassNews; | import me.chanjar.weixin.mp.bean.WxMpMassNews; | ||||||
| @ -203,12 +202,6 @@ public class WxMpServiceImpl implements WxMpService { | |||||||
|     return jsapiSignature; |     return jsapiSignature; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Override |  | ||||||
|   public void customMessageSend(WxMpCustomMessage message) throws WxErrorException { |  | ||||||
|     String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send"; |  | ||||||
|     execute(new SimplePostRequestExecutor(), url, message.toJson()); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   @Override |   @Override | ||||||
|   public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException { |   public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException { | ||||||
|     String url = "https://api.weixin.qq.com/cgi-bin/media/uploadnews"; |     String url = "https://api.weixin.qq.com/cgi-bin/media/uploadnews"; | ||||||
|  | |||||||
| @ -1,44 +0,0 @@ | |||||||
| package me.chanjar.weixin.mp.api; |  | ||||||
|  |  | ||||||
| import com.google.inject.Inject; |  | ||||||
| import me.chanjar.weixin.common.api.WxConsts; |  | ||||||
| import me.chanjar.weixin.common.exception.WxErrorException; |  | ||||||
| import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; |  | ||||||
| import me.chanjar.weixin.mp.bean.WxMpCustomMessage; |  | ||||||
| import org.testng.annotations.Guice; |  | ||||||
| import org.testng.annotations.Test; |  | ||||||
|  |  | ||||||
| /*** |  | ||||||
|  * 测试发送客服消息 |  | ||||||
|  * @author chanjarster |  | ||||||
|  * |  | ||||||
|  */ |  | ||||||
| @Test(groups="customMessageAPI") |  | ||||||
| @Guice(modules = ApiTestModule.class) |  | ||||||
| public class WxMpCustomMessageAPITest { |  | ||||||
|  |  | ||||||
|   @Inject |  | ||||||
|   protected WxMpServiceImpl wxService; |  | ||||||
|  |  | ||||||
|   public void testSendCustomMessage() throws WxErrorException { |  | ||||||
|     ApiTestModule.WxXmlMpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage(); |  | ||||||
|     WxMpCustomMessage message = new WxMpCustomMessage(); |  | ||||||
|     message.setMsgType(WxConsts.CUSTOM_MSG_TEXT); |  | ||||||
|     message.setToUser(configStorage.getOpenId()); |  | ||||||
|     message.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); |  | ||||||
|  |  | ||||||
|     this.wxService.customMessageSend(message); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   public void testSendCustomMessageWithKfAccount() throws WxErrorException { |  | ||||||
|     ApiTestModule.WxXmlMpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService.getWxMpConfigStorage(); |  | ||||||
|     WxMpCustomMessage message = new WxMpCustomMessage(); |  | ||||||
|     message.setMsgType(WxConsts.CUSTOM_MSG_TEXT); |  | ||||||
|     message.setToUser(configStorage.getOpenId()); |  | ||||||
|     message.setKfAccount(configStorage.getKfAccount()); |  | ||||||
|     message.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); |  | ||||||
|  |  | ||||||
|     this.wxService.customMessageSend(message); |  | ||||||
|   } |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @ -11,9 +11,11 @@ import org.testng.annotations.Test; | |||||||
|  |  | ||||||
| import com.google.inject.Inject; | import com.google.inject.Inject; | ||||||
|  |  | ||||||
|  | import me.chanjar.weixin.common.api.WxConsts; | ||||||
| import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||||
| import me.chanjar.weixin.mp.api.ApiTestModule; | import me.chanjar.weixin.mp.api.ApiTestModule; | ||||||
| import me.chanjar.weixin.mp.api.ApiTestModule.WxXmlMpInMemoryConfigStorage; | import me.chanjar.weixin.mp.api.ApiTestModule.WxXmlMpInMemoryConfigStorage; | ||||||
|  | import me.chanjar.weixin.mp.bean.WxMpCustomMessage; | ||||||
| import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest; | import me.chanjar.weixin.mp.bean.kefu.request.WxMpKfAccountRequest; | ||||||
| import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfInfo; | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfInfo; | ||||||
| import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfList; | import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfList; | ||||||
| @ -35,6 +37,31 @@ public class WxMpKefuServiceImplTest { | |||||||
|   @Inject |   @Inject | ||||||
|   protected WxMpServiceImpl wxService; |   protected WxMpServiceImpl wxService; | ||||||
|  |  | ||||||
|  |   public void testSendCustomMessage() throws WxErrorException { | ||||||
|  |     ApiTestModule.WxXmlMpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService | ||||||
|  |         .getWxMpConfigStorage(); | ||||||
|  |     WxMpCustomMessage message = new WxMpCustomMessage(); | ||||||
|  |     message.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | ||||||
|  |     message.setToUser(configStorage.getOpenId()); | ||||||
|  |     message.setContent( | ||||||
|  |         "欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | ||||||
|  |  | ||||||
|  |     this.wxService.getKefuService().customMessageSend(message); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   public void testSendCustomMessageWithKfAccount() throws WxErrorException { | ||||||
|  |     ApiTestModule.WxXmlMpInMemoryConfigStorage configStorage = (ApiTestModule.WxXmlMpInMemoryConfigStorage) this.wxService | ||||||
|  |         .getWxMpConfigStorage(); | ||||||
|  |     WxMpCustomMessage message = new WxMpCustomMessage(); | ||||||
|  |     message.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | ||||||
|  |     message.setToUser(configStorage.getOpenId()); | ||||||
|  |     message.setKfAccount(configStorage.getKfAccount()); | ||||||
|  |     message.setContent( | ||||||
|  |         "欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | ||||||
|  |  | ||||||
|  |     this.wxService.getKefuService().customMessageSend(message); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   public void testKfList() throws WxErrorException { |   public void testKfList() throws WxErrorException { | ||||||
|     WxMpKfList kfList = this.wxService.getKefuService().kfList(); |     WxMpKfList kfList = this.wxService.getKefuService().kfList(); | ||||||
|     Assert.assertNotNull(kfList); |     Assert.assertNotNull(kfList); | ||||||
| @ -123,7 +150,7 @@ public class WxMpKefuServiceImplTest { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Test(dataProvider = "getKfAccountAndOpenid") |   @Test(dataProvider = "getKfAccountAndOpenid") | ||||||
|   public void testKfSessionGet(String kfAccount, |   public void testKfSessionGet(@SuppressWarnings("unused") String kfAccount, | ||||||
|       String openid) throws WxErrorException { |       String openid) throws WxErrorException { | ||||||
|     WxMpKfSessionGetResult result = this.wxService.getKefuService() |     WxMpKfSessionGetResult result = this.wxService.getKefuService() | ||||||
|         .kfSessionGet(openid); |         .kfSessionGet(openid); | ||||||
|  | |||||||
| @ -1,5 +1,9 @@ | |||||||
| package me.chanjar.weixin.mp.demo; | package me.chanjar.weixin.mp.demo; | ||||||
|  |  | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Random; | ||||||
|  | import java.util.regex.Pattern; | ||||||
|  |  | ||||||
| import me.chanjar.weixin.common.exception.WxErrorException; | import me.chanjar.weixin.common.exception.WxErrorException; | ||||||
| import me.chanjar.weixin.common.session.WxSession; | import me.chanjar.weixin.common.session.WxSession; | ||||||
| import me.chanjar.weixin.common.session.WxSessionManager; | import me.chanjar.weixin.common.session.WxSessionManager; | ||||||
| @ -10,10 +14,6 @@ import me.chanjar.weixin.mp.bean.WxMpCustomMessage; | |||||||
| import me.chanjar.weixin.mp.bean.WxMpXmlMessage; | import me.chanjar.weixin.mp.bean.WxMpXmlMessage; | ||||||
| import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage; | import me.chanjar.weixin.mp.bean.WxMpXmlOutMessage; | ||||||
|  |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.Random; |  | ||||||
| import java.util.regex.Pattern; |  | ||||||
|  |  | ||||||
| public class DemoGuessNumberHandler implements WxMpMessageHandler, WxMpMessageMatcher { | public class DemoGuessNumberHandler implements WxMpMessageHandler, WxMpMessageMatcher { | ||||||
|  |  | ||||||
|   private Random random = new Random(); |   private Random random = new Random(); | ||||||
| @ -57,14 +57,14 @@ public class DemoGuessNumberHandler implements WxMpMessageHandler, WxMpMessageMa | |||||||
|           .toUser(wxMessage.getFromUserName()) |           .toUser(wxMessage.getFromUserName()) | ||||||
|           .content("请猜一个100以内的数字") |           .content("请猜一个100以内的数字") | ||||||
|           .build(); |           .build(); | ||||||
|       wxMpService.customMessageSend(m); |       wxMpService.getKefuService().customMessageSend(m); | ||||||
|     } else { |     } else { | ||||||
|       WxMpCustomMessage m = WxMpCustomMessage |       WxMpCustomMessage m = WxMpCustomMessage | ||||||
|           .TEXT() |           .TEXT() | ||||||
|           .toUser(wxMessage.getFromUserName()) |           .toUser(wxMessage.getFromUserName()) | ||||||
|           .content("放弃了吗?那请重新猜一个100以内的数字") |           .content("放弃了吗?那请重新猜一个100以内的数字") | ||||||
|           .build(); |           .build(); | ||||||
|       wxMpService.customMessageSend(m); |       wxMpService.getKefuService().customMessageSend(m); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     session.setAttribute("guessing", Boolean.TRUE); |     session.setAttribute("guessing", Boolean.TRUE); | ||||||
| @ -92,7 +92,7 @@ public class DemoGuessNumberHandler implements WxMpMessageHandler, WxMpMessageMa | |||||||
|           .toUser(wxMessage.getFromUserName()) |           .toUser(wxMessage.getFromUserName()) | ||||||
|           .content("小了") |           .content("小了") | ||||||
|           .build(); |           .build(); | ||||||
|       wxMpService.customMessageSend(m); |       wxMpService.getKefuService().customMessageSend(m); | ||||||
|  |  | ||||||
|     } else if (guessNumber > answer) { |     } else if (guessNumber > answer) { | ||||||
|       WxMpCustomMessage m = WxMpCustomMessage |       WxMpCustomMessage m = WxMpCustomMessage | ||||||
| @ -100,7 +100,7 @@ public class DemoGuessNumberHandler implements WxMpMessageHandler, WxMpMessageMa | |||||||
|           .toUser(wxMessage.getFromUserName()) |           .toUser(wxMessage.getFromUserName()) | ||||||
|           .content("大了") |           .content("大了") | ||||||
|           .build(); |           .build(); | ||||||
|       wxMpService.customMessageSend(m); |       wxMpService.getKefuService().customMessageSend(m); | ||||||
|     } else { |     } else { | ||||||
|       WxMpCustomMessage m = WxMpCustomMessage |       WxMpCustomMessage m = WxMpCustomMessage | ||||||
|           .TEXT() |           .TEXT() | ||||||
| @ -108,7 +108,7 @@ public class DemoGuessNumberHandler implements WxMpMessageHandler, WxMpMessageMa | |||||||
|           .content("Bingo!") |           .content("Bingo!") | ||||||
|           .build(); |           .build(); | ||||||
|       session.removeAttribute("guessing"); |       session.removeAttribute("guessing"); | ||||||
|       wxMpService.customMessageSend(m); |       wxMpService.getKefuService().customMessageSend(m); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   } |   } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 BinaryWang
					BinaryWang