====== 客服 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) { }];