提交 ff2dad91 编写于 作者: 孙喜旺

新增企微客服相关接口

上级 79bfa45f
package com.linkwechat.wecom.client.kf;
import com.dtflys.forest.annotation.*;
import com.linkwechat.wecom.domain.dto.WeResultDto;
import com.linkwechat.wecom.domain.dto.kf.*;
import com.linkwechat.wecom.interceptor.WeAccessTokenInterceptor;
import com.linkwechat.wecom.retry.WeCommonRetryWhen;
/**
* @author danmo
* @description 客服相关接口
* @date 2021/10/9 14:09
**/
@BaseRequest(baseURL = "${weComServerUrl}${weComePrefix}", interceptor = WeAccessTokenInterceptor.class)
@Retry(maxRetryCount = "3", maxRetryInterval = "1000", condition = WeCommonRetryWhen.class)
public interface WeKfClient {
/**
* 添加客服
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfDto}
*/
@Request(url = "/kf/account/add", type = "POST")
public WeKfDto addAccount(@JSONBody WeKfDto dto);
/**
* 删除客服
*
* @param dto in {@link WeKfDto}
* @return {@link WeResultDto}
*/
@Request(url = "/kf/account/del", type = "POST")
public WeResultDto deleteAccount(@JSONBody WeKfDto dto);
/**
* 修改客服信息
*
* @param dto in {@link WeKfDto}
* @return {@link WeResultDto}
*/
@Request(url = "/kf/account/update", type = "POST")
public WeResultDto updateAccount(@JSONBody WeKfDto dto);
/**
* 获取客服帐号列表
*
* @return {@link WeKfListDto}
*/
@Request(url = "/kf/account/list", type = "GET")
public WeKfListDto list();
/**
* 获取客服帐号链接
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfDto}
*/
@Request(url = "/kf/add_contact_way", type = "POST")
public WeKfDto addContactWay(@JSONBody WeKfDto dto);
/**
* 添加接待人员
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfUserListDto}
*/
@Request(url = "/kf/servicer/add", type = "POST")
public WeKfUserListDto addServicer(@JSONBody WeKfDto dto);
/**
* 删除接待人员
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfUserListDto}
*/
@Request(url = "/kf/servicer/del", type = "POST")
public WeKfUserListDto delServicer(@JSONBody WeKfDto dto);
/**
* 获取接待人员列表
*
* @param openKfId 客服id
* @return {@link WeKfUserListDto}
*/
@Request(url = "/kf/servicer/list", type = "GET")
public WeKfUserListDto servicerList(@Query("open_kfid") String openKfId);
/**
* 获取会话状态
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfDto}
*/
@Request(url = "/kf/service_state/get", type = "POST")
public WeKfDto getServiceState(@JSONBody WeKfDto dto);
/**
* 变更会话状态
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfDto}
*/
@Request(url = "/kf/service_state/trans", type = "POST")
public WeKfDto transServiceState(@JSONBody WeKfDto dto);
/**
* 发送消息
*
* @param dto in {@link WeKfMsgDto}
* @return {@link WeKfMsgDto}
*/
@Request(url = "/kf/send_msg", type = "POST")
public WeKfMsgDto sendMsg(@JSONBody WeKfMsgDto dto);
/**
* 读取消息
*
* @param dto in {@link WeKfGetMsgDto}
* @return {@link WeKfGetMsgDto}
*/
@Request(url = "/kf/sync_msg", type = "POST")
public WeKfGetMsgDto syncMsg(@JSONBody WeKfGetMsgDto dto);
/**
* 客户基本信息获取
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfCustomerInfoDto}
*/
@Request(url = "/kf/customer/batchget", type = "POST")
public WeKfCustomerInfoDto getCustomerInfoBatch(@JSONBody WeKfDto dto);
}
package com.linkwechat.wecom.domain.dto.kf;
import com.linkwechat.wecom.domain.dto.WeResultDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @author danmo
* @description 客服客户信息
* @date 2021/10/9 15:49
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class WeKfCustomerInfoDto extends WeResultDto {
@ApiModelProperty("微信客户列表")
private List<WeCustomerServiceCustomerInfo> customerList;
@ApiModelProperty("无效的客户id")
private List<String> invalidExternalUserId;
@ApiModel
@Data
public static class WeCustomerServiceCustomerInfo {
@ApiModelProperty("外部联系人id")
private String externalUserId;
@ApiModelProperty("昵称")
private String nickName;
@ApiModelProperty("头像")
private String avatar;
@ApiModelProperty("性别")
private String gender;
@ApiModelProperty("unionid")
private String unionId;
}
}
package com.linkwechat.wecom.domain.dto.kf;
import com.linkwechat.wecom.domain.dto.WeResultDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @author danmo
* @description 客服企微实体
* @date 2021/10/9 14:36
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class WeKfDto extends WeResultDto{
@ApiModelProperty("客服帐号ID")
private String open_kfid;
@ApiModelProperty("客服名称")
private String name;
@ApiModelProperty("客服头像")
private String avatar;
@ApiModelProperty("客服头像临时素材id")
private String media_id;
@ApiModelProperty("客服链接")
private String url;
@ApiModelProperty("场景值")
private String scene;
@ApiModelProperty("接待人员userid列表")
private List<String> userid_list;
@ApiModelProperty("微信客户的external_userid")
private String external_userid;
@ApiModelProperty("当前的会话状态")
private Integer service_state;
@ApiModelProperty("接待人员的userid,仅当state=3时有效")
private String servicer_userid;
@ApiModelProperty("用于发送响应事件消息的code,将会话初次变更为service_state为2和3时,返回回复语code,service_state为4时,返回结束语code。")
private String msg_code;
@ApiModelProperty("external_userid列表 超过100个需分批调用")
private List<String> external_userid_list;
}
package com.linkwechat.wecom.domain.dto.kf;
import com.alibaba.fastjson.JSONObject;
import com.linkwechat.wecom.domain.dto.WeResultDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author danmo
* @description 客服消息
* @date 2021/10/9 15:32
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class WeKfGetMsgDto extends WeResultDto {
@ApiModelProperty("上一次调用时返回的next_cursor")
private String cursor;
@ApiModelProperty("回调事件返回的token字段,10分钟内有效")
private String token;
@ApiModelProperty("期望请求的数据量,默认值和最大值都为1000")
private String limit;
@ApiModelProperty("下次调用带上该值则从该key值往后拉,用于增量拉取")
private String nextCursor;
@ApiModelProperty("是否还有更多数据。0-否;1-是")
private String hasMore;
@ApiModelProperty("消息列表")
private List<JSONObject> msgList;
}
package com.linkwechat.wecom.domain.dto.kf;
import com.linkwechat.wecom.domain.dto.WeResultDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @author danmo
* @description 客服账号列表企微实体
* @date 2021/10/9 14:36
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class WeKfListDto extends WeResultDto{
@ApiModelProperty("帐号信息列表")
private List<WeKfDto> accountList;
}
package com.linkwechat.wecom.domain.dto.kf;
import com.alibaba.fastjson.JSONObject;
import com.linkwechat.wecom.domain.dto.WeResultDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import javax.validation.constraints.NotNull;
/**
* @author danmo
* @description 客服消息
* @date 2021/10/9 15:32
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class WeKfMsgDto extends WeResultDto {
@ApiModelProperty("指定接收消息的客户UserID")
@NotNull(message = "客户UserID不能为空")
private String touser;
@ApiModelProperty("指定发送消息的客服帐号ID")
@NotNull(message = "客服帐号ID不能为空")
private String open_kfid;
@ApiModelProperty(value = "指定接收消息的客户UserID",allowEmptyValue = true)
private String msgid;
@ApiModelProperty("指定接收消息的客户UserID")
@NotNull(message = "消息类型不能为空")
private String msgtype;
@ApiModelProperty("消息内容")
private JSONObject context;
}
package com.linkwechat.wecom.domain.dto.kf;
import com.linkwechat.wecom.domain.dto.WeResultDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @author danmo
* @description 客服接待人员
* @date 2021/10/9 15:19
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class WeKfUserDto extends WeResultDto {
@ApiModelProperty("接待人员的userid")
private String userId;
@ApiModelProperty("接待人员的接待状态。0:接待中,1:停止接待")
private Integer status;
}
package com.linkwechat.wecom.domain.dto.kf;
import com.linkwechat.wecom.domain.dto.WeResultDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @author danmo
* @description 客服接待人员
* @date 2021/10/9 15:19
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class WeKfUserListDto extends WeResultDto {
@ApiModelProperty("操作结果")
private List<WeKfUserDto> resultList;
@ApiModelProperty("客服帐号的接待人员列表")
private List<WeKfUserDto> servicerList;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册