差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
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> |