客服AndroidAgentSDK API


目录

会话消息

当前会话列表

//获取进行中会话列表的消息
HDClient.getInstance().ongoingSessionManager().getSessionsFromServer(new HDDataCallBack<List<HDSession>>);

消息管理类

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<List<HDMessage>>);

设置消息已读

sessionManager.setMessageReadedMarkTag(new HDDataCallBack<String>);

加载常用语

sessionManager.asyncGetPhraseValues(new HDDataCallBack<List<String>>);

获取聊天历史消息

sessionManager.asyncLoadMoreMsg(new HDDataCallBack<List<HDMessage>>);

发送文本消息

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<String>);

监听消息状态

通过 message 设置消息的成功失败监听

messageEntity.setMessageCallback(new HDDataCallBack);

下载附件消息

HDClient.getInstance().chatManager().downloadAttachment(message);

获取未读消息数量

CurrentSessionManager.getInstance().getTotalUnReadCount();

获取当前用户

HDUser currentUser = HDClient.getInstance().getCurrentUser();

获取会话标签

//获取session信息,查询会话是否已经设置,Tag标签
sessionManager.getCategorySummarys(new HDDataCallBack<List<HDCategorySummary>>;

获取会话标签备注

//获取Note信息
sessionManager.getCommentsFromServer(new HDDataCallBack<String>;

由标签ID获取会话标签

//由标签ID获取会话标签, 一般标签需要传递页面可能会用到
List<HDCategorySummary> currentCategorySummarys = sessionManager.setCategorySummaryValue(ids);

会话标签管理类

//会话标签管理类,集中所有会话标签的相关API,其中sessionId为会话ID。
manager = new CategorySummaryManager(sessionId);
//异步获取当前会话的会话备注信息
manager.asyncGetComment(new HDDataCallBack<String>);
//通过会话标签ID集合,获取对应的会话标签集合。
List<HDCategorySummary> list = manager.getCategorySummarysFromString(ids);
//异步从服务器获取当前会话的会话标签集合
manager.asyncGetSessionSummary(new HDDataCallBack<List<HDCategorySummary>>);
//获取当前会话的会话标签ID集合,一般用toString后传递。
manager.getCategorySummaryIds().toString();
//HDCategorySummary 是通过Serializable序列化,如果用intent是可以传递的。
HDCategorySummary entty = ...
manager.addCategorySummary(entty);//向当前会话中添加一个会话标签,但这并不会保存到服务器,请查看下面的API解决。
//把本地缓存中的会话标签,保存到服务器
manager.asyncUpdateCategorySummarys(new HDDataCallBack<String>;
//把本地缓存中的会话标签备注信息,保存到服务器。
manager.asyncUpdateComment(tempString, new HDDataCallBack<String>);
//获取会话的标签备注信息,此方法为本地调用,只有调用过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<List<HDPhrase>>);
//从数据库加载常用语列表
HDClient.getInstance().phraseManager().getAllPhrase();
//读取一个常用语组
HDClient.getInstance().phraseManager().getPhrasesByParentId(parentId);
//增加一个常用语  content是常用语的内容,parentId是常用语组的父节点id, leaf boolean类型是否是叶子节点
HDClient.getInstance().phraseManager().addShortCutMsgForServer(content, parentId, leaf, new HDDataCallBack<String>);
//删除一条常用语 entty为要删除的常用语实体
HDClient.getInstance().phraseManager().deleteCommonPhrase(entty, new HDDataCallBack<String>);
//更新一条常用语 entty为要删除的常用语实体
HDClient.getInstance().phraseManager().updateShortCutMsgForServer(mEntty, new HDDataCallBack<String>);

坐席用户数据管理类

//获取坐席列表 坐席模式fromManager传false 管理员模式 fromManager传true(支持管理员模式的sdk以后会开放)
HDClient.getInstance().agentManager().getAgentList(fromManager, new HDDataCallBack<List<AgentUser>>);
//获取技能组列表
HDClient.getInstance().agentManager().getSkillGroupsFromRemote(new HDDataCallBack<List<AgentQueue>>);
//此方法用户获取管理员模式设置的一些配置参数 option为获取的配置选项名, 
HDClient.getInstance().agentManager().getOptionEntity(option);
//设置坐席的最大接待人数 maxCount为接待人数
HDClient.getInstance().agentManager().setMaxAccessCountByServer(maxCount, new HDDataCallBack<String>);
//设置坐席的状态 status为枚举类型
HDClient.getInstance().agentManager().setStatusByServer(status, new HDDataCallBack<String>);
//获取客服问候语是否开启
HDClient.getInstance().agentManager().getAgentGreetingEnable(new HDDataCallBack<Boolean>);
//设置客服问候语开启状态  eanble为boolean类型状态
HDClient.getInstance().agentManager().setAgentWelcomeMsgEnable(enable, new HDDataCallBack<String>);
//获取客服问候语内容
HDClient.getInstance().agentManager().getAgentGreetingContent(new HDDataCallBack<String>);
//更新客户问候语内容
HDClient.getInstance().agentManager().asyncUpdateAgentWelcontent(content, new HDDataCallBack<String>);
//获取坐席详细信息 以AgentProfileEntity实例的形式返回
HDClient.getInstance().agentManager().getAgentInfo(new HDDataCallBack<AgentProfileEntity>);  
//更新坐席详细信息 以AgentProfileEntity实例形式
HDClient.getInstance().agentManager().saveUserProfile(entity, new HDDataCallBack<String>);
//上传头像到服务器 cropOutputPath为头像的路径
HDClient.getInstance().agentManager().uploadAvatarToServer(cropOutputPath, new HDDataCallBack<String>);
//获取访客账号的激活状态
HDClient.getInstance().agentManager().postAgentLinks(visitorId, new HDDataCallBack<String>);

访客数据管理类

//创建会话 visitorId为访客Id
HDClient.getInstance().visitorManager().getCreateSessionService(visitorId, new HDDataCallBack<HDSession>);
//获取访客的详细信息 tenantId为租户ID, visitorId为访客Id
HDClient.getInstance().visitorManager().getCustomerDetailInfo(tenantId, visitorId, new HDDataCallBack<CustomerInfoResponse.EntityBean>);

//更新访客的详细信息 columnName为更新的列名, updateValue为更新的指
HDClient.getInstance().visitorManager().putCustomerDetailInfo(tenantId, customerId, columnName, updateValue, new HDDataCallBack<String>);
//从环信服务器下载文件 localName为文件的本地路径, remoteUrl为文件的服务器路径
HDClient.getInstance().visitorManager().downloadFile(localName, remoteUrl, new HDDataCallBack<String>);
//获取客户标签 以标签列表形式返回
HDClient.getInstance().visitorManager().getUserTag(visitorId, new HDDataCallBack<List<UserTag>>);
//设置客户标签 trueOrFalse boolean值表示标签的开关, visitorId为访客Id, userTag 修改的tag实体
HDClient.getInstance().visitorManager().setTag(trueOrFalse, visitorId, userTag);
HDClient.getInstance().visitorManager().setTag(trueOrFalse, visitorId, userTag, new HDDataCallBack<String>);
//创建一个环信kefu的访客账号 imAccount是IM的账号ID,nickName是昵称, techChannel是关联 回调返回是创建的访客id         
HDClient.getInstance().visitorManager().createVisitor(imAccount, nickname, techChannel, new HDDataCallBack<String>); 
//获取坐席的客户 pageNum为页码, customersCenterEntity是配置选项实体 结果以list的形式返回
HDClient.getInstance().visitorManager().getAgentCustomersInfo(pageNum, customersCenterEntity, new HDDataCallBack<List<CustomerEntity.EntitiesBean>>);
//获取坐席的所有tag 以list形成callBack
HDClient.getInstance().visitorManager().getUserTags(new HDDataCallBack<List<UsersTagEntity.ItemsBean>>);

留言消息管理类

//获取留言数 (处理中、已解决、未处理) 
HDClient.getInstance().leaveMessageManager().getPendingTicketsCount(new HDDataCallBack<String>);
HDClient.getInstance().leaveMessageManager().getSolvedTicketsCount(new HDDataCallBack<String>);
HDClient.getInstance().leaveMessageManager().getOpenTicketsCount(new HDDataCallBack<String>);
//获取未分配的留言数 
HDClient.getInstance().leaveMessageManager().getUnassignedTicketCounts(new HDDataCallBack<String>);

//获取留言列表 nextpage为加载的页码, configEntity为配置选项, agentUsers为坐席的列表
HDClient.getInstance().leaveMessageManager().getTicketsList(nextPage, configEntity, agentUsers, new HDDataCallBack<LeaveMessageResponse>);
//获取可被分配的坐席列表
HDClient.getInstance().leaveMessageManager().getOtherAgents(new HDDataCallBack<List<HDBaseUser>>);

//分配留言
//分配留言给指定坐席 ticketEntity为留言实体 baseUser为坐席实体
HDClient.getInstance().leaveMessageManager().putTicketTask(baseUser, ticketEntity, new HDDataCallBack<LeaveMessageResponse.EntitiesBean>);
//删除某条留言的负责人 ticketEntity是留言实体,
HDClient.getInstance().leaveMessageManager().deleteTicketAssignee(ticketEntity, new HDDataCallBack<LeaveMessageResponse.EntitiesBean>);
//批量分配留言 baseUser是留言的负责人, getSelectedListIds()是要被分配的留言Id的list
HDClient.getInstance().leaveMessageManager().batAssignTicketAssignee(baseUser, getSelectedListIds(), new HDDataCallBack<String>);
//批量删除留言的负责人 getSelectedListIds()是要被分配的留言Id的list
HDClient.getInstance().leaveMessageManager().batDeleteTicketAssignee(getSelectedListIds(), new HDDataCallBack<String>);

//修改留言
//获取某天留言的评论 ticketEntity是留言实体 结果以评论实体的list形式回调
HDClient.getInstance().leaveMessageManager().getTicketComments(ticketEntity, new HDDataCallBack<List<TicketCommentsResponse.EntitiesBean>>);
//更改留言的状态 ticketEntity是修改的留言,status是修改后的留言状态
HDClient.getInstance().leaveMessageManager().putTicketStatus(ticketEntity, tempStatusList.get(position), new HDDataCallBack<LeaveMessageResponse.EntitiesBean>);
//给留言加评论 content为文字评论, fileList为已经上传的文件列表, ticketEntity是修改的留言实体
HDClient.getInstance().leaveMessageManager().sendComment(content, fileList, ticketEntity, new HDDataCallBack<String>);
//评论上传文件 filePath为文件的本地路径
HDClient.getInstance().leaveMessageManager().sendTicketCommentFile(filePath, new HDDataCallBack<FileEntity>);

消息中心管理类

消息管理类可以记录当前页面的通知总数和未读通知数,包含获取通知的接口和标记通知已读的接口

//初始化消息中心实例
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<List<NoticesResponse.EntitiesBean>>);
noticeManager.loadMoreData(typeSettings, isUnreadSettings, new HDDataCallBack<List<NoticesResponse.EntitiesBean>>);
//标记通知为已读 noticeEntity是选择的通知实体
noticeManager.markNoticeRead(noticeEntity, new HDDataCallBack<String>);
//全部通知标记为已读 noticeEntities是未读的通知实体list
noticeManager.makeAllMarkRead(noticeEntities, new HDDataCallBack<String>);
//获取未读的消息数,以列表形式返回,需要后期处理一下,请参考demo
noticeManager.getUnReadCount(new HDDataCallBack<List<UnReadCountBean>>);

待接入会话管理类

//初始化消息中心实例
waitAccessManager = new WaitAccessManager();
//获取技能组信息
waitAccessManager.loadSkillGroup(new HDDataCallBack<List<SkillGroupResponse.EntitiesBean>>);
//设置每页的加载个数
waitAccessManager.setPageCount(max);
//获取等待的会话 isSearch是否是筛选, agentList为技能组信息 pogeNum为加载的页码
waitAccessManager.getUserWaitQueues(isSearch, agentList, pageNum, new HDDataCallBack<List<WaitQueueResponse.ItemsBean>>);
//结束等待的会话 bean是会话的实体
waitAccessManager.waitAbort(bean, new HDDataCallBack<String>);
//转接等待的会话 userId是转接坐席的id(字符串类型,没有填“”), queueId是转接的技能组id(long类型没有填-1)
waitAccessManager.transferWaitAccess(bean, userId, queueId, new HDDataCallBack<String>);
//接入等待的会话
waitAccessManager.accessWaitUser(bean, new HDDataCallBack<String>);
//设置筛选的条件 参数为WaitAccessScreenEntity实体
waitAccessManager.setScreeningOption(screenEntity);
//获取等待的会话总数
waitAccessManager.getTotal_count();

历史会话管理类

//初始化历史会话实例
historySessionManager = new HistorySessionManager();
//设置每页的加载个数
historySessionManager.setPageCount(max);
//从服务器获取的历史会话
historySessionManager.getFirstPageSessionHistory(new HDDataCallBack<List<HistorySessionEntity>>);
historySessionManager.loadMoreData(new HDDataCallBack<List<HistorySessionEntity>>);
//获取已加载历史会话列表
historySessionManager.getList();
//设置筛选数据
historySessionManager.setCurrentTimeInfo(currentTimeInfo.getStartTime(), currentTimeInfo.getEndTime());  //时间
historySessionManager.setScreenOption(screenEntity);    //传入筛选选项实体
//获取历史会话总数
historySessionManager.getTotal_entries();