增加查看客服聊天记录的接口 #5

This commit is contained in:
BinaryWang
2016-07-18 12:10:12 +08:00
parent 0c723bbf5c
commit c040ba3929
6 changed files with 220 additions and 32 deletions

View File

@@ -1,14 +1,11 @@
package me.chanjar.weixin.mp.api;
import java.io.File;
import java.util.Date;
import me.chanjar.weixin.common.exception.WxErrorException;
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.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;
import me.chanjar.weixin.mp.bean.kefu.result.*;
/**
* 客服接口
@@ -135,4 +132,23 @@ public interface WxMpKefuService {
* </pre>
*/
WxMpKfSessionWaitCaseList kfSessionGetWaitCase() throws WxErrorException;
//*******************获取聊天记录的接口***********************//
/**
* <pre>
* 获取聊天记录
* 此接口返回的聊天记录中,对于图片、语音、视频,分别展示成文本格式的[image]、[voice]、[video]
* 详情请见:<a href="http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1464937269_mUtmK&token=&lang=zh_CN">获取聊天记录</a>
* 接口url格式 https://api.weixin.qq.com/customservice/msgrecord/getmsglist?access_token=ACCESS_TOKEN
* </pre>
*
* @param startTime 起始时间
* @param endTime 结束时间
* @param msgId 消息id顺序从小到大从1开始
* @param number 每次获取条数最多10000条
* @return 聊天记录对象
* @throws WxErrorException
*/
WxMpKfMsgList kfMsgList(Date startTime, Date endTime, Integer msgId, Integer number) throws WxErrorException;
}

View File

