====== 客服 iOS AgentSDK API ======
----
==== 目录 ====
* [[#会话管理类|会话管理类]]
* [[#待接入管理类|待接入管理类]]
* [[#设置管理类|设置管理类]]
* [[#通知管理类|通知管理类]]
* [[#留言管理类|留言管理类]]
===== 会话管理类 =====
==== 当前会话列表 ====
//page 页码;limit:每页会话数(一般要包括所有会话)
[[HDClient sharedClient].chatManager asyncLoadConversationsWithPage:<#(NSInteger)#> limit:<#(NSInteger)#> completion:^(NSArray *conversations, HDError *error)
{
//conversations 会话【HDConversation *】
}];
==== 常用语 ====
//加载常用语
[[HDClient sharedClient].chatManager getQuickReplyCompletion:^(id responseObject, HDError *error) {
if (error == nil) {
}
}];
//增加常用语,parentId 父节点id,text 常用语内容,leaf 是否是叶子节点(0、1标识)
[[HDClient sharedClient].chatManager addQuickReplyWithParentId:<#(NSString *)#> text:<#(NSString *)#> leaf:<#(NSInteger )#> completion:^(id responseObject, HDError *error) {
}];
//更新常用语,qrid,常用语id
[[HDClient sharedClient].chatManager updateQuickReplyWithParentId:<#(NSString *)#> text:<#(NSString *)#> leaf:_<#(NSInteger )#> qrId:<#(NSString *)#> completion:^(id responseObject, HDError *error) {
}];
//删除常用语
[[HDClient sharedClient].chatManager deleteQuickReplyWithId:<#(NSString *)#> completion:^(id responseObject, HDError *error) {
}];
==== 消息管理类 ====
//下边用到的_conversation即是HDConversationManager
HDConversationManager *_conversation = [[HDConversationManager alloc] initWithSessionId:<#(NSString *)#> chatGroupId:<#(NSInteger)#>];
==== 获取聊天消息 ====
[_conversation loadMessageCompletion:^(NSArray *messages, HDError *error) {
//获取消息回调
}];
==== 设置消息已读 ===
[_conversation markMessagesAsReadWithVisitorId:<#(NSString *)#> parameters:nil completion:^(id responseObject, HDError *error) {
if (error == nil) {
//标记已读成功
}
}];
=== 获取聊天历史消息 ===
[_conversation loadHistoryCompletion:^(NSArray *messages, HDError *error) {
}];
==== 发送文本消息 ====
//构造消息体
HDTextMessageBody *body = [[HDTextMessageBody alloc] initWithText:<#(NSString *)#>];
HDMessage *message = [[HDMessage alloc] initWithSessionId:<#(NSString)#> to:<#(NSString *)#> messageBody:body];
//发送消息
[_conversation sendMessage:message progress:nil completion:^(HDMessage *aMessage, HDError *aError) {
//发送结束,回调
}];
=== 发送图片消息 ===
//构造消息体
HDImageMessageBody *body = [[HDImageMessageBody alloc] initWithData:<#(NSData *)#> displayName:<#(NSString *)#>];
HDMessage *message = [[HDMessage alloc] initWithSessionId:<#(NSString *)#> to:<#(NSString *)#> messageBody:body];
[_conversation sendMessage:msg progress:nil completion:^(HDMessage *aMessage, HDError *aError) {
//发送结束,回调
}];
==== 发送语音消息 ====
//构造消息体
HDVoiceMessageBody *body = [[HDVoiceMessageBody alloc] initWithLocalPath:<#(NSString *)#> displayName:<#(NSString *)#>];
HDMessage *message = [[HDMessage alloc] initWithSessionId:<#(NSString *)#> to:<#(NSString *)#> messageBody:body];
//发送消息
[_conversation sendMessage:msg progress:nil completion:^(HDMessage *aMessage, HDError *aError) {
//发送结束,回调
}];
==== 结束会话 ====
[_conversation endConversationWithVisitorId:<#(NSString *)#> parameters:nil completion:^(id responseObject, HDError *error) {
if (!error) {
//成功关闭
} else {
//关闭失败
}
}];
==== 获取当前用户 ====
[HDClient sharedClient].currentAgentUser
==== 获取会话标签树 ====
[_conversation asyncGetTreeCompletion:^(id responseObject, HDError *error) {
if (!error) {
} else {
}
}];
==== 获取会话标签 ====
[_conversation asyncGetSessionSummaryResultsCompletion:^(id responseObject, HDError *error) {
if (!error) {
} else {
}
}];
==== 获取会话标签备注 ====
[_conversation asyncGetSessionCommentCompletion:^(id responseObject, HDError *error) {
if (!error) {
}
}];
==== 修改会话标签备注 ====
[_conversation asyncSaveSessionCommentParameters:<#(NSDictionary *)#> completion:^(id responseObject, HDError *error) {
if (error) {
}
}];
==== 修改会话标签 ====
[_conversation asyncSaveSessionSummaryResultsParameters:<#(NSDictionary *)#> completion:^(id responseObject, HDError *error) {
if (!error) {
}
}];
==== 获取技能组 ====
[_conversation getSkillGroupCompletion:^(id responseObject, HDError *error) {
}]
==== 客服同事列表 ====
[[HDClient sharedClient].chatManager asyncGetAllCustomersCompletion:^(NSArray *customers, HDError *error) {
}];
==== 给同事发消息 ====
[[HDClient sharedClient].chatManager customerSendMessage:<#(HDMessage *)#> completion:^(id responseObject, HDError *error) {
}];
==== 获取同事未读消息 ====
/**
@param remoteUserId 客服userId
@param parameters 参数
@param completion 完成回调
*/
[[HDClient sharedClient].chatManager asyncGetAgentUnreadMessagesWithRemoteAgentUserId:<#(NSString *)#> parameters:<#(NSDictionary *)#> completion:^(NSArray *messages, HDError *error) {
}];
==== 查询同事聊天记录 ====
/**
查询客服同事聊天记录【包括已读、未读】
@param remoteUserId 对方userId
@param parameters 参数
@param completion 完成回调
*/
[[HDClient sharedClient].chatManager aysncGetAgentMessagesWithRemoteUserId:<#(NSString *)#> parameters:<#(NSDictionary *)#>
completion:^(NSArray *messages, HDError *error) {
}];
==== 标记同事消息为已读 ====
/**
@param userId 对方userId
@param createDateTime 最后一条消息的时间戳
@param completion 完成回调
*/
[[HDClient sharedClient].chatManager asyncMarkMessagesAsReadWithRemoteAgentUserId:<#(NSString *)#> lastCreateDateTime:<#(NSTimeInterval)#> completion:^(id responseObject, HDError *error) {
}];
==== 获取历史会话 ====
/**=
@param page 页码
@param limit 每页的数量
@param parameters 参数
@param completion 完成回调
*/
[[HDClient sharedClient].chatManager asyncFetchHistoryConversationWithPage:<#(NSInteger)#> limit:<#(NSInteger)#> parameters:<#(NSDictionary *)#> completion:^(NSArray *conversations, HDError *error, NSInteger totalNum) {
}];
==== 回呼 ====
/**
@param vistorId 回呼用户的userId
@param completion 完成回调
*/
[[HDClient sharedClient].chatManager asyncFetchCreateSessionWithVistorId:<#(NSString *)#> completion:^(HDHistoryConversation *history, HDError *error) {
}];
==== 获取历史会话聊天记录 ====
/**
@param sessionServicesId 会话id
@param page 页码
@param completion 完成回调
*/
[[HDClient sharedClient].chatManager asyncFetchHistoryMessagesWithSessionServicesId:<#(NSString *)#> page:<#(NSInteger)#> completion:^(id responseObject, HDError *error) {
}];
==== 获取关联列表 ====
[[HDClient sharedClient].chatManager getChannelsCompletion:^(id responseObject, HDError *error) {
}];
===== 待接入管理类 =====
==== 获取待接入队列 ====
/**
@param pageIndex 第几页
@param pageSize 每页数据个数
@param parameters 预留参数,暂传nil
@param completion 请求完成的回调【error == nil,为请求成功】
*/
[[HDClient sharedClient].waitManager asyncGetWaitQueuesWithPage:<#(NSInteger)#> pageSize:<#(NSInteger)#> parameters:<#(NSDictionary *)#> completion:^(NSArray *waitUsers, HDError *error) {
}];
==== 接入会话 ====
/**
@param userId 对方userId
@param completion 完成回调
*/
[[HDClient sharedClient].waitManager asyncFetchUserWaitQueuesWithUserId:<#(NSInteger)#> completion:^(id responseObject, HDError *error) {
}];
==== 筛选会话 ====
//参数为固定key的字典
[HDClient sharedClient].waitManager asyncScreenWaitQueuesWithParameters:<#(NSDictionary *)#> completion:^(NSArray *users, HDError *error) {}];
===== 设置管理类 =====
/**
修改最大接入数
@param userNum 人数NSString 类型
@param completion 完成回调
*/
[[HDClient sharedClient].setManager updateServiceUsersWithNum:<#(NSString*) #> completion:^(id responseObject, HDError *error) {
}];
==== 更新在线状态 ====
//HDOnlineStatus 是状态的枚举
[[HDClient sharedClient].setManager updateOnLineStatusWithStatus:<#(HDOnlineStatus)#> completion:^(id responseObject, HDError *error) {
}];
==== 开关问候语 ====
//YES 为开启,NO 为关闭
[[HDClient sharedClient].setManager enableGreeting:<#(BOOL)#> completion:^(id responseObject, HDError *error) {
}];
==== 获取客服问候语 ====
[HDClient sharedClient].currentAgentUser.greetingContent
==== 更新客服问候语 ====
//问候语内容
[[HDClient sharedClient].setManager updateGreetingContent:<#(NSString *)#> completion:^(id responseObject, HDError *error) {
}];
==== 修改坐席信息 ====
//参数为key - value
[[HDClient sharedClient].setManager modifyInfoWithKey:<#(NSString *)#> value:<#(NSString *)#> completion:^(id responseObject, HDError *error) {
}];
==== 上传坐席头像 ====
//UIImage 类型
[[HDClient sharedClient].setManager asyncUploadImageWithFile:<#(NSData*)#> completion:^(NSString *url, HDError *error) {
}];
==== 获取访客标签 ====
//参数:访客userId
[[HDClient sharedClient].setManager getVisitorUserTagsWithUserId:<#(NSString *)#> completion:^(id responseObject, HDError *error) {
}];
==== 修改访客标签 ====
//tag实例
[[HDClient sharedClient].setManager updateVisitorUserTagWithUserTag:<#(HDUserTag *)#> completion:^(id responseObject, HDError *error) {
}];
===== 通知管理类 =====
==== 获取通知消息 ====
/**
@param pageIndex 第几页
@param pageSize 每页数据个数
@param status 已读还是未读
@param type 消息类型
@param parameters 预留参数暂传nil
@param completion 完成请求的回调
*/
[[HDClient sharedClient].notiManager asyncGetNoticeWithPageIndex:<#(NSInteger)#> pageSize:<#(NSInteger)#> status:<#(HDNoticeStatus)#> type:<#(HDNoticeType)#> prameters:<#(NSDictionary *)#> completion:^(NSArray *notices, HDError *error) {
}];
==== 未读通知消息标记为已读 ====
/**
@param ids 通知的id数组
@param parameters 预留参数暂传nil
@param completion 完成请求的回调
*/
[[HDClient sharedClient].notiManager asyncPUTMarkNoticeASReadWithUnreadNoticeIds:<#(NSArray *)#> parameters:<#(NSDictionary *)#> completion:^(id responseObjcet, HDError *error) {
}];
==== 创建会话 ====
/**
@param visitorId visitorId
@param completion 完成回调
*/
[[HDClient sharedClient].notiManager asyncMessageCenterCreateSessionWithVisitorId:<#(NSString *)#> Completion:^(id responseObject, HDError *error) {
}];
==== 获取访客资料 ====
/**
@param visitorId
@param completion 完成回调
*/
[[HDClient sharedClient].notiManager asyncFetchVisitorItemsWithVisitorId:<#(NSString *)#> completion:^(HDVisitorInfo *visitorInfo, HDError *error) {
}];
==== 更新访客资料 ====
/**
@param customerId 访客id,获取访客资料的时候拿到
@param parameters 参数
@param completion 完成回调
*/
[[HDClient sharedClient].notiManager updateVisitorItemWithCustomerId:<#(NSString *)#> visitorId:<#(NSString *)#> parameters:<#(NSDictionary *)#> completion:^(id responseObject, HDError *error) {
}];
===== 留言管理类 =====
==== 获取留言 ====
/**
获取不同状态的留言列表【例如:未处理,处理中,已处理也可自定义】
@param statusId 状态对应的Id【传nil为全部留言】
@param pageIndex 第几页
@param pageSize 每页数据个数
@param parameters 预留参数,暂传nil
@param completion 完成回调
*/
[[HDClient sharedClient].leaveMsgManager asyncGetLeaveMessagesWithStatusId:<#(NSString *)#> pageIndex:<#(NSInteger)#> pageSize:<#(NSInteger)#> parameters:<#(NSDictionary *)#> completion:^(NSArray *leaveMessages, HDError *error) {
}];
==== 获取受让人列表 ====
[[HDClient sharedClient].leaveMsgManager asyncGetAssigneesCompletion:^(NSArray *assignees, HDError *error) {
}];
==== 获取留言状态 ====
//获取留言状态【eg:未处理,处理中,已处理也可自定义】
[[HDClient sharedClient].leaveMsgManager asyncGetLeaveMsgStatusWithParameters:<#(NSDictionary *)#> completion:^(NSArray *statuses, HDError *error) {
}];
==== 获取留言详情 ====
/**
@param leaveMsgId 留言id
@param completion 完成回调
*/[[HDClient sharedClient].leaveMsgManager asyncGetLeaveMsgDetailWithLeaveMsgId:<#(NSNumber *)#> completion:^(id responseObject, HDError *error) {
}];
==== 获取留言评论 ====
/**
@param leaveMsgId 留言id
@param completion 完成回调
*/
[[HDClient sharedClient].leaveMsgManager asyncGetLeaveMsgCommentWithLeaveMsgId:<#(NSString *)#> completion:^(NSArray *comments, HDError *error) {
}];
==== 留言发布评论 ====
/**
@param leaveMsgId 留言id
@param text 文字内容
@param attachments 附件
*/
[[HDClient sharedClient].leaveMsgManager asyncPostLeaveMsgCommentWithLeaveMsgId:<#(NSString *)#> text:<#(NSString *)#> attachments:<#(NSArray *)#> completion:^(id responseObject, HDError *error) {
}];
==== 分配留言 ====
/**
@param user 受让人
@param leaveMsgId leaveMsgId
@param completion 完成回调
*/
[[HDClient sharedClient].leaveMsgManager asyncAssignLeaveMsgWithUser:<#(UserModel *)#> leaveMsgId:<#(NSString *)#> completion:^(id responseObject, HDError *error) {
}];
==== 取消分配留言 ====
/**
@param user 当前分配人id
@param leaveMsgId ID
@param completion 完成回调
*/
[[HDClient sharedClient].leaveMsgManager asyncUnAssignLeaveMsgWithUserId:<#(NSString *)#> leaveMsgId:<#(NSString *)#> completion:^(id responseObject, HDError *error) {
}];
==== 设置留言状态 ====
/**
@param leaveMsgId ID
@param statusId 状态id
@param completion 完成回调
*/
[[HDClient sharedClient].leaveMsgManager asyncSetLeaveMsgStatusWithLeaveMsgId:<#(NSString *)#> statusId:<#(NSString *)#> completion:^(id responseObject, HDError *error) {
}];
==== 上传附件 ====
/**
@param imageData 图片数据
@param completion 完成回调(附件实例)
*/
[[HDClient sharedClient].leaveMsgManager asyncUploadImageWithFile:data completion:^(HDAttachment *attachment, HDError *error) {
}];