====== 客服AndroidAgentSDK API ======
----
===== 目录 =====
* [[#会话消息|会话消息]]
* [[#会话标签管理类|会话标签管理类]]
* [[#常用语管理类|常用语管理类]]
* [[#坐席用户数据管理类|坐席用户数据管理类]]
* [[#访客数据管理类|访客数据管理类]]
* [[#留言消息管理类|留言消息管理类]]
* [[#留言消息管理类|留言消息管理类]]
* [[#消息中心管理类|消息中心管理类]]
* [[#待接入会话管理类|待接入会话管理类]]
* [[#历史会话管理类|历史会话管理类]]
===== 会话消息 =====
==== 当前会话列表 ====
//获取进行中会话列表的消息
HDClient.getInstance().ongoingSessionManager().getSessionsFromServer(new HDDataCallBack>);
==== 消息管理类 ====
SessionManager sessionManager = new SessionManager(chatGroupId, sServiceId, toUser, new HDChatListener() {
@Override
public void onEnquiryChanged() {
}
@Override
public void onNewMessage() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.refreshSelectLast();
}
});
}
@Override
public void onClosed() {
runOnUiThread(new Runnable() {
@Override
public void run() {
ChatActivity.this.finish();
HDLog.d(TAG, "end Session:serviceId:" + sServiceId);
}
});
}
@Override
public void onClosedByAdmin() {
runOnUiThread(new Runnable() {
@Override
public void run() {
ChatActivity.this.finish();
HDLog.d(TAG, "endbyadmin Session:serviceId:" + sServiceId);
}
});
}
});
**注意**:在Activity的onDestory中需要调用sessionManager.clear();
==== 获取聊天消息 ====
sessionManager.asyncLoadRemoteMsg(new HDDataCallBack>);
==== 设置消息已读 ====
sessionManager.setMessageReadedMarkTag(new HDDataCallBack);
==== 加载常用语 ====
sessionManager.asyncGetPhraseValues(new HDDataCallBack>);
==== 获取聊天历史消息 ====
sessionManager.asyncLoadMoreMsg(new HDDataCallBack>);
==== 发送文本消息 ====
HDMessage messageEntity = HDMessage.createSendTextMessage(txtContent);
sessionManager.sendMessage(messageEntity);
mAdapter.refreshSelectLast();
==== 发送文件消息 ====
//创建一个文件消息 filePath文件本地路径
HDMessage messageEntity = HDMessage.createSendFileMessage(filePath);
sessionManager.sendMessage(messageEntity);
mAdapter.refreshSelectLast();
==== 发送语音消息 ====
// filePath为语音的本地路径 seconds为录制的时长
HDMessage messageEntity = HDMessage.createSendVoiceMessage(filePath, seconds);
sessionManager.sendMessage(messageEntity);
mAdapter.refreshSelectLast();
==== 发送图片消息 ====
// filePath 图片本地路径
HDMessage messageEntity = HDMessage.createSendImageMessage(filePath);
sessionManager.sendMessage(messageEntity);
mAdapter.refreshSelectLast();
==== 发送视频消息 ====
// videoPath 为视频的本地路径, thumbPath 为生成的微缩图本地路径, videoLenth为视频的长度
HDMessage message = HDMessage.createVideoSendMessage(videoPath, thumbPath, videoLength);
sessionManager.sendMessage(message);
mAdapter.refreshSelectLast();
==== 重发消息 ====
// resendPos 重发的消息position
sessionManager.resendMessage(resendPos);
mAdapter.refreshSelectLast();
==== 结束会话 ====
结束正在聊天的会话
sessionManager.asyncStopSession(new HDDataCallBack);
==== 监听消息状态 ====
通过 message 设置消息的成功失败监听
messageEntity.setMessageCallback(new HDDataCallBack);
==== 下载附件消息 ====
HDClient.getInstance().chatManager().downloadAttachment(message);
==== 获取未读消息数量 ====
CurrentSessionManager.getInstance().getTotalUnReadCount();
==== 获取当前用户 ====
HDUser currentUser = HDClient.getInstance().getCurrentUser();
==== 获取会话标签 ====
//获取session信息,查询会话是否已经设置,Tag标签
sessionManager.getCategorySummarys(new HDDataCallBack>;
==== 获取会话标签备注 ====
//获取Note信息
sessionManager.getCommentsFromServer(new HDDataCallBack;
==== 由标签ID获取会话标签 ====
//由标签ID获取会话标签, 一般标签需要传递页面可能会用到
List currentCategorySummarys = sessionManager.setCategorySummaryValue(ids);
===== 会话标签管理类 =====
//会话标签管理类,集中所有会话标签的相关API,其中sessionId为会话ID。
manager = new CategorySummaryManager(sessionId);
//异步获取当前会话的会话备注信息
manager.asyncGetComment(new HDDataCallBack);
//通过会话标签ID集合,获取对应的会话标签集合。
List list = manager.getCategorySummarysFromString(ids);
//异步从服务器获取当前会话的会话标签集合
manager.asyncGetSessionSummary(new HDDataCallBack>);
//获取当前会话的会话标签ID集合,一般用toString后传递。
manager.getCategorySummaryIds().toString();
//HDCategorySummary 是通过Serializable序列化,如果用intent是可以传递的。
HDCategorySummary entty = ...
manager.addCategorySummary(entty);//向当前会话中添加一个会话标签,但这并不会保存到服务器,请查看下面的API解决。
//把本地缓存中的会话标签,保存到服务器
manager.asyncUpdateCategorySummarys(new HDDataCallBack;
//把本地缓存中的会话标签备注信息,保存到服务器。
manager.asyncUpdateComment(tempString, new HDDataCallBack);
//获取会话的标签备注信息,此方法为本地调用,只有调用过asyncGetComment后才能获取到。
manager.getComment();
//获取某个会话标签的所有子标签,用于会话标签筛选时使用。
manager.getChildCategorySummarys(entty.id);
//获取根标签列表
manager.getRootCategorySummarys();
//获取所有的标签,常用语模糊搜索, 可能会比较耗时,建议放到子线程中调用
manager.getAllCategorySummarys();
HDCategorySummary entity = ...
long parentId = entity.parentId;//获取父标签ID,从而拿到同级别的列表
manager.getChildCategorySummarys(parentId);
===== 常用语管理类 =====
//从网络获取常用语列表, 会返回一个list类型的数组,同时保存在数据库之中
HDClient.getInstance().phraseManager().getAllPhraseFromServer(new HDDataCallBack>);
//从数据库加载常用语列表
HDClient.getInstance().phraseManager().getAllPhrase();
//读取一个常用语组
HDClient.getInstance().phraseManager().getPhrasesByParentId(parentId);
//增加一个常用语 content是常用语的内容,parentId是常用语组的父节点id, leaf boolean类型是否是叶子节点
HDClient.getInstance().phraseManager().addShortCutMsgForServer(content, parentId, leaf, new HDDataCallBack);
//删除一条常用语 entty为要删除的常用语实体
HDClient.getInstance().phraseManager().deleteCommonPhrase(entty, new HDDataCallBack);
//更新一条常用语 entty为要删除的常用语实体
HDClient.getInstance().phraseManager().updateShortCutMsgForServer(mEntty, new HDDataCallBack);
===== 坐席用户数据管理类 =====
//获取坐席列表 坐席模式fromManager传false 管理员模式 fromManager传true(支持管理员模式的sdk以后会开放)
HDClient.getInstance().agentManager().getAgentList(fromManager, new HDDataCallBack>);
//获取技能组列表
HDClient.getInstance().agentManager().getSkillGroupsFromRemote(new HDDataCallBack>);
//此方法用户获取管理员模式设置的一些配置参数 option为获取的配置选项名,
HDClient.getInstance().agentManager().getOptionEntity(option);
//设置坐席的最大接待人数 maxCount为接待人数
HDClient.getInstance().agentManager().setMaxAccessCountByServer(maxCount, new HDDataCallBack);
//设置坐席的状态 status为枚举类型
HDClient.getInstance().agentManager().setStatusByServer(status, new HDDataCallBack);
//获取客服问候语是否开启
HDClient.getInstance().agentManager().getAgentGreetingEnable(new HDDataCallBack);
//设置客服问候语开启状态 eanble为boolean类型状态
HDClient.getInstance().agentManager().setAgentWelcomeMsgEnable(enable, new HDDataCallBack);
//获取客服问候语内容
HDClient.getInstance().agentManager().getAgentGreetingContent(new HDDataCallBack);
//更新客户问候语内容
HDClient.getInstance().agentManager().asyncUpdateAgentWelcontent(content, new HDDataCallBack);
//获取坐席详细信息 以AgentProfileEntity实例的形式返回
HDClient.getInstance().agentManager().getAgentInfo(new HDDataCallBack);
//更新坐席详细信息 以AgentProfileEntity实例形式
HDClient.getInstance().agentManager().saveUserProfile(entity, new HDDataCallBack);
//上传头像到服务器 cropOutputPath为头像的路径
HDClient.getInstance().agentManager().uploadAvatarToServer(cropOutputPath, new HDDataCallBack);
//获取访客账号的激活状态
HDClient.getInstance().agentManager().postAgentLinks(visitorId, new HDDataCallBack);
===== 访客数据管理类 =====
//创建会话 visitorId为访客Id
HDClient.getInstance().visitorManager().getCreateSessionService(visitorId, new HDDataCallBack);
//获取访客的详细信息 tenantId为租户ID, visitorId为访客Id
HDClient.getInstance().visitorManager().getCustomerDetailInfo(tenantId, visitorId, new HDDataCallBack);
//更新访客的详细信息 columnName为更新的列名, updateValue为更新的指
HDClient.getInstance().visitorManager().putCustomerDetailInfo(tenantId, customerId, columnName, updateValue, new HDDataCallBack);
//从环信服务器下载文件 localName为文件的本地路径, remoteUrl为文件的服务器路径
HDClient.getInstance().visitorManager().downloadFile(localName, remoteUrl, new HDDataCallBack);
//获取客户标签 以标签列表形式返回
HDClient.getInstance().visitorManager().getUserTag(visitorId, new HDDataCallBack>);
//设置客户标签 trueOrFalse boolean值表示标签的开关, visitorId为访客Id, userTag 修改的tag实体
HDClient.getInstance().visitorManager().setTag(trueOrFalse, visitorId, userTag);
HDClient.getInstance().visitorManager().setTag(trueOrFalse, visitorId, userTag, new HDDataCallBack);
//创建一个环信kefu的访客账号 imAccount是IM的账号ID,nickName是昵称, techChannel是关联 回调返回是创建的访客id
HDClient.getInstance().visitorManager().createVisitor(imAccount, nickname, techChannel, new HDDataCallBack);
//获取坐席的客户 pageNum为页码, customersCenterEntity是配置选项实体 结果以list的形式返回
HDClient.getInstance().visitorManager().getAgentCustomersInfo(pageNum, customersCenterEntity, new HDDataCallBack>);
//获取坐席的所有tag 以list形成callBack
HDClient.getInstance().visitorManager().getUserTags(new HDDataCallBack>);
===== 留言消息管理类 =====
//获取留言数 (处理中、已解决、未处理)
HDClient.getInstance().leaveMessageManager().getPendingTicketsCount(new HDDataCallBack);
HDClient.getInstance().leaveMessageManager().getSolvedTicketsCount(new HDDataCallBack);
HDClient.getInstance().leaveMessageManager().getOpenTicketsCount(new HDDataCallBack);
//获取未分配的留言数
HDClient.getInstance().leaveMessageManager().getUnassignedTicketCounts(new HDDataCallBack);
//获取留言列表 nextpage为加载的页码, configEntity为配置选项, agentUsers为坐席的列表
HDClient.getInstance().leaveMessageManager().getTicketsList(nextPage, configEntity, agentUsers, new HDDataCallBack);
//获取可被分配的坐席列表
HDClient.getInstance().leaveMessageManager().getOtherAgents(new HDDataCallBack>);
//分配留言
//分配留言给指定坐席 ticketEntity为留言实体 baseUser为坐席实体
HDClient.getInstance().leaveMessageManager().putTicketTask(baseUser, ticketEntity, new HDDataCallBack);
//删除某条留言的负责人 ticketEntity是留言实体,
HDClient.getInstance().leaveMessageManager().deleteTicketAssignee(ticketEntity, new HDDataCallBack);
//批量分配留言 baseUser是留言的负责人, getSelectedListIds()是要被分配的留言Id的list
HDClient.getInstance().leaveMessageManager().batAssignTicketAssignee(baseUser, getSelectedListIds(), new HDDataCallBack);
//批量删除留言的负责人 getSelectedListIds()是要被分配的留言Id的list
HDClient.getInstance().leaveMessageManager().batDeleteTicketAssignee(getSelectedListIds(), new HDDataCallBack);
//修改留言
//获取某天留言的评论 ticketEntity是留言实体 结果以评论实体的list形式回调
HDClient.getInstance().leaveMessageManager().getTicketComments(ticketEntity, new HDDataCallBack>);
//更改留言的状态 ticketEntity是修改的留言,status是修改后的留言状态
HDClient.getInstance().leaveMessageManager().putTicketStatus(ticketEntity, tempStatusList.get(position), new HDDataCallBack);
//给留言加评论 content为文字评论, fileList为已经上传的文件列表, ticketEntity是修改的留言实体
HDClient.getInstance().leaveMessageManager().sendComment(content, fileList, ticketEntity, new HDDataCallBack);
//评论上传文件 filePath为文件的本地路径
HDClient.getInstance().leaveMessageManager().sendTicketCommentFile(filePath, new HDDataCallBack);
===== 消息中心管理类 =====
消息管理类可以记录当前页面的通知总数和未读通知数,包含获取通知的接口和标记通知已读的接口
//初始化消息中心实例
noticeManager = new NoticeManager();
// 通知总数
noticeManager.getTotal_count();
//未读通知数
noticeManager.getUnread_count();
//设置每页的加载个数
noticeManager.setPageCount(max);
//由于有刷新功能,所以这里设计了2个加载数据的方法,loadTheFirstPageData加载第一页数据 loadMoreData加载后面页的数据
//typeSettings 是当前通知类型(包括3个typeAll,typeAgent,typeSystem)
noticeManager.loadTheFirstPageData(typeSettings, isUnreadSettings, new HDDataCallBack>);
noticeManager.loadMoreData(typeSettings, isUnreadSettings, new HDDataCallBack>);
//标记通知为已读 noticeEntity是选择的通知实体
noticeManager.markNoticeRead(noticeEntity, new HDDataCallBack);
//全部通知标记为已读 noticeEntities是未读的通知实体list
noticeManager.makeAllMarkRead(noticeEntities, new HDDataCallBack);
//获取未读的消息数,以列表形式返回,需要后期处理一下,请参考demo
noticeManager.getUnReadCount(new HDDataCallBack>);
===== 待接入会话管理类 =====
//初始化消息中心实例
waitAccessManager = new WaitAccessManager();
//获取技能组信息
waitAccessManager.loadSkillGroup(new HDDataCallBack>);
//设置每页的加载个数
waitAccessManager.setPageCount(max);
//获取等待的会话 isSearch是否是筛选, agentList为技能组信息 pogeNum为加载的页码
waitAccessManager.getUserWaitQueues(isSearch, agentList, pageNum, new HDDataCallBack>);
//结束等待的会话 bean是会话的实体
waitAccessManager.waitAbort(bean, new HDDataCallBack);
//转接等待的会话 userId是转接坐席的id(字符串类型,没有填“”), queueId是转接的技能组id(long类型没有填-1)
waitAccessManager.transferWaitAccess(bean, userId, queueId, new HDDataCallBack);
//接入等待的会话
waitAccessManager.accessWaitUser(bean, new HDDataCallBack);
//设置筛选的条件 参数为WaitAccessScreenEntity实体
waitAccessManager.setScreeningOption(screenEntity);
//获取等待的会话总数
waitAccessManager.getTotal_count();
===== 历史会话管理类 =====
//初始化历史会话实例
historySessionManager = new HistorySessionManager();
//设置每页的加载个数
historySessionManager.setPageCount(max);
//从服务器获取的历史会话
historySessionManager.getFirstPageSessionHistory(new HDDataCallBack>);
historySessionManager.loadMoreData(new HDDataCallBack>);
//获取已加载历史会话列表
historySessionManager.getList();
//设置筛选数据
historySessionManager.setCurrentTimeInfo(currentTimeInfo.getStartTime(), currentTimeInfo.getEndTime()); //时间
historySessionManager.setScreenOption(screenEntity); //传入筛选选项实体
//获取历史会话总数
historySessionManager.getTotal_entries();