@@ -1,7 +1,10 @@
package me.chanjar.weixin.mp.api.impl;
import java.io.File;
import java.util.Date;
import com.google.gson.JsonObject;
import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
import me.chanjar.weixin.common.util.http.SimpleGetRequestExecutor;
@@ -10,11 +13,7 @@ import me.chanjar.weixin.mp.api.WxMpKefuService;
import me.chanjar.weixin.mp.api.WxMpService;
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.result.WxMpKfList;
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;
import me.chanjar.weixin.mp.bean.kefu.result.*;
/**
*
@@ -22,6 +21,7 @@ import me.chanjar.weixin.mp.bean.kefu.result.WxMpKfSessionWaitCaseList;
*
*/
public class WxMpKefuServiceImpl implements WxMpKefuService {
public static final String API_URL_PREFIX = "https://api.weixin.qq.com/customservice";
private WxMpService wxMpService;
public WxMpKefuServiceImpl(WxMpService wxMpService) {
@@ -30,7 +30,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
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
.execute(new SimpleGetRequestExecutor(), url, null);
return WxMpKfList.fromJson(responseContent);
@@ -38,7 +38,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
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
.execute(new SimpleGetRequestExecutor(), url, null);
return WxMpKfOnlineList.fromJson(responseContent);
@@ -47,7 +47,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
public boolean kfAccountAdd(WxMpKfAccountRequest request)
throws WxErrorException {
String url = "https://api.weixin.qq.com/customservice/kfaccount/add";
String url = API_URL_PREFIX + "/kfaccount/add";
this.wxMpService.execute(new SimplePostRequestExecutor(), url,
request.toJson());
return true;
@@ -56,7 +56,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
public boolean kfAccountUpdate(WxMpKfAccountRequest request)
throws WxErrorException {
String url = "https://api.weixin.qq.com/customservice/kfaccount/update";
String url = API_URL_PREFIX + "/kfaccount/update";
this.wxMpService.execute(new SimplePostRequestExecutor(), url,
request.toJson());
return true;
@@ -64,7 +64,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
public boolean kfAccountInviteWorker(WxMpKfAccountRequest request) throws WxErrorException {
String url = "https://api.weixin.qq.com/customservice/kfaccount/inviteworker";
String url = API_URL_PREFIX + "/kfaccount/inviteworker";
this.wxMpService.execute(new SimplePostRequestExecutor(), url,
request.toJson());
return true;
@@ -73,16 +73,14 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
public boolean kfAccountUploadHeadImg(String kfAccount, File imgFile)
throws WxErrorException {
String url = "https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?kf_account="
+ kfAccount;
String url = API_URL_PREFIX + "/kfaccount/uploadheadimg?kf_account=" + kfAccount;
this.wxMpService.execute(new MediaUploadRequestExecutor(), url, imgFile);
return true;
}
@Override
public boolean kfAccountDel(String kfAccount) throws WxErrorException {
String url = "https://api.weixin.qq.com/customservice/kfaccount/del?kf_account="
+ kfAccount;
String url = API_URL_PREFIX + "/kfaccount/del?kf_account=" + kfAccount;
this.wxMpService.execute(new SimpleGetRequestExecutor(), url, null);
return true;
}
@@ -91,7 +89,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
public boolean kfSessionCreate(String openid, String kfAccount)
throws WxErrorException {
WxMpKfSessionRequest request = new WxMpKfSessionRequest(kfAccount, openid);
String url = "https://api.weixin.qq.com/customservice/kfsession/create";
String url = API_URL_PREFIX + "/kfsession/create";
this.wxMpService.execute(new SimplePostRequestExecutor(), url,
request.toJson());
return true;
@@ -101,7 +99,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
public boolean kfSessionClose(String openid, String kfAccount)
throws WxErrorException {
WxMpKfSessionRequest request = new WxMpKfSessionRequest(kfAccount, openid);
String url = "https://api.weixin.qq.com/customservice/kfsession/close";
String url = API_URL_PREFIX + "/kfsession/close";
this.wxMpService.execute(new SimplePostRequestExecutor(), url,
request.toJson());
return true;
@@ -110,8 +108,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
public WxMpKfSessionGetResult kfSessionGet(String openid)
throws WxErrorException {
String url = "https://api.weixin.qq.com/customservice/kfsession/getsession?openid="
+ openid;
String url = API_URL_PREFIX + "/kfsession/getsession?openid=" + openid;
String responseContent = this.wxMpService
.execute(new SimpleGetRequestExecutor(), url, null);
return WxMpKfSessionGetResult.fromJson(responseContent);
@@ -120,8 +117,7 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
public WxMpKfSessionList kfSessionList(String kfAccount)
throws WxErrorException {
String url = "https://api.weixin.qq.com/customservice/kfsession/getsessionlist?kf_account="
+ kfAccount;
String url = API_URL_PREFIX + "/kfsession/getsessionlist?kf_account=" + kfAccount;
String responseContent = this.wxMpService
.execute(new SimpleGetRequestExecutor(), url, null);
return WxMpKfSessionList.fromJson(responseContent);
@@ -130,10 +126,28 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
@Override
public WxMpKfSessionWaitCaseList kfSessionGetWaitCase()
throws WxErrorException {
String url = "https://api.weixin.qq.com/customservice/kfsession/getwaitcase";
String url = API_URL_PREFIX + "/kfsession/getwaitcase";
String responseContent = this.wxMpService
.execute(new SimpleGetRequestExecutor(), url, null);
return WxMpKfSessionWaitCaseList.fromJson(responseContent);
}
@Override
public WxMpKfMsgList kfMsgList(Date startTime, Date endTime, Integer msgId, Integer number) throws WxErrorException {
if(startTime.after(endTime)){
throw new WxErrorException(WxError.newBuilder().setErrorMsg("起始时间不能晚于结束时间!").build());
}
String url = API_URL_PREFIX + "/msgrecord/getmsglist";
JsonObject param = new JsonObject();
param.addProperty("starttime", startTime.getTime() / 1000); //starttime 起始时间unix时间戳
param.addProperty("endtime", endTime.getTime() / 1000); //endtime 结束时间unix时间戳每次查询时段不能超过24小时
param.addProperty("msgid", msgId); //msgid 消息id顺序从小到大从1开始
param.addProperty("number", number); //number 每次获取条数最多10000条
String responseContent = this.wxMpService.execute(new SimplePostRequestExecutor(), url, param.toString());
return WxMpKfMsgList.fromJson(responseContent);
}
}