<small id="aimcq"></small>
  • # iOS集成文檔

    相關限制及注意事項
    1、iOS SDK新版支持 iOS8 以上版本,同時支持 iPhone、iPad,支持豎屏和橫屏。

    2、目前發布xcode版本為XCode 11.3.1,建議使用新版開發

    3、iOS目前僅僅支持超鏈接標簽,其他html標簽和屬性均不識別

    4、iOS需要申請麥克風、相機、相冊、推送權限,否則部分功能無法使用

    圖片

    智齒客服SDK為企業提供了一整套完善的智能客服解決方案。智齒客服 SDK 既包含客服業務邏輯,也提供交互界面;企業只需簡單兩步,便可在App中集成智齒客服,讓App擁有7*24小時客服服務能力。

    管理員可以在后臺「設置-支持渠道-APP」添加APP,然后按照本接入文檔說明完成SDK對接。

    智齒客服SDK具有以下特性

    • 在線咨詢:咨詢機器人、咨詢人工客服(收發圖片、發送語音)、發送表情;
    • 指定技能組接待;
    • 排隊或客服不在線時引導用戶留言;
    • 機器人優先模式下隱藏轉人工按鈕,N次機器人未知問題問題是顯現;
    • 客服滿意度評價:用戶主動滿意度評價+用戶退出時詢問評價;
    • 傳入用戶資料:用戶對接lD+基礎資料+自定義字段;
    • 傳入商品來源頁:來源頁標題+來源頁URL;
    • 高度自定義UI;

    # 1 文檔介紹

    # 1.1 集成流程示意圖

    圖片

    # 1.2.文件說明

    SDK包含(SobotKit.framework和SobotKit.bundle)、SobotDemo、和Doc相關說明文檔。

    文件名 說明 備注
    SobotKit.framework 智齒SDK代碼庫
    SobotKit.bundle SDK資源庫,包含圖片文件、多語言文件、顏色
    ZCSobotApi.h 該文件提供接入功能(替換原有ZCSobot.h)
    ZCLibInitInfo.h 基礎功能參數類(用戶信息、接待模式、技能組等)
    ZCKitInfo.h 基礎UI參數類(顏色、控件顯/隱等)
    SobotKit.h 該文件引用關鍵SDK需要的文件
    ZCUIBaseController UI界面父類,所有其它頁面都繼承此控制器
    ZCChatController 聊天界面
    SobotLocalizable.strings 國際化語言文件,默認根據系統語言自動匹配
    ZCLibClient.h 全局配置類,主要包含非UI相關的操作配置

    # 2 集成方式

    # 2.1 手動集成

    普通版:

    下載鏈接:iOS_SDK_2.9.1

    電商版:

    下載鏈接:iOS_SDK_2.9.1_電商版

    解壓[iOS_SDK],添加必要文件SobotKit.framework和SobotKit.bundle到你的工程里。智齒iOS_SDK 的實現,依賴了一些系統的框架,在開發應用時需要在工程里加入這些框架。開發者首先點擊工程右邊的工程名,然后在工程名右邊依次選擇TARGETS -> BuiLd Phases -> Link Binary With Libraries,展開?LinkBinary With Libraries后點擊展開后下面的?+?來添加下面的依賴項:

    • AVFoundation.framework
    • AssetsLibrary.framework
    • AudioToolbox.framework
    • SystemConfiguration.framework
    • MobileCoreServices.framework
    • libz.1.2.5.tbd( dylib)
    • webkit.framwork

    # 2.2 CocoPods集成

    在podfile中加入:

    // 普通版:
    pod 'SobotKit'
    // 電商版:
    pod 'SobotPlatform'
    

    如果搜索不到最新版本,請運行以下命令更新CocoPods倉庫

    pod repo update --verbose
    如果無法更新到最新版本,可以刪除索引文件,重新嘗試
    rm ~/Library/Caches/CocoaPods/search_index.json
    
    

    清除pod緩存:

    刪除代碼中的pod 文件夾,
    pod cache clean SobotKit
    再重新 pod install
    

    # 3.1 域名設置

    域名說明:

    * 默認SaaS平臺域名為:https://api.sobot.com

    * 如果您是騰訊云服務,請設置為:https://ten.sobot.com

    * 如果您是本地化部署,請使用自己的部署的服務域名

    示例代碼:

    【注意:2.8.5之前版本設置域名一定要在所有接口請求之前設置,即在初始化之前就必須設置完】

    // 2.8.5版本開始設置方式
    // 初始化是設置域名,如果不設置,默認SaaS域名
    [ZCSobotApi initSobotSDK:@"your appkey" host:@"" result:^(id  _Nonnull object) {
        
    }];
    
    
    
    //2.8.4及以前版本使用如下方式設置
    //if([ZCLibClient getZCLibClient].libInitInfo == nil){
    //    [ZCLibClient getZCLibClient].libInitInfo = [ZCLibInitInfo new];
    //}
    //[ZCLibClient getZCLibClient].libInitInfo.api_host = @"域名";
    

    # 3.2 獲取appkey

    登錄 智齒科技管理平臺 獲取,如圖

    圖片

    # 3.3 初始化

    # 3.3.1 普通版:

    初始化參數和調用方式:初始化信息和UI自定義分為2個模型,使用ZCLibInitInfo設置功能相關屬性,ZCKitInfo設置相關UI屬性,一起傳遞給初始化方法,詳情見Demo調用代碼;

    主要調用代碼如下:

    【注意:啟動智齒SDK之前,必須調用初始化接口initSobotSDK,否則將無法啟動SDK】

    接口:

    
    // 2.8.5版本設置方式
    // 初始化是設置域名,如果不設置,默認SaaS域名
    [ZCSobotApi initSobotSDK:@"your appkey" host:@"" result:(void (^)(id object))resultBlock;
    
    /**
     初始化智齒客服 2.7.2開始使用,默認使用SaaS域名
     @param appkey 智齒app_key(如果是電商版本,請填寫自己公司的app_key)
     @param resultBlock 初始化結果回調
     */
    -(void)initSobotSDK:(NSString *) app_key result:(void (^)(id object))resultBlock;
    
    
    /**
     *  初始化智齒客服 (2.7.1之前使用),沒有初始化結果
     **/
    -(void)initSobotSDK:(NSString *) app_key;
    

    參數:

    參數名 類型 描述
    app_key NSString app_key為必傳,在支持后臺->設置->APP,中查看
    host NSString 默認為阿里云域名,如果是其它域名需要自己指定
    resultBlock NSString 初始化狀態回調

    示例代碼:

    #import <SobotKit/SobotKit.h>
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   
          // Override point for customization after application launch.
        NSLog(@"%@",[ZCSobot getVersion]);
        // 錯誤日志收集(可選)
        // [ZCLibClient setZCLibUncaughtExceptionHandler];
        // 可選參數設置
        if([ZCLibClient getZCLibClient].libInitInfo == nil){
            [ZCLibClient getZCLibClient].libInitInfo = [ZCLibInitInfo new];
        }
        
        // 初始化,必須執行,并且必須在進入SDK之前調用
        [[ZCLibClient getZCLibClient] initSobotSDK:@"your app_key" result:^(id object) {
            NSLog(@"初始化完成%@",object);
        }];
        return YES;
    }
    

    # 3.3.2 電商版

    初始化參數和調用方式:初始化信息和UI自定義分為2個模型,使用ZCLibInitInfo設置功能相關屬性,ZCKitInfo設置相關UI屬性,一起傳遞給初始化方法,詳情見Demo調用代碼;

    主要調用代碼如下:

    【注意:啟動智齒SDK之前,必須調用初始化接口initSobotSDK,否則將無法啟動SDK,多次執行不會重復調用接口】

    接口:

    示例代碼:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   
          // Override point for customization after application launch.
        NSLog(@"%@",[ZCSobot getVersion]);
        // 錯誤日志收集(可選)
        // [ZCLibClient setZCLibUncaughtExceptionHandler];
        // 可選參數設置
        if([ZCLibClient getZCLibClient].libInitInfo == nil){
            [ZCLibClient getZCLibClient].libInitInfo = [ZCLibInitInfo new];
        }    
        [ZCLibClient getZCLibClient].libInitInfo.platform_key = @"私鑰"
        //customer_code 商戶對接id (僅電商版適用,如果沒有app_key則必須提供)
        //[ZCLibClient getZCLibClient].libInitInfo.customer_code = @"商戶id"
        // 添加  平臺標識 (電商版必填)
        [ZCLibClient getZCLibClient].platformUnionCode = @"您注冊的平臺ID";
        
        // 初始化 
        //如果需要,請設置域名,一定要在初始化之前設置,否則初始化接口會失敗
        [ZCSobotApi initSobotSDK:@"your app_key" host:@"" result:^(id object) {
        }];
        return YES;
    }
    

    # 3.3.3 權限設置

    需要加入的權限

    <key>NSCameraUsageDescription</key>
      <string>發送圖片需要訪問相機</string>
    <key>NSLocalizedDescription</key>
      <string>使用推送服務</string>
    <key>NSMicrophoneUsageDescription</key>
      <string>發送語音需要訪問麥克風</string>
    <key>NSPhotoLibraryUsageDescription</key>
      <string>發送圖片需要訪問相冊</string>
    

    # 3.4 啟動智齒頁面

    # 3.4.1 啟動客服頁面

    普通版本和電商版本啟動方式一樣

    接口

    
    /// 啟動聊天頁面
    /// @param info 自定義UI屬性
    /// @param byController  啟動的頁面
    /// @param delegate   點擊留言攔截操作,如果不為空切實現了代理方法,留言將不再跳轉
    /// @param pageClick 頁面當前狀態
    /// @param messagelinkBlock 鏈接點擊事件,也可使用setMessageLinkClick統一處理
    + (void)openZCChat:(ZCKitInfo *) info
                with:(UIViewController *) byController
              target:(id<ZCChatControllerDelegate>) delegate
           pageBlock:(void (^)(id object,ZCPageBlockType type))pageClick
    messageLinkClick:(BOOL (^)(NSString *link)) messagelinkBlock;
        
     
    // messageLinkClick 也可以單獨使用方法設置,messagelinkBlock不為空的時候后面會覆蓋之前設置
    +(void)setMessageLinkClick:(BOOL (^)(NSString * _Nonnull))messagelinkBlock
        
        
    

    參數

    參數名 類型 描述
    info ZCKitInfo 初始化參數自定義設置
    byController UIViewController 執行跳轉的vc
    delegate ZCChatControllerDelegate 聊天頁面的代理,可以實現留言跳轉到自定義頁面
    pageClick void (^)(id object,ZCPageBlockType type) 點擊返回時的回調
    messagelinkBlock BOOL (^)(NSString *link) 點擊消息連接回調,返回YES代表自己處理,返回NO代表不處理,可以設置為nil,使用setMessageLinkClick統一管理

    示例代碼:

    //設置必傳參數,ZCLibInitInfo中的參數,都可以重新設置
    ZCLibInitInfo *initInfo = [ZCLibClient getZCLibClient].libInitInfo;
    // 設置用戶id,標識用戶的唯一依據,(一定不要寫如123456、0、000000等固定值,同一個id的聊天記錄會一樣),如果不設置,默認會根據手機證書生成一個唯一標
    initInfo.partnerid = @"";
    // 重新賦值
    [ZCLibClient getZCLibClient].libInitInfo = initInfo;
    
    //配置UI
    ZCKitInfo *uiInfo=[ZCKitInfo new];
    // 如設置導航條顏色
    uiInfo.topViewBgColor = [UIColor redColor];
    //[注意:初始化方法從2.7.0開始messageLinkClick帶有Bool返回值,true自己處理,false表示不處理]
    // target  如果傳入的參數不為nil 需要實現 -(void)openLeaveMsgClick:(NSString*)tipMsg;代理方法 留言跳轉到用戶自定義的留言頁
    [ZCSobotApi openZCChat:uiInfo with:self target:nil pageBlock:^(id object, ZCPageBlockType type) {
                    // 點擊返回
                    if(type==ZCPageBlockGoBack){
    //                    NSLog(@"點擊了關閉按鈕");
                    }
                    
                    // 頁面UI初始化完成,可以獲取UIView,自定義UI
                    if(type==ZCPageBlockLoadFinish){
    //                    NSLog(@"頁面加載完成");
                    }
        } messageLinkClick:^(NSString *link) { 
            NSLog(@"%@",link);
    //        當收到link = sobot://sendlocation 調用智齒接口發送位置信息
    //        當收到link = sobot://openlocation?latitude=xx&longitude=xxx&address=xxx 可根據自己情況處理相關業務
            if( [link hasPrefix:@"sobot://sendlocation"]){
                //發送坐標點
                NSString *fullPath = GetDocumentsFilePath(fname);
                [imageData writeToFile:fullPath atomically:YES];
                // 發送位置信息
                [ZCSobot sendLocation:@{
                                        @"lat":@"40.001693",
                                        @"lng":@"116.353276",
                                        @"localLabel":@"北京市海淀區學清路38號金碼大廈A座23層金碼大酒店",
                                        @"localName":@"云景四季餐廳",
                                        @"file":fullPath}];
                return YES;
            }else if([link hasPrefix:@"sobot://openlocation"]){
                // 解析經度、緯度、地址:latitude=xx&longitude=xxx&address=xxx
                // 跳轉到地圖的位置
                NSLog(link);
                // 測試打開地圖 高德網頁版            
                NSString * urlString = @"";
                urlString = [[NSString stringWithFormat:@"http://uri.amap.com/marker?position=%f,%f&name=%@&coordinate=gaode&src=%@&callnative=0",@116.353276,@40.001693,@"北京市海淀區學清路38號金碼大廈A座23層金碼大酒店",@"智齒SDK"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
                [[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
               return YES;
            }
            return NO;
     }];
    
    
    

    # 3.4.2 啟動商家列表(電商版)

    【注:啟動商家列表(僅電商版本支持)】

    接口

    
    // 2.8.5版本使用
    + (void)openZCChatListView:(ZCKitInfo *)info with:(UIViewController *)byController onItemClick:(void (^)(ZCUIChatListController *object,ZCPlatformInfo *info))itemClickBlock;
    
    
    // 2.8.4以前版本使用
    +(void)startZCChatListView:(ZCKitInfo *)info with:(UIViewController *)byController onItemClick:(void (^)(ZCUIChatListController *object,ZCPlatformInfo *info))itemClickBlock;
    

    參數

    參數名 類型 描述
    info ZCKitInfo 設置UI 相關自定義參數
    byController UIViewController 執行跳轉的vc
    delegate ZCChatControllerDelegate 聊天頁面的代理,可以實現留言跳轉到自定義頁面
    pageClick void (^)(id object,ZCPageBlockType type) 點擊返回時的回調
    itemClickBlock void (^)(ZCUIChatListController *object,ZCPlatformInfo *info) 自定義跳轉,可以為null(注意:如果不為空內部不在做跳轉處理)

    示例代碼:

    
    // 新方法
    [ZCSobotApi openZCChatListView:info with:byController onItemClick:itemClickBlock];
        
    
    
    // 直接啟動商家列表頁面,2.8.4以前方式,建議使用新方法   
    [ZCSobot startZCChatListView:uiInfo with:self onItemClick:nil];
    
    // 啟動商家列表,但是點擊具體某一個商家可能需要重新配置參數,自己處理跳轉情況,2.8.4以前方式,建議使用新方法
    [ZCSobotApi openZCChatListView:uiInfo with:self onItemClick:^(ZCUIChatListController *object, ZCPlatformInfo *info) {
       // 商家某一條點擊事件觸發,自行啟動智齒聊天頁面,可以修改必傳參數,ZCLibInitInfo中的參數,都可以重新設置
       [ZCSobotApi openZCChat:uiInfo with:object target:nil pageBlock:^(id object, ZCPageBlockType type) {
    
            } messageLinkClick:^BOOL(NSString *link) {
    
                return NO;
    
            }];
    }];
    

    # 3.4.3 啟動客戶服務中心

    
    ZCKitInfo *kitInfo = [ZCKitInfo new];
         
    // 打開幫助中心頁面
    + (void)openZCServiceCenter:(ZCKitInfo *) info
                             with:(UIViewController *) byController
                      onItemClick:(void (^)(ZCUIBaseController *object))itemClickBlock;
                      
    // 2.8.4以前版本方法
    [ZCSobot openZCServiceCentreVC:kitInfo with:self onItemClick:^(ZCUIBaseController *object, ZCOpenType type) {
            
        }];
    

    效果如圖: 圖片

    # 3.5 結束會話

    
         
    /// 關閉通道,清理內存,退出智齒客戶 移除推送
    /// @param isClosePush YES 關閉push;NO 離線用戶,但是可以收到push推送
    [ZCSobotApi outCurrentUserZCLibInfo:NO];
    
    

    # 4.1 機器人客服

    # 4.1.1 對接指定機器人

    在后臺獲取機器人編號:

    圖片

    在 SDK 代碼中配置:

    ZCLibInitInfo *initInfo = [ZCLibClient getZCLibClient].libInitInfo;
    libInitInfo.robotid =  @"機器人ID";
    
    // 不設置指定無效,注意如果指定了別名,需要把robotid設置為空,否則在別名不正確的時候,會使用上次的默認值
    libInitInfo.robot_alias =  @"機器人別名";
    
    

    注意:如果不設置,取默認

    # 4.1.2 自定義接入模式

    根據自身業務的需要,可進行以下初始化參數配置,控制接入模式:

    ZCKitInfo *uiInfo=[ZCKitInfo new];
    // 是否開啟語音功能 默認開啟
      kitInfo.isOpenRecord = @"YES";
    // 是否開啟機器人語音,(付費,否則語音無法識別)
      kitInfo.isOpenRobotVoice = @"YES";
    // 是否顯示轉人工按鈕
      kitInfo.isShowTansfer = @"YES";
    // 機器人未知回復次數
      kitInfo.unWordsCount = @"1";
    // 是否開啟智能轉人工 (如輸入“轉人工”,直接轉接人工),
    需要隱藏轉人工按鈕,請參見isShowTansfer和unWordsCount屬性
      kitInfo.isOpenActiveUser = @"YES";
    // 智能轉人工關鍵字,關鍵字作為key{@"轉人工",@"1",@"R":@"1"}
      kitInfo.activeKeywords = @{@"轉人工":@"",@"R":@"",@"r":@""};
    //自定義接待模式 
    注意:接待模式本地設置后本地優先,
    PC端設置接待模式不再起效,建議使用PC端的設置
    PC端的設置
    0:跟隨系統設置(默認) 
    1:只有機器人,
    2:僅人工 
    3:智能客服-機器人優先 
    4:智能客服-人工客
    libInitInfo.service_mode = 4;
    

    # 4.1.3 自定義轉人工事件

    自定義轉人工事件方法:

    -(void)turnServiceWithGroupId:(NSString *)groupId  Obj:(id)obj Msg:(NSString*)msg KitInfo:(ZCKitInfo*)uiInfo ZCTurnType:(NSInteger)turnType Keyword:(NSString*)keyword KeywordId:(NSString*)keywordId
    

    參數說明:

    groupId 傳入技能組id

    obj?? 轉人工參數

    msg?? 轉人工信息

    uiInfo?? 配置商品信息和自動發送參數

    turnType? 轉人工事件類型(按鈕觸發,關鍵字觸發等)

    keyword 關鍵字

    keywordId 關鍵字id

    【注意:如果實現該方法,SDK中轉人工事件將交由外部控制處理,您可以跳轉到自己設計的技能組頁面,或者切換商品信息等,SDK中不會再執行轉人工操作,需要自己調用轉人工加接口turnServiceWithGroupId:實現具體的轉人工操作】

    自定義轉人工回調事件:

    攔截SDK 轉人工事件 用于跳轉到自己的app頁面動態處理轉人工 配置技能組id 商品信息等參數

    @property (nonatomic,strong)  TurnServiceBlock    turnServiceBlock;
    

    示例代碼:

    [ZCLibClient getZCLibClient].turnServiceBlock = ^(id obj,NSString *msg,NSInteger turnType, NSString *keyword ,NSString *keywordId) {
                // 自定義商品信息
                //ZCProductInfo *productInfo = [ZCProductInfo new];
                //productInfo.thumbUrl = @"商品圖片URL";
                //productInfo.title = @"商品標題";
                //productInfo.desc = @"摘要";
                //productInfo.label = @"標簽";
                //productInfo.link = @"http://www.gene-tech.cn";
                //uiInfo.productInfo = productInfo;
                //uiInfo.isSendInfoCard = YES;// 轉人工工成功后是否自動發送該商品卡片信息
            [[ZCLibClient getZCLibClient] turnServiceWithGroupId:@"技能組id" Obj:obj Msg:msg KitInfo:uiInfo ZCTurnType:turnType Keyword:keyword KeywordId:keywordId];
        };
    

    # 4.1.4 設置轉人工溢出

    sdk中可以設置轉人工指定技能組溢出

    示例代碼:

    /**
     *  轉人工 指定技能組 溢出
     *
     參數說明
    
        actionType 執行動作類型:
            to_group 指定技能組;
            to_service 指定客服。
        deciId 指定技能組或客服id
        optionId 溢出標記
            1:溢出;指定客服時
            2:不溢出;指定客服時
            3:溢出;指定技能組時
            4:不溢出;指定技能組時
        spillId 溢出條件
            1:客服不在線;指定客服時
            2:客服忙碌;指定客服時
            3:智能判斷;指定客服時
            4:技能組無客服在線;指定客服組時
            5:技能組所有客服忙碌;指定客服組時
            6:技能組不上班;指定客服組時
            7:智能判斷;指定客服組時
     
     [{"actionType":"to_group","optionId":"3","deciId":"162bb6bb038d4a9ea018241a30694064","spillId":"7"},{"actionType":"to_group","optionId":"4","deciId":"a457f4dfe92842f8a11d1616c1c58dc1"}]
      actionType:執行動作類型:
      to_group:轉接指定技能組
      optionId:是否溢出  指定技能組時:3:溢出,4:不溢出。
      deciId:指定的技能組。
      spillId:溢出條件  指定客服組時:4:技能組無客服在線,5:技能組所有客服忙碌,6:技能組不上班,7:智能判斷
      數組中最多設置4組,依次溢出
     */
     
     ZCLibInitInfo *initInfo = [ZCLibClient getZCLibClient].libInitInfo;
        initInfo.transferaction = @[@{@"actionType":@"to_group",@"optionId":@"3",@"deciId":@"a890849f552b4b69b4a027db4e9a1880",@"spillId":@"4"},@{@"actionType":@"to_group",@"optionId":@"3",@"deciId":@"5600aa6786f34629a7484819b8132c3a",@"spillId":@"4"}];
    

    # 4.1.5 隱藏“+”號菜單欄中的按鈕

    在 ZCKitInfo 中傳入相關字段
    eg:
    ZCKitInfo *kitInfo=[ZCKitInfo new]; 
    //  聊天頁面底部加號中功能:隱藏評價,默認NO(不隱藏)
    kitInfo.hideMenuSatisfaction = YES;
    // 聊天頁面底部加號中功能:隱藏留言,默認NO(不隱藏)
    kitInfo.hideMenuLeave = YES;
    
    

    # 4.2 人工客服

    # 4.2.1 對接指定技能組

    在后臺獲取技能組編號:

    圖片

    在 SDK 代碼中配置技能組ID:

    ZCLibInitInfo *initInfo = [ZCLibClient getZCLibClient].libInitInfo;
    initInfo.groupid =  @"技能組ID";
    

    注意:此字段可選,如果傳入技能組ID那么SDK內部轉人工之后不在彈技能組的選擇框,直接跳轉到傳入ID所對應的技能組中

    # 4.2.2 對接指定客服

    在后臺獲取指定客服ID:

    圖片

    圖片

    在 SDK 代碼中設置:

    ZCLibInitInfo *initInfo = [ZCLibClient getZCLibClient].libInitInfo;
    libInitInfo.choose_adminid =  @"客服ID";
    libInitInfo.tran_flag =  @"0";
    

    注意: 1 choose_adminid :指定對接的客服,如果不設置,取默認

    2 tran_flag :設置指定客服之后是否必須轉入指定客服

    0 :可轉入其他客服,

    1: 必須轉入指定客服,

    注意:如果設置為1 ,當指定的客服不在線,不能再轉接到其他客服

    # 4.2.3 設置用戶自定義資料和自定義字段

    開發者可以直接傳入這些用戶信息,供客服查看。

    在工作臺自行配置所需要顯示的字段,配置方法如下圖:

    圖片

    // 設置用戶自定義字段
    - (void)customUserInformation:(ZCLibInitInfo*)libInitInfo{
      libInitInfo.customer_fields = @{@"customField22":@"我是自定義的分校",
                                  @"userSex":@"保密",
                                  @"weixin":@"微信號",
                                  @"weibo":@"微博賬號",
                                  @"birthday":@"2017-06-08"};
    }
    

    # 4.2.4 設置轉接成功后自動發消息

    // 自動發送信息
    ZCLibInitInfo *initInfo = [ZCLibClient getZCLibClient].libInitInfo;
    // 0 不發 1 給機器人發送 2 給人工發送  3 機器人和人工都發送
    initInfo.good_msg_type = 1; 
    //如果是非文本,傳本地路徑
    initInfo.content = @"123";
    // 內容類型, 0, //文本 1, //圖片 12, // 文件 // 視頻
    initInfo.auto_send_msgtype = 0;
    
    
    /// 發送消息給人工
    /// @param textMsg  消息內如,如果是視頻、圖片、音頻、文件時,請傳本地圖片路徑
    /// @param msgType  0, //文本   1, //圖片  12, // 文件   23, // 視頻
    /// @param ResultBlock 發送結果 code == 0表示已發送
    + (void)sendMessageToUser:(NSString *)textMsg type:(NSInteger ) msgType resultBlock:(nonnull void (^)(NSString *, int code))ResultBlock;
    
    
    

    # 4.2.5 設置指定客戶排隊優先接入

    sdk可以設置當前用戶排隊優先,當此用戶進入排隊狀態時,將會被優先接待。

    // 同PC端 設置-在線客服分配-排隊優先設置-指定客戶優先   開啟傳1 默認不設置
    @property(nonatomic,assign) int queue_first;
    

    # 4.2.6 設置服務總結自定義字段

    圖片

     initInfo.summary_params = @{@"customField15615315349481":@"字段value1",@"customField15615315349482":@"字段value2"};
    

    # 4.2.7 設置多輪會話接口參數

    在使用多輪會話功能時,每一個接口我們都會傳入 uid 和 mulitParams 兩個固定的自定義參數,uid 是用戶的唯一標識,mulitParams是自定義字段json字符串、如果用戶對接了這兩個字段,我們會將這兩個字段回傳給第三方接口、如果沒有我們會傳入空字段。

    initInfo.multi_params = @{@"customField15619769556831":@"顯示xxyyyzzz1032"};
    

    # 4.2.8 商品卡片

    商品的咨詢信息并支持直接發送消息卡片僅人工模式下支持,在ZCKitInfo.h中配置如下信息,啟動頁面時傳入即可:

    
    
    /**
     *   商品卡片信息是否自動發送(轉人工成功時,自動發送商品卡片信息)
     *   默認不發送
     **/
    // @property (nonatomic,assign) BOOL isSendInfoCard;
    
    // 商品的自定義類 ZCProductInfo  如果選擇添加商品信息,請添加以下信息,其中標題"title"和頁面地址url"link"是必填字段,如果沒有添加頁面中是不會顯示的。
    ZCProductInfo *productInfo = [ZCProductInfo new];
    //thumbUrl 縮略圖地址
    productInfo.thumbUrl = @"縮略圖的Url";
    //  title 標題 (必填)
    productInfo.title = @"標題";
    //  desc 摘要
    productInfo.desc = @"摘要";
    //  label 標簽
    productInfo.label = @"標簽";
    //  頁面地址url(必填) 
    productInfo.link = @"發送商品鏈接";
    kitInfo.productInfo = productInfo;
    
    
    
    //手動調用直接發送商品卡片
    ZCProductInfo *productInfo = [ZCProductInfo new];
    productInfo.thumbUrl = @"縮略圖地址";
    productInfo.title = @"標題";
    productInfo.desc = @"摘要";
    productInfo.label = @"標簽";
    productInfo.link = @"頁面鏈接";
    [ZCSobotApi sendProductInfo:productInfo resultBlock:nil];
    

    效果圖: 圖片

    # 4.2.9 訂單卡片

    sdk中可以發送自定義訂單信息,僅人工模式下支持,如有此需求,可以使用如下方法進行設置:

    配置按鈕:

    ZCKitInfo *kitInfo=[ZCKitInfo new];
    NSMutableArray *arr = [[NSMutableArray alloc] init];
    ZCLibCusMenu *menu1 = [[ZCLibCusMenu alloc] init];
    menu1.title = [NSString stringWithFormat:@"訂單"];
    menu1.url = [NSString stringWithFormat:@"sobot://sendOrderMsg"];;
    menu1.imgName = @"zcicon_sendpictures";
    [arr addObject:menu1];
    kitInfo.cusMoreArray = arr;
    

    模擬自定義“+”點擊發送事件:

    
        [ZCSobotApi setMessageLinkClick:^BOOL(NSString *linkUrl) {
            if ([linkUrl hasPrefix:@"sobot://sendOrderMsg"]){
                    ZCOrderGoodsModel *model = [ZCOrderGoodsModel new];
                    model.orderStatus = 1;
                    model.createTime = [NSString stringWithFormat:@"%.0f",[[NSDate date] timeIntervalSince1970]*1000];
                    model.goodsCount = @"3";
                    model.orderUrl  = @"http://www.gene-tech.cn";
                    model.orderCode = @"1000234242342345";
                    model.goods =@[@{@"name":@"商品名稱",@"pictureUrl":@"http://pic25.nipic.com/20121112/9252150_150552938000_2.jpg"},@{@"name":@"商品名稱",@"pictureUrl":@"http://pic31.nipic.com/20130801/11604791_100539834000_2.jpg"}];
                    
                    // 單位是分,顯示時會除以100,比如48.90
                    model.totalFee = @"4890";
                    [ZCSobotApi sendOrderGoodsInfo:model resultBlock:nil];
                    
                    return NO;
                }
            
            return YES;
        }];
    

    ZCOrderGoodsModel 類說明:

    /**
    發送訂單消息字段:
     訂單狀態: orderStatus
     訂單編號: orderCode
     訂單創建時間: createTime
     商品圖片鏈接: goodsPicturesUrls
     訂單鏈接: orderUrl  ,
     商品描述: goodsDesc
     商品件數: goodsCount
     總金額: totalFee,單位為分,顯示時會默認格式化為元,例如,傳入4890,顯示效果為48.90元
    */
    /*
    待付款: 1,
    待發貨: 2,
    運輸中: 3,
    派送中: 4,
    已完成: 5,
    待評價: 6,
    已取消: 7,
    其它: 不在編碼中的
     */
    @property (nonatomic,assign) int orderStatus;
    

    效果圖: 圖片

    # 4.2.10 查看商戶客服是否正在和用戶聊天 (僅電商版可用)

    /**
     *
     *   獲取對應商戶客服是否正在和用戶聊天(僅電商版使用)
     *   appkey:商戶id   uid: ZCPlatformInfo 類中的uid 
     **/
    +(BOOL)getPlatformIsArtificialWithAppkey:(NSString *)appkey Uid:(NSString*)uid;
    
    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
     ZCPlatformInfo *info = [_listArray objectAtIndex:indexPath.row];
    [ZCSobotApi getPlatformIsArtificialWithAppkey:info.appkey Uid:info.uid];
    }
    

    # 4.2.11 設置vip等級和用戶標簽

    /**
     *
     *  指定客戶是否為vip,0:普通 1:vip
     *  同PC端 設置-在線客服分配-排隊優先設置-VIP客戶排隊優先   開啟傳1 默認不設置
     *  開啟后 指定客戶發起咨詢時,如果出現排隊,系統將優先接入。
     **/
    @property (nonatomic,copy) NSString *isVip;
    
    
    /**
     *
     *  指定客戶的vip等級,傳入等級
     *  同PC端 設置-自定義字段-VIP等級,拿到等級對應的ID或者名稱
     **/
    @property (nonatomic,copy) NSString *vip_level;
    
    
    /**
     *用戶標簽,多個字段用逗號分隔;
    用戶標簽可在智齒管理端(系統設置>自定義字段>客戶字段)中編輯,拿到用戶標簽對應的ID或者名稱
     **/
    @property (nonatomic,copy) NSString *user_label;
    
    在 ZCLibInitInfo 中傳入相關字段
    eg:
    ZCLibInitInfo *libInitInfo = [ZCLibClient getZCLibClient].libInitInfo;
    //通過名稱設置vip等級
    libInitInfo.vip_level = @"尊貴";
    //可添加多個用戶標簽,多個標簽ID或者名稱之間用,分割
    libInitInfo.user_label = @"明星,記者";
    

    # 4.2.12 轉人工后隱藏“+”號菜單欄中的按鈕

    在 ZCKitInfo 中傳入相關字段
    eg:
    ZCKitInfo *kitInfo=[ZCKitInfo new]; 
    //  聊天頁面底部加號中功能:隱藏評價,默認NO(不隱藏)
    kitInfo.hideMenuSatisfaction = YES;
    // 聊天頁面底部加號中功能:隱藏留言,默認NO(不隱藏)
    kitInfo.hideMenuLeave = YES;
    // 聊天頁面底部加號中功能:隱藏圖片,默認NO(不隱藏)
    kitInfo.hideMenuPicture = YES;
    // 隱藏拍攝,默認NO(不隱藏)
    kitInfo.hideMenuCamera = YES;
    // 隱藏文件,默認NO(不隱藏)
    kitInfo.hideMenuFile = YES;
    
    

    # 4.3 留言工單相關

    # 4.3.1 工作臺設置留言界面

    在工作臺可以設置留言界面

    圖片

    # 4.3.2 留言頁面用戶信息自定義配置

    留言中的郵箱、電話、附件這三個參數的校驗和顯示邏輯可在pc端console頁面配置。

    圖片

    # 4.3.3 跳轉到留言頁面

    可以直接跳轉到留言頁面:

    
    ZCKitInfo *kitInfo = [[ZCKitInfo alloc] init];
    kitInfo.leaveContentPlaceholder = @"請輸入內容";
    kitInfo.leaveMsgGuideContent = @"我是自定義引導語";
    NSMutableArray *customField = [[NSMutableArray alloc] init];
    [customField addObject:@{@"id" : @"510fb45d6e9d4a9c99a7c24861d584d7", @"value" : @"ca55f29ed5dd4879bdf3ab213fec3381"}];
    [customField addObject:@{@"id" : @"6ee93dd945ac47fcac1a80bf03fd23fd", @"value" : @"6ee93dd945ac47fcac1a80bf03fd23fd"}];
    [customField addObject:@{@"id" : @"abd0229cd5a64798b74516b3f09bbd7e", @"value" : @"abd0229cd5a64798b74516b3f09bbd7e"}];
                            
    kitInfo.leaveCusFieldArray = [customField copy];
    // 進入留言轉工單,需要對接型字段
    kitInfo.leaveParamsExtends = @[@{@"id":@"d93847a05710483893fd2d05e16a2b82",@"params":@"msgid",@"value":@"數據1"}];
    kitInfo.leaveMsgGroupId = @"540a910a760f4387918b0fa7302a0eca";
    [ZCSobotApi openLeanve:0 kitinfo:kitInfo with:self onItemClick:^(NSString *msg, int code) {
                                
         }];
    

    其中參數:

    /**
     自定義留言內容預置文案,如果需要國際化,可自行在bundle文件中,以文案為key,翻譯即可
     例如:"請輸入內容"="Please enter content";
     */
    @property (nonatomic,strong) NSString *leaveContentPlaceholder;
    
    /**
     自定義留言引導語,如果需要國際化,可自行在bundle文件中,以文案為key,翻譯即可
     例如:"無法解答你的問題,你可以留言"="Please leave";
     */
    @property (nonatomic,strong) NSString *leaveMsgGuideContent;
    
    /**
     *  直接進入留言自定義字段
     *  數組,可以以傳遞多個
     *  id: 自定義字段的id
     *  value: 想傳遞的數據
     *  @{@"id":@"",@"value":@"我是數據"}
     **/
    @property (nonatomic,strong) NSMutableArray * leaveCusFieldArray;
    
    
    /**
     *  進入留言轉工單,需要對接型字段
     *  數組,可以以傳遞多個
     *  id: 對接字段系統自動生成的id
     *  value: 想傳遞的數據
     *  params: 顯示的字段ID,例如city、address,與id對應
     *  @{@"id":@"textfield12",@"value":@"我是數據",@"params":@"city"}
     **/
    @property (nonatomic,strong) NSMutableArray * leaveParamsExtends;
    
    
    /**
     留言技能組 id
     獲?。涸O置 —>工單技能組設置
    */
    @property (nonatomic,strong) NSString * leaveMsgGroupId;
    
    

    # 4.3.4 留言頁面事件攔截

    sdk中留言可跳轉到自定義頁面,如有此需求,可以使用如下方法進行設置:

    在啟動VC 服從ZCChatControllerDelegate協議 
      在啟動方法中 target(代理)傳入啟動VC 
    [ZCSobotApi openZCChat:uiInfo with:self target:vc pageBlock:^(ZCChatController *object, ZCPageBlockType type) {
     } messageLinkClick:^(NSString *link) {
    }];
    實現代理方法:
    -(void)openLeaveMsgClick:(NSString*)tipMsg{
    // 點擊留言的代理事件
        NSLog(@"tipMsg ==%@",tipMsg);
    }
    

    # 4.3.5 工單回復按鈕

    可通過參數配置是否顯示留言按鈕:

    /**
     *  留言完成后,是否 顯示 回復按鈕
     *  默認為 yes  , 可以回復
     */
    @property (nonatomic,assign) BOOL leaveCompleteCanReply;
    

    # 4.3.6 獲取最新留言回復

    /// 獲取最新回復
    /// @param partnerid  用戶id
    /// @param ResultBlock code=1返回成功,
    /// dict :data:items:[{(ticketId(工單id),ticketTitle(工單標題),replyContent(回復內容),replyTime(回復時間),customerId(客戶id),serviceNick(客服昵稱)}] 
    + (void)getLastLeaveReplyMessage:(NSString *) partnerid resultBlock:(void (^)(NSDictionary *dict,NSMutableArray *arr,int code))ResultBlock;
    
    示例代碼
     [ZCSobotApi getLastLeaveReplyMessage:[ZCLibClient getZCLibClient].libInitInfo.partnerid resultBlock:^(NSDictionary * _Nonnull dict, NSMutableArray * _Nonnull arr, int code) {
                                if(arr!=nil && arr.count > 0){
                                    ZCRecordListModel *model = [arr firstObject];
                                    
                                    // 通知參數
                                    NSString *identifier = [NSString stringWithFormat:@"leavereply.www.gene-tech.cn%f",[[NSDate date] timeIntervalSinceNow]];
                                    NSDictionary *userInfo = @{@"msgfrom":@"sobot",@"pushType":identifier,
                                                 @"ticketId":model.ticketId
                                    };
                                    
                                    
                                    NSTimeInterval time = [model.replyTime doubleValue]/1000; // 傳入的時間戳str如果是精確到毫秒的記得要/1000
                                    NSDate *detailDate = [NSDate dateWithTimeIntervalSince1970:time];
                                    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; // 實例化一個NSDateFormatter對象
                                    // 設定時間格式,這里可以設置成自己需要的格式
                                    [dateFormatter setDateFormat:@"MM-dd HH:mm"];
                                    NSString *currentDateStr = [dateFormatter stringFromDate:detailDate];
                                    
                                    NSString *replyContent = model.replyContent;
                                    replyContent = [replyContent stringByReplacingOccurrencesOfString:@"<p>" withString:@""];
                                    replyContent = [replyContent stringByReplacingOccurrencesOfString:@"</p>" withString:@""];
                                    replyContent = [replyContent stringByReplacingOccurrencesOfString:@"<br/>" withString:@""];
                                    NSString *replyStr = [NSString stringWithFormat:@"%@\n %@ \n %@",model.ticketTitle,currentDateStr,replyContent];
                                    
                                    
                                    
                                    [ZCSobotApi postLocalNotification:replyStr dict:userInfo];
                                }
                            }];
    

    # 4.3.7 添加留言評價主動提醒開關

    在 ZCKitInfo 中傳入相關字段
    eg:
    ZCKitInfo *kitInfo=[ZCKitInfo new]; 
    // 已完成留言詳情界面:返回時是否彈出服務評價窗口(只會第一次返回彈,下次返回不會再彈)
    // 默認為 NO   , 不主動提醒
    kitInfo.showLeaveDetailBackEvaluate = YES;
    
    

    # 4.3.8 添加留言擴展參數

    在 ZCKitInfo 中傳入相關字段 ,字段說明;

    /**
     *  直接進入留言自定義字段
     *  數組,可以以傳遞多個
     *  id: 自定義字段的id
     *  value: 想傳遞的數據
     *  @{@"id":@"",@"value":@"我是數據"}
     **/
    @property (nonatomic,strong) NSMutableArray * leaveCusFieldArray;
    
    
    
    /**
     *  直接進入留言對接字段
     *  數組,可以以傳遞多個
     *  id: 對接字段系統自動生成的id
     *  value: 想傳遞的數據
     *  params: 顯示的字段ID,例如city、address,與id對應
     *  @{@"id":@"textfield12",@"value":@"我是數據",@"params":@"city"}
     **/
    @property (nonatomic,strong) NSMutableArray * leaveParamsExtends;
    
    
    /**
     留言技能組 id
     獲?。涸O置 —>工單技能組設置
    */
    @property (nonatomic,strong) NSString * leaveMsgGroupId;
    
    
    

    # 4.4 評價

    # 4.4.1 設置評價界面

    在工作臺可以設置 滿意度評價界面

    圖片

    # 4.4.2 評價的相關配置

    /**
     *
     *   導航欄右上角 是否顯示 評價按鈕  默認不顯示
     *
     **/
    @property (nonatomic,assign) BOOL isShowEvaluation;
    
    /**
     *導航欄右上角 是否顯示 關閉按鈕 默認不顯示,關閉按鈕,點擊后無法監聽后臺消息
     **/
    @property (nonatomic,assign) BOOL isShowClose;
    
    /**
     *
     *   針對關閉按鈕,單獨設置是否顯示評價界面,默認不顯示
     *
     **/
    @property (nonatomic,assign) BOOL isShowCloseSatisfaction;
    /**
     *  評價完人工是否關閉會話(人工滿意度評價后釋放會話)
     *  默認為NO 未開啟
     *
     */
    @property (nonatomic,assign) BOOL      isCloseAfterEvaluation;
    /**
     *  返回時是否開啟滿意度評價
     *  默認為NO 未開啟
     *
     */
    @property (nonatomic,assign) BOOL      isOpenEvaluation;
    
    
    /**
     *  返回時開啟滿意度評價,顯示暫不評價
     *  默認為NO 未開啟
     */
    @property (nonatomic,assign) BOOL      canBackWithNotEvaluation;
    
    

    參考效果:

    圖片圖片

    # 4.4.3 返回時要求用戶評價,關閉時要求用戶評價

    //返回或關閉時是否開啟滿意度評價 默認為NO 未開啟
    kitInfo.isOpenEvaluation = @"YES";
    //評價完人工是否關閉會話(人工滿意度評價后釋放會話) 默認為NO 未開啟
    kitInfo.isCloseAfterEvaluation = @"YES";
    
    // 是否有返回提示,默認為 NO,設置為YES,會提醒“是否結束會話”
    kitInfo.isShowReturnTips = YES;
    
    

    # 4.4.4 配置用戶提交人工滿意度評價后釋放會話

    
    /**
     *  評價完人工是否關閉會話(人工滿意度評價后釋放會話)
     *  默認為NO 未開啟
     *
     */
    @property (nonatomic,assign) BOOL      isCloseAfterEvaluation;
    
    

    # 4.4.5 左上角返回和右上角關閉時,人工滿意度評價彈窗界面配置是否顯示暫不評價按鈕

    
    /**
     *  返回時開啟滿意度評價,顯示暫不評價
     *  默認為NO 未開啟
     */
    @property (nonatomic,assign) BOOL      canBackWithNotEvaluation;
    
    

    # 4.5 消息相關

    # 4.5.1 消息推送

    注:如果你需要SDK推送的功能請參考以下消息通知、注冊推送的相關代碼,如果您的項目不需要請略過。

    1、在生成appkey的時候,上傳推送證書(.p12格式),導出證書一定要有密碼;

    2、推送只有與人工會話才會有效,機器人是直接回答沒有推送;本地IM正常通信時會直接走支持IM通道,不會發送apns推送;

    相關配置和代碼

    推送ZCLibClient.h關鍵屬性說明

    /**
    推送的token
    每次啟動應用都需要重新設置
    */
    @property (nonatomic,strong) NSData *token;
    /**
    測試模式,
    根據此設置調用的推送證書,默認NO
    NO ,調用生產環境
    YES,測試環境
    */
    @property (nonatomic,assign) BOOL isDebugMode;
    
    /**
    自動提醒消息
    說明:如果開啟自動提醒消息,當沒有在智齒聊天頁面的時候,都會主動把消息作為本地通知展示
    此提醒為本地消息推送,與apns無關,僅是本地IM消息不在聊天頁面的提醒
    */
    @property (nonatomic,assign) BOOL autoNotification;
    
    
    /**
     退出道后臺,自動關閉長連接,默認NO
     說明:如果設置YES,退出后臺立即關閉通道,不影響應用后臺掛起時長
     */
    @property (nonatomic,assign) BOOL autoCloseConnect;
    
    /**
    獲取未讀消息數
    @return 未讀消息數(進入智齒聊天頁面會清空)
    */
    -(int) getUnReadMessage;
    

    注冊推送

    在AppDelegate.m 文件中注冊推送。

    導入頭文件

    #import <SobotKit/SobotKit.h>
    #import <UserNotifications/UserNotifications.h>
    #define SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
    

    服從協議

    
    <UIApplicationDelegate,UNUserNotificationCenterDelegate>
    
    

    注冊

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
        
        if (SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(@"10")) {
            UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
            center.delegate = self;
            [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert |UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error) {
                if (!error) {
                    [[UIApplication sharedApplication] registerForRemoteNotifications];
                }
            }];
        }else{
             [self registerPush:application];
        }
        [[ZCLibClient getZCLibClient].libInitInfo setApp_key:@"your appKey"];
        // 設置推送是否是測試環境,測試環境將使用開發證書
        [[ZCLibClient getZCLibClient] setIsDebugMode:YES];
        // 錯誤日志收集
        [ZCLibClient setZCLibUncaughtExceptionHandler];
        return YES;
    }
     
    -(void)registerPush:(UIApplication *)application{
        // ios8后,需要添加這個注冊,才能得到授權
        if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
            //IOS8
            //創建UIUserNotificationSettings,并設置消息的顯示類類型
            UIUserNotificationSettings *notiSettings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIRemoteNotificationTypeSound) categories:nil];
            
            [application registerUserNotificationSettings:notiSettings];
            
        } else{ // ios7
            [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];
        }
    }
    
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken{
        NSLog(@"---Token--%@", pToken);
        // 注冊token
        [[ZCLibClient getZCLibClient] setToken:pToken];
    
    }
    

    # 4.5.2 設置是否開啟消息提醒

    當用戶不處在聊天界面時,收到客服的消息,APP 可以在通知欄或者聊天入口給出提醒。通知欄提醒可以顯示最近一條消息的內容。

    // 是否自動提醒, 當用戶不在聊天頁面,收到本地連接消息主動發送一條本地推送
    [[ZCLibClient getZCLibClient] setAutoNotification:YES];
     
    // 設置推送環境 
    [[ZCLibClient getZCLibClient] setIsDebugMode:NO];  
    
    

    # 4.5.3 離線消息

    離線消息設置

    
    // 設置切換到后臺自動斷開長連接,不會影響APP后臺掛起時長
    // 進入前臺會自動重連,斷開期間消息會發送apns推送
    [ZCLibClient getZCLibClient].autoCloseConnect = YES;
    
    
    
    //  @note 檢查當前消息通道是否建立,沒有就重新建立, 如果調用 closeIMConnection 后,可調用此方法重新建立鏈接
    [[ZCLibClient getZCLibClient] checkIMConnected];  
    /* 檢查當前監聽是否被移除,如果移除就重新注冊(重新激活
     網絡監聽 ZCNotification_NetworkChange
     UIApplicationDidBecomeActiveNotification
     UIApplicationDidEnterBackgroundNotifica
    ),經常和checkIMConnected一起使用
    */
    [[ZCLibClient getZCLibClient] checkIMObserverWithRegister];
    /**
     移除IM所有監聽,可能會影響應用在后臺存活時長,如果調用此方法后需要checkIMObserverWithCreate重新激活
     網絡監聽 ZCNotification_NetworkChange
     UIApplicationDidBecomeActiveNotification
     UIApplicationDidEnterBackgroundNotification
     */
    [[ZCLibClient getZCLibClient] removeIMAllObserver];
    
    /**
     @note 關閉當前消息通道,使其不再接受消息,如果配置推送了,消息會走apns送達
     */  
     [[ZCLibClient getZCLibClient] closeIMConnection];
     
     
     
    
         
    // ReceivedMessageBlock 未讀消息數, obj 當前消息  unRead 未讀消息數
     [ZCLibClient getZCLibClient].receivedBlock = ^(id obj,int unRead,NSDictionary *object){
    //        NSLog(@"當前消息數:%d \n %@",unRead,obj);
        };
        
    // 關閉通道,清理內存,退出智齒客戶(如果當前是人工咨詢狀態客戶會離線,如果是機器人狀態會直接中斷當前會話,下次進入是新會話)
    // 說明:調用此方法后將不能接收到離線消息,除非再次進入智齒SDK重新激活
    // isClosePush:YES ,是關閉push;NO離線用戶,但是可以收到push推送
    +(void) closeAndoutZCServer:(BOOL) isClosePush; 
    //事例
    [ZCLibClient  closeAndoutZCServer:YES];
    

    # 4.5.4 未讀消息數操作

    //直接獲取未讀消息數
    [[ZCLibClient getZCLibClient] getUnReadMessage];
    //清空未讀消息數
     [[ZCLibClient getZCLibClient] clearUnReadNumber:@"partnerid"];
    

    # 4.5.5 發送位置消息

    發送位置信息,此方法,只能是收到初始化的鏈接監聽到url=sobot://sendlocation時發起定位調用,否則可能發送失敗,詳細說明見ZCKitInfo.h中的canSendLocation屬性說明

    ZCKitInfo *uiInfo=[ZCKitInfo new];
    // 設置開啟發送
    uiInfo.canSendLocation = YES;
    // 配置發送按鈕,注意menu1.url = sobot://sendlocation在啟動頁面的messageLinkClick中監聽
    NSMutableArray *arr = [[NSMutableArray alloc] init];
        for (int i = 0; i<1; i++) {
            ZCLibCusMenu *menu1 = [[ZCLibCusMenu alloc] init];
            menu1.title = [NSString stringWithFormat:@"位置"];
            menu1.url = [NSString stringWithFormat:@"sobot://sendlocation"];;
            menu1.imgName = @"zcicon_sendlocation";
            [arr addObject:menu1];
            ZCLibCusMenu *menu2 = [[ZCLibCusMenu alloc] init];
            menu2.title = [NSString stringWithFormat:@"商品"];
            menu2.url = [NSString stringWithFormat:@"sobot://sendProductInfo"];;
            menu2.imgName = @"zcicon_sendpictures";
            [arr addObject:menu2];
        }
    uiInfo.cusMoreArray = arr;
    
    
    
    // 發送位置方法,fullPath為圖片本地完整路徑
    [ZCSobotApi sendLocation:@{
                            @"lat":@"40.001693",
                            @"lng":@"116.353276",
                            @"localLabel":@"北京市海淀區學清路38號金碼大廈A座23層金碼大酒店",
                            @"localName":@"云景四季餐廳",
                            @"file":fullPath}];
    

    # 4.5.6 鏈接攔截

    可以通過初始化之前的代碼:

    
    /// 點擊鏈接攔截 幫助中心、留言、聊天、留言記錄
    /// @param messagelinkBlock 獲取到鏈接,如果返回 YES 則攔截
        [ZCSobotApi setMessageLinkClick:^BOOL(NSString *linkUrl) {
            
            return NO;
        }];
    

    攔截用戶點擊消息中的鏈接

    # 4.5.7 監聽當前聊天模式的變化

    可以通過初始化之前的代碼:

        
    // 當前用戶會話狀態
    typedef NS_ENUM(NSInteger,ZCServerConnectStatus) {
        ZCServerConnectOffline    = 0, // 當前會話已經結束
        ZCServerConnectRobot      = 1, // 機器人
        ZCServerConnectArtificial = 2, // 人工接入成功
        ZCServerConnectWaiting    = 3  // 僅人工的排隊
    };
    [[ZCLibClient getZCLibClient] setServerConnectBlock:^(id message, ZCServerConnectStatus status, NSDictionary *object) {
           
            
        }];
    

    # 4.5.8 替換消息中手機或固話識別的正則表達式

    修改自己的電話號碼識別規則:

        
    /**
    *  電話號碼正則表達式
     *  默認為@"0+\\d{2}-\\d{8}|0+\\d{2}-\\d{7}|0+\\d{3}-\\d{8}|0+\\d{3}-\\d{7}|1+[34578]+\\d{9}|\\+\\d{2}1+[34578]+\\d{9}|400\\d{7}|400-\\d{3}-\\d{4}|\\d{11}|\\d{10}|\\d{8}|\\d{7}"
     * 例如:82563452、01082563234、010-82543213、031182563234、0311-82563234
     、+8613691080322、4008881234、400-888-1234
     */
    @property (nonatomic,strong) NSString * telRegular;
    
    

    # 4.5.9 替換聊天消息中識別超鏈接的正則表達式

    修改消息中超鏈接的識別規則:

        
    
    /**
     *  鏈接地址正則表達式
     *  默認為:
        @"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z0-9]{1,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(([a-zA-Z0-9]{2,4}).[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)"
     */
    @property (nonatomic,strong) NSString * urlRegular;
    
    
    

    # 4.5.10 隱藏消息列表中的時間提示

        
    
    /**
      是否隱藏會話時間,默認NO不隱藏;如果不是中國區,與客戶端的真實時間是有差異可以選擇隱藏會話中的時間
    */
    @property (nonatomic,assign) BOOL hideChatTime;
    
    
    

    # 4.6 自定義UI設置

    1. 在導航欄區域,我們支持自定義導航欄區域的顏色及其字體顏色;
    2. 在會話頁面區域,我們支持自定義會話區域的背景顏色、會話氣泡顏色、會話字體顏色、提示氣泡顏色、提示字體顏色、時間文字顏色;
    3. 在底部區域,我們支持自定義底部bottom背景顏色及輸入框線條背景顏色;
    4. 其它部分,我們支持自定義相冊導航欄的背景顏色及文字顏色、評價彈框中的文字顏色及按鈕顏色、錄音控件中的文字、商品詳情展示中文字顏色(標題、詳情、標簽、發送)
    5. 圖片替換,如果想替換SDK中展示的圖片,可以直接替換SobotKit.bundle中的資源;也可以放一個同名的資源名稱在自己的項目中,會優先獲取項目中的圖片資源

    # 4.6.1 配置屬性值

    具體代碼實現請 查看代碼中的 ZCKitInfo.h 文件 ,參考 ZCKitInfo 類說明

    
    ZCKitInfo *uiInfo=[ZCKitInfo new];
    // 比如:設置對話頁面背景為紅色
    uiInfo.backgroundColor = [UIColor redColor];
    // 設置頂部導航綠色
    uiInfo.topViewBgColor = [UIColor greenColor];
    
    // 啟動頁面是傳入即可
    [ZCSobotApi openZCChat:uiInfo with:self pageBlock:^(id  _Nonnull object, ZCPageBlockType type) {
    
            }];
    
    
    

    【說明:代碼未涉及到的自定義UI,可以直接替換SobotKit.bundle中的圖片以達到你想要的效果或者直接放一張同名圖片到你的項目中,目前SDK僅支持超鏈接A、斜體I,加粗:strong、b,? 換行br這幾種html標簽,可隨意組合,對于除上述之外的html標簽無法很好處理,會直接過濾掉其他的標簽】

    # 4.6.2 自定義頂部標題

    ZCLibInitInfo *initInfo = [ZCLibClient getZCLibClient].libInitInfo;
    // 0.默認,自動判斷顯示機器人頭像和人工頭像
    // 1.始終企業名稱和企業logo
    // 2.顯示自定義標題和圖片,需要設置,custom_title、custom_title_url
    // 3.僅顯示機器人或人工名稱,不顯示頭像
    // 4.自動判斷,顯示機器人、人工的頭像和名稱
    initInfo.title_type = @"0";
    
    // 僅當title_type=@"2"時以下配置有效
    initInfo.custom_title = @"我是自定義標題,title_type=2是生效";
    initInfo.custom_title_url = @"我是自定義標題,title_type=2是生效";  
    
    

    # 4.7 其他配置

    # 4.7.1 自定義自動應答語

    sdk中的自動應答語可以在pc工作臺進行動態設置,

    如果pc工作臺的設置滿足不了您的需求,那么您可以使用以下接口在代碼中進行本地配置

    注意:本地設置本地優先,PC端不在起效

    - (void)customTipWord:(ZCLibInitInfo*)libInitInfo{
        // 用戶超時下線提示語
        libInitInfo.user_out_word = @"用戶超時下線提示語";
        // 用戶超時提示語
        libInitInfo.user_tip_word = @"用戶超時提示語";
        // 人工客服提示語
        libInitInfo.admin_tip_word = @"人工客服提示語";
        // 機器人歡迎語
        libInitInfo.robot_hello_word = @"機器人歡迎語";
        // 暫無客服在線說辭
        libInitInfo.admin_offline_title = @"暫無客服在線說辭";
        // 人工客服歡迎語
        libInitInfo.admin_hello_word  = @"人工客服歡迎語";
    }
    

    # 4.7.2 自定義聊天記錄顯示時間范圍

    如想設置用戶只能看到xx天內的聊天記錄,那么可以調用以下方法進行設置:

    /**
     歷史記錄時間范圍,單位分鐘(例:100-表示從現在起前100分鐘的會話)
     */
    
    @property(nonatomic,assign) int scope_time;
    

    # 4.7.3 “+”號面板菜單擴展

    1. 固定按鈕配置;
    	ZCKitInfo *uiInfo=[ZCKitInfo new];
        uiInfo.canSendLocation = NO;
        uiInfo.hideMenuSatisfaction = YES;
    //    uiInfo.hideMenuLeave = YES;
    //    uiInfo.hideMenuPicture = YES;
    //    uiInfo.hideMenuCamera = YES;
    //    uiInfo.hideMenuFile = YES;
    
    
    1. 添加自定義按鈕

    客服聊天界面中點擊“+”按鈕后所出現的菜單面板,可以根據需求自行添加菜單,代碼如下:

        ZCKitInfo *uiInfo=[ZCKitInfo new];
        NSMutableArray *arr = [[NSMutableArray alloc] init];
        for (int i = 0; i<1; i++) {
            ZCLibCusMenu *menu1 = [[ZCLibCusMenu alloc] init];
            menu1.title = [NSString stringWithFormat:@"訂單"];
            menu1.url = [NSString stringWithFormat:@"sobot://sendOrderMsg"];
            menu1.imgName = @"zcicon_sendpictures";
            [arr addObject:menu1];
            
            ZCLibCusMenu *menu2 = [[ZCLibCusMenu alloc] init];
            menu2.title = [NSString stringWithFormat:@"商品"];
            menu2.url = [NSString stringWithFormat:@"sobot://sendProductInfo"];
            menu2.imgName = @"zcicon_sendpictures";
            
            [arr addObject:menu2];
        }
        
        
        uiInfo.cusMoreArray = arr;
        
        uiInfo.cusRobotMoreArray = arr;
    

    其中:

    
    /**
    ?* 自定義輸入框下方更多(+號圖標)按鈕下面內容(不會替換原有內容,會在原有基礎上追加)
    ?* 修改人工模式的按鈕
    ?* 填充內容為:ZCLibCusMenu.h
    ?*? title:按鈕名稱
    ?*? url:點擊鏈接(點擊后會調用初始化linkBock)
    ?*? imgName:本地圖片名稱,如xxx@2x.png,icon=xxx
    ?*/
    @property (nonatomic,strong) NSMutableArray * cusMoreArray;
    
    /**
    ?* 自定義輸入框下方更多(+號圖標)按鈕下面內容(不會替換原有內容,會在原有基礎上追加)
    ?* 修改機器人模式的按鈕
    ?* 填充內容為:ZCLibCusMenu.h
    ?*? title:按鈕名稱
    ?*? url:點擊鏈接(點擊后會調用初始化linkBock)
    ?*? imgName:本地圖片名稱,如xxx@2x.png,icon=xxx
    ?*/
    @property (nonatomic,strong) NSMutableArray * cusRobotMoreArray;
    

    # 4.7.4 調起撥號界面接口

    /**
     *  設置電話號碼
     *  當導航欄右上角 顯示 撥號按鈕時  (和isShowTelIcon 一起設置有效)
     *
     **/
    @property (nonatomic,copy) NSString * customTel;
    /**
     *
     *   導航欄右上角 是否顯示 撥號按鈕 默認不顯示    注意:和isShowEvaluation 互斥 只能設置一個有效
     *
     **/
    @property (nonatomic,assign) BOOL isShowTelIcon;
    

    # 4.7.5 智齒日志顯示開關

    /**
     *  顯示日志信息
     *
     *  @param isShowDebug 默認不顯示
     */
    +(void) setShowDebug:(BOOL) isShowDebug;
    

    # 4.7.6 iOS多語言支持

    目前SDK支持英文和中文兩種語言,語言會根據當前手機語言自行切換適配,如果當前手機語言不識別,默認使用中文。

    語言文件的統一放在SobotKit.bundle文件中,如果需要新增語言包,把支持的語言文件放入對應的語言目錄下即可,例如;英文路徑:SobotKit.bundle?/?en_lproj/SobotLocalizable.strings,中文的路徑? ?SobotKit.bundle?/?zh-Hans_lproj/SobotLocalizable.strings;

    [說明:語言文件夾名稱為當前語言名稱的后面加上_lproj,例如zh-Hans_lproj,en_lproj]

    
    //獲取語言名稱
    NSString * languages = [ZCSobotApi getCurLanguagePreHeader];
    
    
        ZCLibInitInfo *initInfo = [ZCLibClient getZCLibClient].libInitInfo;
    
    // 設置默認語言,如果無法識別當前系統語言默認語言,不設置默認為en_lproj
    initInfo.default_language = @"zh-Hans_lproj";
    
    // 指定語言,不根據系統變化,如果找不到指定語言走默認語言邏輯
    initInfo.absolute_language = @"ar_lproj";
    
    
    /*
     指定接口語言,
     例如:en、zh-Hant、zh-Hans、pt、ar等
     */
     
    // 指定接口語言:2.8.9之后提供
    initInfo.locale = @"en";
    
    
    // 下載語言(2.8.6之后提供),如果你需要支持bundle包之外的其它語言,可提供給我們語言翻譯放入我們服務器中支持動態同步
    /// 從服務端同步語言文件
    /// @param lan  要同步的語言,如果本地bundle中已存在不會下載,en_lproj,zh-Hans_lproj
    /// @param isReWrite  如果已經下載過了是否重復下載
    +(void)synchronizeLanguage:(NSString *) language write:(BOOL) isReWrite;
    
    
    
    

    特殊處理:
    如果多語言時配置了人工評價或機器人評價標簽,不支持多語言顯示,可以通過如下屬性隱藏顯示(不影響評價功能使用,僅評價內容中缺失標簽內如)

    
    //  隱藏機器人是評價標簽
    _kitInfo.hideRototEvaluationLabels = YES;
    
    //  隱藏人工時評價標簽
    _kitInfo.hideManualEvaluationLabels = YES;
    
    
    
    
    
    
    

    # 4.7.7 設置暗黑模式

    從2.8.5版本開始支持暗黑模式,默認根據手機系統設置自動適配;也可強制指定使用,配置如下:

    
    	ZCKitInfo *uiInfo=[ZCKitInfo new];
    	// 默認為0,跟隨系統設置, 1強制使用暗黑風格
        uiInfo.themeStyle = 1;
       
       // 默認為YES,當為暗黑模式時候自定義顏色屬性將失效
       // 如果要保持暗黑模式時自定義顏色生效,設置為NO
        uiInfo.useDefaultDarkTheme = YES;
    
    

    # 4.7.8 時區適配

    從2.8.9版本開始支持,默認系統北京東八區標準事件,如果根據手機時間動態適配,配置如下代碼:

    
    [ZCSobotApi setAutoMatchTimeZone:YES];
    
    

    # 5 配置類屬性說明

    # 5.1 ZCKitInfo類說明(UI相關配置)

    每次啟動智齒頁面都可以重新設置

    # UI邏輯相關:

    屬性名稱 數據類型 說明 備注
    isOpenEvaluation BOOL 點擊返回時是否開啟滿意度評價 默認為NO 未開啟
    isCloseAfterEvaluation BOOL 點擊返回時開啟滿意度評價后,評價完人工是否關閉會話 默認為NO,未開啟
    isShowTansfer BOOL 機器人優先模式,是否直接顯示轉人工按鈕(值為NO時,會在人工無法回答時和unWordsCount參數配合顯示轉人工按鈕) 默認為YES顯示轉人工按鈕
    unWordsCount NSString 機器人優先模式,通過記錄機器人未知說辭的次數設置是否直接顯示轉人工按鈕 默認不設置
    isShowTelIcon BOOL 導航欄右上角 是否顯示 撥號按鈕 默認不顯示??? 注意:和isShowEvaluation 互斥 只能設置一個有效
    isShowEvaluation BOOL 導航欄右上角 是否顯示 評價按鈕 默認不顯示
    customTel NSString 當導航欄右上角 顯示 撥號按鈕時? (和isShowTelIcon 一起設置有效)
    isOpenRecord BOOL 是否開啟語音功能(人工接待時) 默認YES,開啟
    isShowNickName BOOL 留言頁面是否顯示昵稱輸入框 默認NO不顯示
    isAddNickName BOOL 非必須輸入,留言時是否必須輸入昵稱 默認為NO
    isSetPhotoLibraryBgImage BOOL 是否設置相冊背景圖片(不設置會跟著導航顏色配置)
    isOpenRobotVoice BOOL 是否開啟機器人語音(需要開通,未開通時機器人無法識別語音)
    navcBarHidden BOOL SDK 頁面中使用自定義的導航欄,不在使用系統的導航欄(隱藏)
    canSendLocation BOOL 人工狀態,是否可以發送位置 ?【 注意: ?由于每個App定位插件選擇不同,智齒沒有實現選擇位置功能,所以需要自行傳遞位置到SDK以及打開顯示,步驟如下: ?1、實現messageLinkClick事件(在ZCSobot startZCChatVC函數中) ?2、當收到link = sobot://sendlocation 調用智齒接口發送位置信息 ?3、當收到link = sobot://openlocation?latitude=xx&longitude=xxx&address=xxx 可根據自己情況處理相關業務
    isSendInfoCard BOOL 商品卡片信息是否自動發送(轉人工成功時,自動發送商品卡片信息) ?默認不自動發送
    productInfo ZCProductInfo 產品信息 ,配合 isSendInfoCard 使用
    isShowCloseSatisfaction BOOL 關閉按鈕時是否顯示評價界面,默認不顯示
    isShowReturnTips BOOL 返回時是否開啟提示,提示文案默認為:您是否要結束會話?,如需修改,請修改國際化配置文件
    ishidesBottomBarWhenPushed BOOL push后隱藏 BottomBar 默認是 yes
    isShowPortrait BOOL 僅支持豎屏 默認為 NO
    isCloseInquiryForm BOOL 是否關閉詢前表單(默認為NO,使用系統默認配置)
    isShowClose BOOL 導航欄右上角 是否顯示 關閉按鈕 默認不顯示,關閉按鈕,點擊后無法監聽后臺消息
    isUseImagesxcassets BOOL 是否使用 .xcassets 里的圖片 默認為NO 未開啟
    isOpenActiveUser BOOL 是否開啟智能轉人工,(如輸入“轉人工”,直接轉接人工),需要隱藏轉人工按鈕,請參見isShowTansfer和unWordsCount屬性
    activeKeywords BOOL 智能轉人工關鍵字,關鍵字作為key{@"轉人工",@"1",@"R"??"1"}
    autoSendOrderMessage BOOL 人工后,是否主動發送一條信息
    orderGoodsInfo ZCOrderGoodsModel 需要發送的訂單信息 ,配合 autoSendOrderMessage 使用
    leaveCompleteCanReply BOOL 留言完成后,是否 顯示 回復按鈕 默認為 yes? , 可以回復
    hideMenuSatisfaction BOOL 聊天頁面底部加號中功能:隱藏評價 默認NO(不隱藏)
    hideMenuLeave BOOL 聊天頁面底部加號中功能隱藏留言 默認NO(不隱藏)
    hideMenuPicture BOOL 聊天頁面底部加號中功能:隱藏圖片 默認NO(不隱藏)
    hideMenuCamera BOOL 聊天頁面底部加號中功能:隱藏拍攝 默認NO(不隱藏)
    hideMenuFile BOOL 聊天頁面底部加號中功能:隱藏文件 默認NO(不隱藏)
    themeStyle BOOL 是否設置為暗黑模式,1暗黑,0跟隨系統設置 默認為0
    useDefaultDarkTheme BOOL 如果設置了自定義顏色,是否使用默認暗黑模式,如果設置為NO,當為暗黑模式時候自定義顏色屬性將失效 默認為YES
    leaveContentPlaceholder NSString 自定義留言內容預置文案
    leaveMsgGuideContent NSString 自定義留言引導語
    leaveCusFieldArray NSMutableArray 直接進入留言自定義字段
    leaveMsgGroupId NSString 留言技能組 id,獲?。涸O置 —>工單技能組設置
    hideChatTime BOOL 是否隱藏會話時間 默認NO
    hideRototEvaluationLabels BOOL 是否隱藏機器人評價標簽 默認NO,不隱藏
    hideManualEvaluationLabels BOOL 是否隱藏人工評價標簽 默認NO,不隱藏

    # 字體相關:

    屬性名稱 數據類型 說明 備注
    titleFont UIFont 頂部標題的font
    listDetailFont UIFont 各種按鈕,網絡提醒 font
    listTimeFont UIFont 消息提醒(轉人工、客服接待等) font
    chatFont UIFont 聊天氣泡中文字 font
    voiceButtonFont UIFont 錄音按鈕的文字 font
    goodsTitleFont UIFont 商品詳情cell 中title的文字 font
    goodsDetFont UIFont 商品詳情cell中摘要的文字 font
    notificationTopViewLabelFont UIFont 通告的文字 字號 大小

    # 背景顏色相關:

    屬性名稱 數據類型 說明 備注
    goodSendBtnColor UIColor 商品詳情cell中btn的背景色
    backgroundColor UIColor 對話頁面背景色
    imagePickerColor UIColor 相冊導航欄的顏色
    imagePickerTitleColor UIColor 相冊導航欄的標題顏色
    leftChatColor UIColor 左邊聊天氣泡的顏色
    rightChatColor UIColor 右邊聊天氣泡的顏色
    leftChatSelectedColor UIColor 左邊氣泡復制選中的顏色
    rightChatSelectedColor UIColor 右邊氣泡復制選中的顏色
    backgroundBottomColor UIColor 底部bottom的背景顏色
    commentCommitButtonColor UIColor 評價提交按鈕背景顏色
    BgTipAirBubblesColor UIColor 提示氣泡的背景顏色
    goodSendBtnColor UIColor 商品發送按鈕的背景色
    satisfactionSelectedBgColor UIColor 評價頁“已解決”和“未解決”背景色
    satisfactionTextSelectedColor UIColor 評價頁“已解決”和“未解決”文字顏色
    topViewBgColor UIColor 自定義導航欄背景色
    trunServerBtnColor UIColor 機器人的問答中 提示轉人工按鈕的文字顏色
    bottomLineColor UIColor 底部bottom框邊框線顏色(輸入框、錄音按鈕、分割線)
    notificationTopViewBgColor UIColor 通告欄的背景色

    # 文字顏色相關:

    屬性名稱 數據類型 說明 備注
    submitEvaluationColor UIColor 提交評價按鈕的文字顏色
    topViewTextColor UIColor 頂部文字顏色
    leftChatTextColor UIColor 左邊氣泡文字顏色
    rightChatTextColor UIColor 右邊氣泡文字顏色
    timeTextColor UIColor 時間文字的顏色
    tipLayerTextColor UIColor 提示文字的顏色
    chatLeftLinkColor UIColor 左邊氣泡中鏈接顏色
    chatRightLinkColor UIColor 右邊氣泡中鏈接顏色
    goodsTitleTextColor UIColor 商品cell中title的文字顏色
    goodsTipTextColor UIColor 商品cell中標簽的文字顏色
    goodsDetTextColor UIColor 商品cell中摘要的文字顏色
    goodsSendTextColor UIColor 商品詳情cell中發送的文字顏色
    scoreExplainTextColor UIColor 滿意度星級說明的文字顏色
    chatTextViewColor UIColor 輸入框文本顏色
    notificationTopViewLabelColor UIColor 通告欄的文字顏色
    emojiSendBgColor UIColor 表情鍵盤發送按鈕背景顏色,2.8.5新增
    emojiSendTextColor UIColor 表情鍵盤發送按鈕文字顏色,2.8.5新增

    # 圖片相關:

    屬性名稱 數據類型 說明 備注
    moreBtnNolImg NSString 自定義導航欄更多按鈕默認狀態圖片
    moreBtnSelImg NSString 自定義導航欄更多按鈕選中狀態圖片
    turnBtnSelImg NSString 轉人工按鈕選中狀態圖片
    turnBtnNolImg NSString 轉人工按鈕默認狀態圖片
    topBackSelImg NSString 返回按鈕選中狀態圖片
    topBackNolImg NSString 返回按鈕默認狀態圖片

    # 其他:

    屬性名稱 數據類型 說明 備注
    topBackTitle NSString 聊天頁面 左上角 返回按鈕的文字 (默認 “返回”)
    cusMoreArray NSMutableArray 自定義輸入框下方更多(+號圖標)按鈕下面內容(不會替換原有內容,會在原有基礎上追加) ?填充內容為:ZCLibCusMenu.h ?title:按鈕名稱 ?url:點擊鏈接(點擊后會調用初始化linkBock) ?imgName:本地圖片名稱,如xxx@2x.png,icon=xxx
    cusMenuArray NSMutableArray 自定義快捷入口 ?填充內容為: ZCLibCusMenu.h ? url: 快捷入口鏈接(點擊后會調用初始化linkBock) ? title: 按鈕標題 ? lableId: 自定義快捷入口的ID
    cusRobotMoreArray NSMutableArray 自定義輸入框下方更多(+號圖標)按鈕下面內容(不會替換原有內容,會在原有基礎上追加) 填充內容為:ZCLibCusMenu.h

    # 5.2 ZCLibInitInfo類說明

    初始化后會自動創建此對象,后續直接使用即可

    # id 相關:

    屬性名稱 數據類型 說明 備注
    api_host NSString 接口域名,默認SaaS平臺域名為:https://api.sobot.com 【2.8.6版本去掉此屬性,由初始化直接指定】如果您是騰訊云服務,請設置為:https://ten.sobot.com 如果您是本地化部署,請使用你們自己的部署的服務域名
    app_key NSString 必須設置,不設置初始化不成功,初始化會自動賦值。 必填
    choose_adminid NSString 指定客服ID
    tran_flag int 定指客服 轉接類型 0 可轉入其他客服 1 必須轉入指定客服
    partnerid NSString 用戶唯一標識 對接用戶可靠身份,不能寫死,不建議為null,如果為空會以設備區別
    robotid NSString 對接機器人ID
    robot_alias NSString 對接機器人別名,如果設置此值每次都需要設置robotid為空
    platform_userid NSString 平臺通道參數,初始化成功后會自動賦值
    platform_key NSString 私鑰

    電商版:

    設置電商轉人工溢出策略,以下屬性與transferaction沖突,如果設置transferaction,將覆蓋flow_type、flow_companyid、flow_groupid的配置。

    屬性名稱 數據類型 說明 備注
    customer_code NSString 商戶對接id (僅電商版適用,如果沒有app_key,請提供此編碼)
    flow_type int 跨公司轉接人工(僅電商版本可用) 默認0不開啟 1-全部溢出,2-忙碌時溢出,3-不在線時溢出
    flow_companyid NSString 轉接到的公司ID
    flow_groupid NSString 轉接到的公司技能組

    # 客服工作臺顯示:

    屬性名稱 數據類型 說明 備注
    user_nick NSString 昵稱
    user_name NSString 真實姓名
    user_tels NSString 用戶電話
    user_emails NSString 用戶郵箱
    qq NSString qq
    remark NSString 備注
    face NSString 用戶自定義頭像
    visit_title NSString 接入來源頁面標題
    visit_url NSString 接入的來源URL
    params NSDictionary 用戶資料
    customer_fields NSDictionary 固定KEY的自定義字段 所有的KEY均在工作臺設置后生效(設置->自定義字段->用戶信息字段) @{@"customField22":@"我是自定義的分校"};
    group_name NSString 技能組名稱
    groupid NSString 技能組編號
    isVip NSString 指定客戶是否為vip,0:普通 1:vip 同PC端 設置-在線客服分配-排隊優先設置-VIP客戶排隊優先?? 開啟傳1 默認不設置 ?開啟后 指定客戶發起咨詢時,如果出現排隊,系統將優先接入。
    vipLevel NSString 指定客戶的vip等級,傳入等級 同PC端 設置-自定義字段-客戶字段

    # 說辭相關:

    屬性名稱 數據類型 說明 備注
    admin_hello_word NSString 自定義客服歡迎語,默認為空 (如果傳入,優先使用該字段)
    robot_hello_word NSString 自定義機器人歡迎語,默認為空 (如果傳入,優先使用該字段)
    user_tip_word NSString 自定義用戶超時提示語,默認為空 (如果傳入,優先使用該字段)
    admin_offline_title NSString 自定義客服不在線的說辭,默認為空 (如果傳入,優先使用該字段)
    admin_tip_word NSString 自定義客服超時提示語,默認為空 (如果傳入,優先使用該字段)
    user_out_word NSString 自定義用戶超時下線提示語,默認為空 (如果傳入,優先使用該字段)

    # 會話頁面相關:

    屬性名稱 數據類型 說明 備注
    service_mode int 自定義接入模式 1只有機器人,2.僅人工 3.智能客服-機器人優先 4智能客服-人工客服優先
    title_type NSString 聊天頁頂部標題 的自定義方式 0.默認? 1.企業名稱? 2.自定義字段,3.僅顯示文字、4顯示頭像和文字
    custom_title NSString 聊天頁頂部標題 自定義字段
    custom_title_url NSString 自定義圖像路徑
    scope_time int 歷史記錄時間范圍,單位分鐘(例:100-表示從現在起前100分鐘的會話)
    notifition_icon_url NSString 通告的icon 的URL

    # 其他:

    屬性名稱 數據類型 說明 備注
    is_enable_hot_guide BOOL 是否允許請求熱點引導問題接口
    margs NSDictionary 熱點引導問題的擴展字段
    support BOOL 機器人問答是否支持分詞聯想
    transferaction NSArray 轉人工 指定技能組 溢出 actionType:執行動作類型:to_group:轉接指定技能組 ?optionId:是否溢出? 指定技能組時:3:溢出,4:不溢出。 ?deciId:指定的技能組。 ?spillId:溢出條件? 指定客服組時:4:技能組無客服在線,5:技能組所有客服忙碌,6:技能組不上班,7:智能判斷 eg:[{"actionType":"to_group","optionId":"3","deciId":"162bb6bb038d4a9ea018241a30694064","spillId":"7"}, {"actionType":"to_group","optionId":"4","deciId":"a457f4dfe92842f8a11d1616c1c58dc1"}]
    summary_params NSDictionary 轉人工自定義字段 key: @{@"customField15619769556831":@"顯示xxyyyzzz1032"};
    multi_params NSDictionary 多輪會話 自定義字段
    good_msg_type int 自定發送商品訂單信息類型; 0 不發 1 給機器人發送 2 給人工發送? 3 機器人和人工都發送
    content NSString 自動發送商品訂單信息內容
    queue_first int 指定客戶優先
    default_language NSString 默認語言,不指定不識別系統語言默認英語,en_lproj 不識別時才使用
    absolute_language NSString 指定語言,不跟隨系統語言自動切換

    # 6 資源庫源碼

    智齒 iOS_SDK UI源碼;
    ? ??? 智齒SDK功能使用體驗APP下載 使用視頻引導

    # 7 常見問題

    常見問題解答:

    點擊鏈接 進入智能機器人輸入您的問題

    大星彩票 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>