差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
cs:300visitoraccess:iossdkapi [2020/05/08 09:58] dujiepeng [获取工作状态] |
cs:300visitoraccess:iossdkapi [2023/11/21 07:26] (当前版本) 侯力 [关闭会话] |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== CEC iOS SDK API ====== | ====== CEC iOS SDK API ====== | ||
| - | |||
| * [[#消息|消息]] | * [[#消息|消息]] | ||
| * [[#会话|会话]] | * [[#会话|会话]] | ||
| 行 6: | 行 5: | ||
| * [[#满意度评价|满意度评价]] | * [[#满意度评价|满意度评价]] | ||
| * [[#实时音视频|实时音视频]] | * [[#实时音视频|实时音视频]] | ||
| + | * [[#集成声网音视频|集成声网音视频]] | ||
| + | * [[#欢迎语|欢迎语]] | ||
| * [[#高级功能|高级功能]] | * [[#高级功能|高级功能]] | ||
| + | * [[#初始化访客语种|初始化访客语种]] | ||
| 行 24: | 行 26: | ||
| </code> | </code> | ||
| + | ==== 发送文件消息 ==== | ||
| + | |||
| + | <code> | ||
| + | //filePath为本地文件路径,toUser为IM服务号 | ||
| + | HDMessage *message = [HDMessage createFileSendMessageWithLocalPath:filePath displayName:@"123" to:toUser]; | ||
| + | [[HDClient sharedClient].chatManager sendMessage:message progress:^(int progress){ | ||
| + | //发送消息进度 | ||
| + | }completion:^(HDMessage *aMessage, HDError *aError){ | ||
| + | //发送消息完成,aError为空则为发送成功 | ||
| + | }]; | ||
| + | </code> | ||
| ==== 发送语音消息 ==== | ==== 发送语音消息 ==== | ||
| 行 114: | 行 127: | ||
| visitor.email = @"abv@126.com"; | visitor.email = @"abv@126.com"; | ||
| visitor.desc = @"环信客服云"; | visitor.desc = @"环信客服云"; | ||
| + | //自定义字段传参集成用户信息 userDefineColumn 是 json 字符串 如下格式: | ||
| + | visitor.userDefineColumn = @"{"WQQ":"帅哥","QAZ":"LLLLLLLTTTTTTTT"}" | ||
| HDMessage *message = [....];//构造相关消息 | HDMessage *message = [....];//构造相关消息 | ||
| [message addContent:visitor]; //传访客的属性 | [message addContent:visitor]; //传访客的属性 | ||
| 行 134: | 行 149: | ||
| vst.imageUrl = imageUrl; //图片url | vst.imageUrl = imageUrl; //图片url | ||
| vst.itemUrl = itemUrl; //点击图片的链接 | vst.itemUrl = itemUrl; //点击图片的链接 | ||
| + | NSDictionary *dic2 = @{@"ios":@"我是ios表单预填写的值"}; | ||
| + | [vst.customDic addEntriesFromDictionary:dic2]; | ||
| [message addContent:vst]; | [message addContent:vst]; | ||
| + | | ||
| + | //预填工单功能 一定要添加如下代码 不然没有这个功能 | ||
| + | NSDictionary *dic1 = @{@"createTicketEnable":@"true"}; | ||
| + | [message addMsgTypeDictionary:dic1]; | ||
| + | | ||
| [[HDClient sharedClient].chatManager sendMessage:message progress:^(int progress) { | [[HDClient sharedClient].chatManager sendMessage:message progress:^(int progress) { | ||
| //发送消息进度 | //发送消息进度 | ||
| 行 154: | 行 176: | ||
| ord.imageUrl = imageUrl; | ord.imageUrl = imageUrl; | ||
| ord.itemUrl = itemUrl; | ord.itemUrl = itemUrl; | ||
| + | //预填工单功能 填写如下方法 一定要在 addContent 方法前添加自定义字段 要不添加不上去 | ||
| + | NSDictionary *dic2 = @{@"ios":@"我是ios表单预填写的值"}; | ||
| + | [ord.customDic addEntriesFromDictionary:dic2]; | ||
| + | //添加订单信息 | ||
| [message addContent:ord]; | [message addContent:ord]; | ||
| + | | ||
| + | //预填工单功能 一定要添加如下代码 不然没有这个功能 | ||
| + | NSDictionary *dic1 = @{@"createTicketEnable":@"true"}; | ||
| + | [message addMsgTypeDictionary:dic1]; | ||
| + | | ||
| [[HDClient sharedClient].chatManager sendMessage:message progress:^(int progress) { | [[HDClient sharedClient].chatManager sendMessage:message progress:^(int progress) { | ||
| //发送消息进度 | //发送消息进度 | ||
| 行 278: | 行 309: | ||
| [conversation markAllMessagesAsRead:nil]; | [conversation markAllMessagesAsRead:nil]; | ||
| </code> | </code> | ||
| + | ==== 更新会话为已读 ==== | ||
| + | <code> | ||
| + | [[HDClient sharedClient].chatManager markAllMessagesAsRead:@'需要标记已读的会话id' Completion:^(id responseObject, HDError *error) { | ||
| + | | ||
| + | }]; | ||
| + | </code> | ||
| + | ==== 关闭CEC会话 ==== | ||
| + | <code> | ||
| + | [[HDClient sharedClient].chatManager cec_closeServiceSessionId:@"会话id" withImServiceNum:@"im服务号" Completion:^(id responseObject, HDError *error) { | ||
| + | | ||
| + | }]; | ||
| + | </code> | ||
| + | ==== 获取访客id ==== | ||
| + | <code> | ||
| + | [[HDClient sharedClient].chatManager fetchCurrentVisitorId:@"im服务号" completion:^(HDError *aError, NSString *visitorId) { | ||
| + | | ||
| + | NSLog(@"=====visitorId=%@",visitorId); | ||
| + | }]; | ||
| + | </code> | ||
| ===== 满意度评价 ===== | ===== 满意度评价 ===== | ||
| 行 302: | 行 352: | ||
| [conversation sendSatisfactionEvaluationCompletion:^(BOOL send, HDError *error) {}]; | [conversation sendSatisfactionEvaluationCompletion:^(BOOL send, HDError *error) {}]; | ||
| </code> | </code> | ||
| + | ==== 获取配置对应的接口 ==== | ||
| + | <code> | ||
| + | typedef NS_ENUM (NSInteger, HDOptionConfig) { | ||
| + | /**< 问题解决评价 开关 */ | ||
| + | HDOption_Satisfaction_ProblemSolvingEvaluationOn = 1, | ||
| + | /**< 请对我的服务做出评价 文案 */ | ||
| + | HDOption_Satisfaction_GreetingMsgEnquiryInvite, | ||
| + | /**< 问题解决评价引导语 */ | ||
| + | HDOption_Satisfaction_EvaluteSolveWord, | ||
| + | }; | ||
| + | /* | ||
| + | * 获取配置接口对应参数 | ||
| + | * option : HDOptionConfig 枚举类型 | ||
| + | * serviceSessionId 会话id | ||
| + | */ | ||
| + | [[HDClient sharedClient].chatManager getOptionsConfig: option WithServiceSessionId: Completion:^(id responseObject, HDError *error) { | ||
| + | |||
| + | NSLog(@"返回对应的值%@",responseObject); | ||
| + | }]; | ||
| + | |||
| + | </code> | ||
| + | ==== 获取满意度评价解决未解决 标签接口 ==== | ||
| + | <code> | ||
| + | // ServiceSessionId 是 当前会话ID | ||
| + | [[HDClient sharedClient].chatManager getResolutionParamServiceSessionId:@"当前会话id" Completion:^(id responseObject, HDError *error) { | ||
| + | |||
| + | }]; | ||
| + | </code> | ||
| ===== 留言 ===== | ===== 留言 ===== | ||
| 行 329: | 行 406: | ||
| <code> | <code> | ||
| /** | /** | ||
| - | @brief 给一个留言添加评论 | + | @brief 创建一个留言 |
| @discussion 失败返回NSError,成功返回responseObject | @discussion 失败返回NSError,成功返回responseObject | ||
| - | @param targetUser im服务号 | ||
| @param projectId 留言ProjectId 进入“管理员模式 → 留言”,可以看到这个Project ID | @param projectId 留言ProjectId 进入“管理员模式 → 留言”,可以看到这个Project ID | ||
| - | @param ticketId 留言ID | + | @param imCustomerService im服务号 |
| - | @param requestBody 请求体 | + | @param requestBody 留言参数 |
| - | @param completion 返回结果block | + | @param completion 返回结果 |
| */ | */ | ||
| - | - (void)createLeaveMsgCommentWithProjectId:(NSString*)projectId | + | - (void)createLeaveMsgWithProjectId:(NSString *)projectId |
| - | targetUser:(NSString *)imCustomerService | + | targetUser:(NSString *)imCustomerService |
| - | ticketId:(NSString *)ticketId | + | requestBody:(LeaveMsgRequestBody *)requestBody |
| - | requestBody:(LeaveMsgRequestBody*)requestBody | + | completion:(void(^)(id responseObject,NSError *error))completion; |
| - | completion:(void(^)(id responseObject,NSError *error))completion; | + | |
| </code> | </code> | ||
| 行 539: | 行 615: | ||
| completionHandler:nil]; | completionHandler:nil]; | ||
| }]; | }]; | ||
| + | </code> | ||
| + | |||
| + | ===== 集成声网音视频 ===== | ||
| + | |||
| + | ==== 监听呼入通话 ==== | ||
| + | |||
| + | <code> | ||
| + | //注册实时通话回调 | ||
| + | [[HDClient sharedClient].callManager addDelegate:<#(id<HDCallManagerDelegate>)#> delegateQueue:nil]; | ||
| + | //queue默认为main //移除实时通话回调 | ||
| + | [[HDClient sharedClient].callManager removeDelegate:<#(id<HDCallManagerDelegate>)#>]; | ||
| + | //收到一个视频通话请求,参数为加入房间 相关参数 | ||
| + | - (void)onCallReceivedParameter:(HDKeyCenter *)keyCenter; | ||
| + | //第三方坐席进来 获取对应的坐席信息 | ||
| + | - (void)onCallReceivedInvitation:(NSString *)thirdAgentNickName withUid:(NSString *)uid; | ||
| + | </code> | ||
| + | 更多集成可以参考访客demo中Call模块中的实现。[[cs:300visitoraccess:iosdemo|CEC iOS UI]] | ||
| + | |||
| + | ===== 欢迎语 ===== | ||
| + | |||
| + | ==== 获取机器人欢迎语 ==== | ||
| + | |||
| + | <code> | ||
| + | //使用<HDClient.sharedClient.chatManager>调用 | ||
| + | // 获取机器人欢迎语 翻译使用api aServerNumber:im服务号 visitorUserName:访客用户名 | ||
| + | - (void)getRobotWelcomeWithImServerNumber:(NSString *)aServerNumber withVisitorUserName:(NSString *)visitorUserName | ||
| + | completion:(void(^)(NSDictionary *info, HDError *error))aCompletion; | ||
| + | // 获取机器人欢迎语 aServerNumber:im服务号 | ||
| + | - (void)getRobotWelcomeWithImServerNumber:(NSString *)aServerNumber | ||
| + | completion:(void(^)(NSDictionary *info, HDError *error))aCompletion; | ||
| + | </code> | ||
| + | |||
| + | ==== 获取企业欢迎语 ==== | ||
| + | |||
| + | <code> | ||
| + | // 获取企业欢迎语 使用<HDClient.sharedClient.chatManager>调用 | ||
| + | - (void)getEnterpriseWelcomeWithCompletion:(void(^)(NSString *welcome, HDError *error))aCompletion; | ||
| + | // 获取企业欢迎语 设置语种 visitorUserName 访客登录用户名 | ||
| + | - (void)getEnterpriseWelcomeWithVisitorUserName:(NSString *)visitorUserName WithCompletion:(void(^)(NSString *welcome, HDError *error))aCompletion; | ||
| + | </code> | ||
| + | |||
| + | ==== 获取app关联中个性化会话设置的企业欢迎语 ==== | ||
| + | |||
| + | <code> | ||
| + | // 获取企业欢迎语 使用<HDClient.sharedClient.chatManager>调用 | ||
| + | // 获取 APP关联设置:个性化会话设置增加企业欢迎语 visitorUserName 用户名 aServerNumber : im服务号 也就是to | ||
| + | - (void)getAppRelevanceEnterpriseWelcomeWithVisitorUserName:(NSString *)visitorUserName withImServerNumber:(NSString *)aServerNumber Completion:(void(^)(NSString *welcome, HDError *error))aCompletion; | ||
| + | </code> | ||
| + | |||
| + | ==== 获取技能组菜单 ==== | ||
| + | |||
| + | <code> | ||
| + | // 获取技能组菜单 设置语种 visitorUserName 访客登录用户名 使用<HDClient.sharedClient.chatManager>调用 | ||
| + | - (void)getSkillGroupMenuWithVisitorUserName:(NSString *)visitorUserName Completion:(void (^)(NSDictionary *, HDError *))aCompletion | ||
| + | </code> | ||
| + | ==== 获取app关联中个性化会话设置的欢迎语菜单指定技能组 ==== | ||
| + | |||
| + | <code> | ||
| + | // 使用<HDClient.sharedClient.chatManager>调用 | ||
| + | // 获取 APP关联设置:个性化会话设置增加获取技能组菜单界面skillgroup-menu visitorUserName 用户名 aServerNumber : im服务号 也就是to | ||
| + | - (void)getAppRelevanceSkillGroupMenuWithVisitorUserName:(NSString *)visitorUserName withImServerNumber:(NSString *)aServerNumber Completion:(void(^)(NSDictionary *info, HDError *error))aCompletion; | ||
| + | </code> | ||
| + | |||
| + | ==== 获取当前会话id ==== | ||
| + | <code> | ||
| + | /** | ||
| + | * 获取当前会话id | ||
| + | * @param aUsername IM服务号 | ||
| + | * @param aCompletionBlock 发送完成回调block,如果当前有会话,则返回,没有时,返回nil, 表示当前无有效会话 | ||
| + | */ | ||
| + | |||
| + | // 使用<HDClient.sharedClient.chatManager>调用 | ||
| + | - (void)fetchCurrentSessionId:(NSString *)aUsername | ||
| + | completion:(void(^)(NSString *sessionId, HDError *aError))aCompletionBlock; | ||
| + | // 当返回sessionId为空时,则代表此会话不存在,也就是未咨询或者咨询已结束,下次咨询可先发欢迎语 | ||
| + | // 当返回value不为空时,则返回的当前会话的会话ID,也就是说会话正在咨询中,不需要发送欢迎语 | ||
| + | |||
| </code> | </code> | ||
| 行 566: | 行 719: | ||
| </code> | </code> | ||
| + | ==== 获取坐席的输入状态 ==== | ||
| + | 1. 初始化时设置需要监听输入状态: | ||
| + | <code> | ||
| + | options.showAgentInputState = YES; | ||
| + | </code> | ||
| + | |||
| + | 2. 需要监听<HDChatManagerDelegate>的agentInputStateChange:方法 | ||
| + | |||
| + | <code> | ||
| + | /** | ||
| + | 坐席输入状态变化 | ||
| + | |||
| + | @param content 内容 | ||
| + | */ | ||
| + | - (void)agentInputStateChange:(NSString *)content; | ||
| + | |||
| + | [[HDClient sharedClient].chatManager addDelegate:self delegateQueue:nil]; | ||
| + | </code> | ||
| + | |||
| + | 3. 在聊天页面调用以下方法后,可以收到agentInputStateChange: 回调 | ||
| + | <code> | ||
| + | [[HDClient sharedClient].chatManager bindChatWithConversationId:self.conversation.conversationId]; | ||
| + | </code> | ||
| + | ===== 初始化访客语种 ===== | ||
| + | <code> | ||
| + | // 获取企业欢迎语 设置语种 visitorUserName 访客登录用户名 language需要翻译的语言代码 使用<HDClient.sharedClient>调用 | ||
| + | // 传递语言代码 可以参考 文档 http://docs.easemob.com/cs/100agentmode/10conversation#智能翻译 | ||
| + | - (void)hd_SetVisitorLanguage:(NSString *)language withVisitorUserName:(NSString *)visitorUserName completion:(void (^)(id responseObject,HDError *aError))aCompletionBlock | ||
| + | </code> | ||