差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
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>​