<small id="aimcq"></small>
  • # Android sdk集成說明

    相關限制及注意事項

    1、Android SDK 新版支持 api17 以上版本,支持豎屏和橫屏。

    2、開發工具AS建議升級到3.0以上版本

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

    4、Android SDK 需要申請存儲、麥克風、拍照危險權限,否則部分功能無法使用

    【注意:安卓系統9.0(api 28)以后,默認不再支持Http請求,需要通過配置network_security_config.xml文件解決。如果您的項目中添加此文件并配置后,智齒SKD2.7.9之前的版本出現突然不能使用的情況,您可使用智齒官網上的最新版本,新版本中我們已優化了該配置的影響。

    具體情況可查看詳情文檔

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

    圖片

    <智齒客服SDK>

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

    智齒客服SDK具有以下特性

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

    # 1.1 集成流程示意圖

    圖片

    # 1.2.文件說明

    SDK包含sobotsdkAndroidStudio_demo、和Doc相關說明文檔。

    # 2.1 手動集成

    2.9.1版

    普通版:

    下載鏈接:Android_SDK_2.9.1

    androidX普通版:

    下載鏈接:Android_SDK_X_2.9.1

    電商版:

    下載鏈接:Android_SDK_MALL_2.9.1

    androidX電商版:

    下載鏈接:Android_SDK_MALL_X_2.9.1

    導入Module

    解壓下載的智齒Android_SDK_XXX.zip文件,將 sobotsdk 文件直接復制到您的項目中,

    然后 Build-->clean projecty一下,之后在build.gradle添加項目依賴

    完成上述步驟之后build.gradle中如下所示:

    dependencies {
          implementation project(':sobotsdk')
          implementation 'com.squareup.okhttp3:okhttp:3.12.0'
          implementation 'com.android.support:appcompat-v7:28.0.0'
          implementation 'com.android.support:recyclerview-v7:28.0.0'
          //目前支持常見的3種圖片加載庫,必須在下面的圖片加載庫中選擇一個添加依賴
          implementation 'com.github.bumptech.glide:glide:4.8.0'
          //implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
          //implementation 'com.squareup.picasso:picasso:2.5.2'
    }
    

    【注意1】由于glide v3版本和v4版本的接口完全不同,因此我們為了方便您的使用,采用了特殊的集成方式使sdk可以支持任 意版本的glide。正常情況下,您使用glide 時,直接添加glide依賴和sobotsdk的依賴,sdk即 可正常使用。如果報錯,那么把glide 升級到4.4.0版本以上即可。

    并且參照混淆文件

    (Android_SDK_x.x.x\AndoridStudio\Demo\SobotSDK\sobotsdkdemo\proguard-

    rules.pro)中的混淆配置添加混淆規則。

    在使用4.9.0以上版本的glide時,需額外添加依賴

    "implementation 'com.sobot.chat:sobotsupport-glidev4:1.0.10"

    【注意2】為保持移動端兩端方法名一致,方便對接,2.8.5版本后SobotApi類改名ZCSobotApi,部分方法名更改,但是原有SobotApi的方法都可繼續使用。

    # 2.2 依賴集成

    // 普通版:
    implementation  'com.sobot.chat:sobotsdk:2.9.1.0'
    // 普通版 androidX:
    implementation  'com.sobot.chat:sobotsdk_x:2.9.1.0'
    
    // 電商版:
    implementation 'com.sobot.chat:sobotsdk-mall:2.9.1.0'
    // 電商版 androidX:
    implementation  'com.sobot.chat:sobotsdk-mall-x:2.9.1.0'
    

    在build.gradle中如下所示:

    dependencies {
          implementation 'com.sobot.chat:sobotsdk:2.9.1.0'
          implementation 'com.squareup.okhttp3:okhttp:3.12.0'
          implementation 'com.android.support:appcompat-v7:28.0.0'
          implementation 'com.android.support:recyclerview-v7:28.0.0'
           //目前支持常見的3種圖片加載庫,必須在下面的圖片加載庫中選擇一個添加依賴
          implementation 'com.github.bumptech.glide:glide:4.8.0'
          //implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
          //implementation 'com.squareup.picasso:picasso:2.5.2'
    }
    

    【注意】由于glide v3版本和v4版本的接口完全不同,因此我們為了方便您的使用,采用了特殊的集成方式使sdk可以支持任意版本的glide。正常情況下,您使用glide 時,直接添加glide依賴和sobotsdk的依賴,sdk即 可正常使用。如果報錯,那么把glide 升級到4.4.0版本以上即可。

    并且參照混淆文件

    (Android_SDK_x.x.x\AndoridStudio\Demo\SobotSDK\sobotsdkdemo\proguard-rules.pro)中的混淆配置添加混淆規則。

    在使用4.9.0以上版本的glide時,需額外添加依賴

    "implementation 'com.sobot.chat:sobotsupport-glidev4:1.0.10"

    # 3.1 域名設置

    域名說明:

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

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

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

    示例代碼:

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

    SobotBaseUrl.setApi_Host("域名");
    

    # 3.2 獲取appkey

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

    圖片

    # 3.3 初始化

    # 3.3.1 普通版

    初始化參數和調用方式:

    【注意:啟動智齒SDK之前,需要在您的Application中調用初始化方法initSobotSDK,否則將無法啟動SDK】

    接口:

    /**
    * 初始化sdk
    * @param context 上下文  必填
    * @param appkey  用戶的appkey  必填 如果是平臺版用戶需要傳總公司的appkey
    * @param uid     用戶的唯一標識,不能傳一樣的值,可以為空
    */
    ZCSobotApi.initSobotSDK(Context context,String appkey,final String uid);
    
    //2.8.5以前版本方法
    SobotApi.initSobotSDK(Context context,String appkey,final String uid);
    

    示例代碼:

    public class App extends Application {
      @Override
        public void onCreate() {
            super.onCreate();
            initSobotApp();
        }
        private void initSobotApp() {  
          ZCSobotApi.initSobotSDK(getApplicationContext(),"your appkey"), "");
         }
    }
    

    # 3.3.2 電商版

    初始化參數和調用方式:

    【注意:啟動智齒SDK之前,需要在您的application調用初始化方法initPlatformUnion和initSobotSDK,否則將無法啟動SDK】

    接口:

    /**
    * 初始化平臺Id
    * @param context 上下文  必填
    * @param platformUnionCode   平臺Id  必填  請聯系對應的客服申請
    * @param platformSecretkey 平臺標識 秘鑰 請聯系對應的客服申請
    */
    ZCSobotApi.initPlatformUnion(Context context, String platformUnionCode,String platformSecretkey);
    
    //2.8.5以前版本方法
    SobotApi.initPlatformUnion(Context context, String platformUnionCode,String platformSecretkey);
    
    //商戶對接id (僅電商版適用,如果沒有app_key則必須提供)
    //info.setCustomer_code("商戶id");
    

    接口(可選):

    //設置溢出商城主站公司id
    ZCSobotApi.setFlow_Company_Id(context,"your flowCompanyId");
    //設置溢出商城主站公司技能組Id
    ZCSobotApi.setFlow_GroupId(context,"your flowGroupId");
    //設置是否溢出到主商戶flowType  0-不溢出 , 1-全部溢出,2-忙碌時溢出,3-不在線時溢出,默認不溢出
    ZCSobotApi.setFlow_Type(context,"your flowType");
    
    //2.8.5以前版本方法
    SobotApi.setFlow_Company_Id(context,"your flowCompanyId");
    SobotApi.setFlow_GroupId(context,"your flowGroupId");
    SobotApi.setFlow_Type(context,"your flowType");
    
    

    示例代碼:

    public class App extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            initApp();
        }
        private void initApp() { 
            ZCSobotApi.initSobotSDK(getApplicationContext(), getResources().getString(R.string.sobot_appkey), "");
            // initPlatformUnion()在initSobotSDK()之后調用
            ZCSobotApi.initPlatformUnion(getApplicationContext(), "your platformUnionCode", ""); // platformUnionCode - 平臺id
         }
    

    # 3.4 啟動智齒頁面

    # 3.4.1 啟動智齒頁面

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

    接口

    Information info = new Information();
    //appkey 必傳
    info.setApp_key("Your appkey");
    /**
    * @param context 上下文對象
    * @param information 初始化參數
    */
    ZCSobotApi.openZCChat(context, information);
    
    //2.8.5以前版本方法
    SobotApi.startSobotChat(context, information);
    
    參數名 類型 描述
    context Context 上下文
    information UIViewController 初始化參數自定義設置

    示例代碼:

    Information info = new Information();
    // appkey 必填 
    info.setApp_key(et_appkey.getText().toString());
    //注意:用戶唯一標識,不能傳入一樣的值,選填
    info.setPartnerid("");
    //用戶昵稱,選填
    info.setUser_nick("");
    //用戶姓名,選填
    info.setUser_name("");
    //用戶電話,選填
    info.setUser_tels("");
    //用戶郵箱,選填
    info.setUser_emails("");
    //自定義頭像,選填
    info.setFace("");
    //用戶QQ,選填
    info.setQq("");
    //用戶備注,選填
    info.setRemark("");
    //訪問著陸頁標題,選填
    info.setVisit_title("");
    //訪問著陸頁鏈接地址,選填
    info.setVisit_url("");
    ZCSobotApi.openZCChat(context, info);
    

    如有特殊需求,SDK 還提供了以 fragment 嵌入的方式集成會話界面,開發者可以更靈活的使用 SDK。示例代碼如下(也可參考SobotChatActivity中的實現)

    Bundle informationBundle = new Bundle();
    informationBundle.putSerializable(ZhiChiConstant.SOBOT_BUNDLE_INFO, info);
    SobotChatFragment fragment = SobotChatFragment.newInstance(informationBundle);
    FragmentManager fm = getSupportFragmentManager();
    FragmentTransaction transaction = fm.beginTransaction();
    // containerId 為 ViewGroup 的 resId
    transaction.replace(containerId, fragment);
    try {
        transaction.commitAllowingStateLoss();
    } catch (Exception e) {
    }
    

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

    /**
     * 啟動商家列表
     *
     * @param context 上下文對象
     * @param uid 用戶唯一標識 與information中傳的uid一致
     */
    ZCSobotApi.openZCChatListView(Context context,String uid);
    
    //2.8.5以前版本方法
    SobotApi.startMsgCenter(Context context,String uid)
    

    設置消息中心item回調

    SobotOption.sobotConversationListCallback = new SobotConversationListCallback(){
       @Override
       public void onConversationInit(Context context,Information info) {
          //點擊會話列表中的單個會話,啟動聊天頁面
         //由于默認的啟動方式無法獲取客服聊天的配置,因此需要手動設置此回調
         /**
          *例如:
          *  //用戶昵稱,選填
          *  info.setUser_nick("");
          *  .....
          *  ZCSobotApi.openZCChat(context, info);
          **/
       }
    };
    

    # 3.4.3 啟動客戶服務中心

    Information information = new Information();
    information.setApp_key("Your AppKey");  //分配給App的的密鑰
    /**
    * @param context 上下文對象
    * @param information 初始化參數
    */
    ZCSobotApi.openZCServiceCenter(context, information);
    
    //2.8.5以前版本方法
    SobotApi.openSobotHelpCenter(context, information);
    

    效果圖如下:

    圖片

    # 3.5 結束會話

    用戶在應用中退出登陸時需要調用 SDK 的注銷操作(只在切換賬號時調用),該操作會通知服務器進行推送信息的解綁,避免用戶已退出但推送依然發送到當前設備的情況發生。當用于用戶退出登錄時調用以下方法:

    注意:調用此方法會造成通道連接斷開,此時用戶將無法收到消息。

    /**
    * @param context 上下文對象
    */
    ZCSobotApi.outCurrentUserZCLibInfo(context);
    
    //2.8.5以前版本方法
    SobotApi.exitSobotChat(context);
    

    # 4.1 機器人客服

    # 4.1.1 對接指定機器人

    在后臺獲取機器人編號:

    圖片

    在 SDK 代碼中配置:

    //設置機器人編號
    info.setRobotCode("your robot code");
    
    //設置機器人編號對應的別名  2.8.6新增
    //指定別名和指定的編號id效果一樣
    info.setRobot_alias("your robot alias");
    

    # 4.1.2 自定義接入模式

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

    //默認false:顯示轉人工按鈕。true:智能轉人工
    info.setArtificialIntelligence(false);
    //當未知問題或者向導問題顯示超過(X)次時,顯示轉人工按鈕。
    //注意:只有ArtificialIntelligence參數為true時起作用
    info.setArtificialIntelligenceNum(X);
    //是否使用語音功能 true使用 false不使用   默認為true
    info.setUseVoice(true);
    //是否使用機器人語音功能 true使用 false不使用 默認為false,需要付費才可以使用
    info.setUseRobotVoice(false);
    //客服模式控制 -1不控制 按照服務器后臺設置的模式運行
    //1僅機器人 2僅人工 3機器人優先 4人工優先
    info.setService_mode(-1);
    //設置機器人模式下輸入關鍵字轉人工
    HashSet<String> tmpSet = new HashSet<>();
    tmpSet.add("轉人工");
    tmpSet.add("人工");
    info.setTransferKeyWord(tmpSet);
    

    # 4.1.3 自定義轉人工事件

    sdk可以配置轉人工攔截器,在轉人工前做一些額外的邏輯處理,例如自定義技能組選擇dialog。

    1.設置攔截器

    SobotOption.transferOperatorInterceptor = new SobotTransferOperatorInterceptor() {
        @Override
        public void onTransferStart(final Context context, final SobotTransferOperatorParam param) {
            //do something
        }
    };
    

    2、修改轉人工參數SobotTransferOperatorParam,以下為可修改參數介紹:

    //技能組id 
    String groupId;
    //技能組名稱
    String groupName;
    //轉人工后是否提示
    boolean isShowTips;
    //商品卡片信息
    ConsultingContent consultingContent;
    

    3、使用轉人工參數主動調用轉人工接口:

    /**
     * 外部主動調用轉人工
     * @param context
     * @param param 轉人工參數
     *        ConsultingContent consultingContent 商品信息        
     */
    ZCSobotApi.connectCustomerService(context, param);
    
    //2.8.5以前版本方法
    SobotApi.transfer2Operator(context, param);
    

    # 4.1.4 設置轉人工溢出

    1.配置參數對象

    Information info = new Information();
    //設置溢出技能組或客服,最多四層,
    List<SobotTransferAction> datas = new ArrayList<>();
    //例如:設置專員客服接待;溢出規則和技能組一樣
    SobotTransferAction firstData = new SobotTransferAction.ServiceBuilder()
            .conditionIntelligentudgement()
            .overflow()
            .designatedServiceId("d679e5b8d45b484e9475a2ca051b44a0")//專員客服ID
            .ServiceBuilder();
    //例如:貴賓技能組
    SobotTransferAction guibinData = new SobotTransferAction.Builder()
            .designatedSkillId("ae654754311e4fa59sdfdsafdsffc")
            .conditionIntelligentudgement()
            .overflow()
            .Build();
    
    //例如:vip技能組
    SobotTransferAction vipData = new SobotTransferAction.Builder()
            .designatedSkillId("ae654754311e4fa590b0e3a4298672fc")
            .conditionIntelligentudgement()
            .overflow()
            .Build();
    //例如:普通技能組
    SobotTransferAction data = new SobotTransferAction.Builder()
            .designatedSkillId("a71100c5463d42bfb467762bccfef511")
            .conditionIntelligentudgement()
            .overflow()
            .Build();
    datas.add(firstData);
    datas.add(guibinData);
    datas.add(vipData);
    datas.add(data);
    JSONArray jsonArray = GsonUtil.praseList2Json(datas);
    info.setTransferAction(jsonArray.toString());
    

    2.配置參數說明

    ①、設置是否溢出
    //設置溢出
    overflow()
    //設置不溢出
    no_overflow()
    ②、設置指定的技能組
    designatedSkillId("技能組id")
       設置指定的客服
    designatedServiceId("客服id")
    
    
    ③、設置溢出條件
    //指定客服組時:技能組無客服在線
    conditionServiceOffline()
    //指定客服組時:技能組所有客服忙碌
    conditionServiceBusy()
    //指定客服組時:技能組不上班
    conditionServiceOffWork()
    //指定客服組時:智能判斷
    conditionIntelligentudgement()
    

    # 4.1.5 機器人咨詢模式下可隱藏加號菜單欄的按鈕

    //隱藏留言功能 true 隱藏,false 顯示,默認false 
    info.setHideMenuLeave(true);
    //隱藏評價功能 true 隱藏,false 顯示,默認false 
    info.setHideMenuSatisfaction(true);
    

    # 4.2 人工客服

    # 4.2.1 對接指定技能組

    在后臺獲取技能組編號:

    圖片

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

    //預設技能組編號
    info.setGroupid("your groupId");
    //預設技能組名稱,選填
    info.setGroup_name("your groupName");
    

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

    # 4.2.2 對接指定客服

    在后臺獲取指定客服ID:

    圖片

    圖片

    在 SDK 代碼中設置:

    //轉接類型(0-可轉入其他客服,1-必須轉入指定客服)
    info.setTranReceptionistFlag(1);
    //指定客服id
    info.setChoose_adminid("your Customer service id");
    

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

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

    0 :可轉入其他客服,

    1: 必須轉入指定客服,

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

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

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

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

    圖片

    //設置用戶自定義字段,key必須是后端字段對應的ID
    Map<String,String> customerFields = new HashMap<>();
    customerFields.put("weixin","your wechat");
    customerFields.put("weibo","your weibo");
    customerFields.put("sex","女");
    customerFields.put("birthday","2017-05-17");
    info.setCustomer_fields(customerFields);
    

    用戶自定義資料

    //自定義用戶料
    Map<String, String> customInfo = new HashMap<>();
    customInfo.put("資料", "aaaaa");
    info.setParams(customInfo);
    

    效果圖如下: 圖片

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

    sdk可以設置轉接成功后自動發消息,每通會話只會發送一次

    //發送文字消息
    //設置發送模式 
    //SobotAutoSendMsgMode.Default  默認 不發送
    //SobotAutoSendMsgMode.SendToRobot  只給機器人發送
    //SobotAutoSendMsgMode.SendToOperator   只給人工客服發送
    //SobotAutoSendMsgMode.SendToAll   全部發送
    info.setAutoSendMsgMode(SobotAutoSendMsgMode.SendToAll.setContent("your msg"));
    
    //2.8.6 新增轉人工成功后可發送文字、圖片、視頻、文件(只限人工模式下),需要設置文件本地路徑和發送類型
    //SobotAutoSendMsgMode.ZCMessageTypeText   文本(默認)
    //SobotAutoSendMsgMode.ZCMessageTypePhoto  圖片
    //SobotAutoSendMsgMode.ZCMessageTypeFile   文件
    //SobotAutoSendMsgMode.ZCMessageTypeVideo  視頻
    String path = CommonUtils.getSDCardRootPath() + File.separator + "2.jpg";
    //path =  "發送內容";
    //path =  CommonUtils.getSDCardRootPath() + File.separator + "3.mp4";
    //path = CommonUtils.getSDCardRootPath() + File.separator + "1.txt";
    info.setAutoSendMsgMode(SobotAutoSendMsgMode.SendToOperator.setContent(path).setAuto_send_msgtype(SobotAutoSendMsgMode.ZCMessageTypePhoto));
    
    

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

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

    //設置排隊優先接入 true:優先接入  false:默認值,正常排隊
    info.setIs_Queue_First(true);
    

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

    sdk可以配置服務總結自定義字段,可以使客服更快速的對會話進行服務總結。

    1、獲取自定義字段id

    圖片

    圖片

    2、設置服務總結自定義字段?(轉人工支持傳入服務總結參數)

    //服務總結自定義字段
    Map<String, String> summaryInfo = new HashMap<>();
    summaryInfo.put("your keyId", "your value");
    info.setSummary_params(summaryInfo);
    

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

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

    //多輪會話自定義參數
    info.setMulti_params("{\"key1\",\"val1\"}");
    

    # 4.2.8 商品的咨詢信息并支持直接發送消息卡片,僅人工模式下支持

    在用戶與客服對話時,經常需要將如咨詢商品或訂單發送給客服以便客服查看。咨詢對象目前最多支持發送5個屬性(title,imgUrl,fromUrl,describe,lable),其中(title,fromUrl)為必填字段,如下以商品舉例說明:
    //咨詢內容
    ConsultingContent consultingContent = new ConsultingContent();
    //咨詢內容標題,必填
    consultingContent.setSobotGoodsTitle("XXX超級電視50英寸2D智能LED黑色");
    //咨詢內容圖片,選填 但必須是圖片地址
    consultingContent.setSobotGoodsImgUrl("http://www.li7.jpg");
    //咨詢來源頁,必填
    consultingContent.setSobotGoodsFromUrl("www.gene-tech.cn");
    //描述,選填
    consultingContent.setSobotGoodsDescribe("XXX超級電視 S5");
    //標簽,選填
    consultingContent.setSobotGoodsLable("¥2150");
    //轉人工后是否自動發送
    consultingContent.setAutoSend(true);
    //啟動智齒客服頁面 在Information 添加,轉人工發送卡片消息
    info.setConsultingContent(consultingContent);
    

    效果圖如下: 圖片

    # 4.2.9 發送訂單卡片,僅人工模式下支持,訂單卡片點擊事件可攔截

    用法一:啟動智齒客服時,自動發送訂單卡片消息

    List<OrderCardContentModel.Goods> goodsList = new ArrayList<>();
    goodsList.add(new OrderCardContentModel.Goods("蘋果", "https://img.sobot.com/chatres/66a522ea3ef944a98af45bac09220861/msg/20190930/7d938872592345caa77eb261b4581509.png"));
    goodsList.add(new OrderCardContentModel.Goods("蘋果1111111", "https://img.sobot.com/chatres/66a522ea3ef944a98af45bac09220861/msg/20190930/7d938872592345caa77eb261b4581509.png"));
    goodsList.add(new OrderCardContentModel.Goods("蘋果2222", "https://img.sobot.com/chatres/66a522ea3ef944a98af45bac09220861/msg/20190930/7d938872592345caa77eb261b4581509.png"));
    goodsList.add(new OrderCardContentModel.Goods("蘋果33333333", "https://img.sobot.com/chatres/66a522ea3ef944a98af45bac09220861/msg/20190930/7d938872592345caa77eb261b4581509.png"));
    OrderCardContentModel orderCardContent = new OrderCardContentModel();
    //訂單編號(必填)
    orderCardContent.setOrderCode("zc32525235425");
    //訂單狀態
    //待付款:1 待發貨:2 運輸中:3  派送中:4  已完成:5  待評價:6 已取消:7
    orderCardContent.setOrderStatus(1);
    //訂單總金額(單位 分)
    orderCardContent.setTotalFee(1234);
    //訂單商品總數
    orderCardContent.setGoodsCount("4");
    //訂單鏈接
    orderCardContent.setOrderUrl("https://item.jd.com/1765513297.html");
    //訂單創建時間
    orderCardContent.setCreateTime(System.currentTimeMillis() + "");
    //轉人工后是否自動發送
    orderCardContent.setAutoSend(true);
    //訂單商品集合
    orderCardContent.setGoods(goodsList);
    //訂單卡片內容
    info.setOrderGoodsInfo(orderCardContent);
    

    用法二:轉人工后,加號中可添加一個訂單按鈕,點擊后給客服發送一條訂單消息

    final String ACTION_SEND_ORDERCARD = "sobot_action_send_ordercard";
    ChattingPanelUploadView.SobotPlusEntity ordercardEntity = new ChattingPanelUploadView.SobotPlusEntity(ResourceUtils.getDrawableId(getApplicationContext(), "sobot_ordercard_btn_selector"), ResourceUtils.getResString(getApplicationContext(), "sobot_ordercard"), ACTION_SEND_ORDERCARD);
    tmpList.add(ordercardEntity);
    SobotUIConfig.pulsMenu.operatorMenus = tmpList;
    //sSobotPlusMenuListener 只能有一個,否則,下邊的會覆蓋上邊的(例如:加號中
    //同時自定義添加位置和訂單按鈕后,可根據action 判斷點擊的是哪個按鈕,做對應的處理)
    SobotUIConfig.pulsMenu.sSobotPlusMenuListener = new SobotPlusMenuListener() {
        @Override
        public void onClick(View view, String action) {
            if (ACTION_SEND_ORDERCARD.equals(action)) {
                Context context = view.getContext();
                List<OrderCardContentModel.Goods> goodsList = new ArrayList<>();
                goodsList.add(new OrderCardContentModel.Goods("蘋果", "https://img.sobot.com/chatres/66a522ea3ef944a98af45bac09220861/msg/20190930/7d938872592345caa77eb261b4581509.png"));
                OrderCardContentModel orderCardContent = new OrderCardContentModel();
                //訂單編號(必填)
                orderCardContent.setOrderCode("zc32525235425");
                //訂單狀態
                //待付款:1 待發貨:2 運輸中:3 派送中:4 已完成:5 待評價:6 已取消:7
                orderCardContent.setOrderStatus(1);
                //訂單總金額(單位是分)
                orderCardContent.setTotalFee(1234);
                //訂單商品總數
                orderCardContent.setGoodsCount("4");
                //訂單鏈接
                orderCardContent.setOrderUrl("https://item.jd.com/1765513297.html");
                //訂單創建時間
                orderCardContent.setCreateTime(System.currentTimeMillis() + "");
                //訂單商品集合
                orderCardContent.setGoods(goodsList);
                ZCSobotApi.sendOrderGoodsInfo(context, orderCardContent);
            }
        }
    };
    

    配置訂單卡片攔截,也可使用ZCSobotApi.setNewHyperlinkListener()進行攔截;setOrderCardListene攔截后setNewHyperlinkListener就不會在攔截了

    ZCSobotApi.setOrderCardListener(new SobotOrderCardListener() {
        @Override
        public void onClickOrderCradMsg(OrderCardContentModel orderCardContent) {
            ToastUtil.showToast(getApplicationContext(), "點擊了訂單卡片" );
        }
    });
    

    效果圖如下: 圖片

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

    /**
     * 判斷當前用戶是否正在與當前商戶客服聊天
     *
     * @param appkey 當前商戶的appkey
     * @return true 表示正在與當前商戶客服聊天
     *           false 表示當前沒有與所選商戶客服聊天
     */
    ZCSobotApi.isActiveOperator(appkey);
    

    # 4.2.11 設置用戶是否是vip和用戶vip級別

    //可在啟動智齒客服時設置
    //指定客戶是否為vip,0:普通 1:vip
     info.setIsVip("1");
    //vip級別可在智齒管理端(系統設置>自定義字段>客戶字段)中編輯,拿到等級對應的ID或者名稱
     info.setVip_level("尊貴");//通過名稱設置vip等級
    

    # 4.2.12 設置用戶自定義標簽

    //可在啟動智齒客服時設置
    //用戶標簽可在智齒管理端(系統設置>自定義字段>客戶字段)中編輯,拿到用戶標簽對應的ID或者名稱
    //可添加多個用戶標簽,多個標簽ID或者名稱之間用,分割
    info.setUser_label("明星,記者");
    

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

    //隱藏留言功能 true 隱藏,false 顯示,默認false
    info.setHideMenuLeave(true);
    //隱藏評價功能 true 隱藏,false 顯示,默認false
    info.setHideMenuSatisfaction(true);
    //隱藏圖片功能 true 隱藏,false 顯示,默認false
    info.setHideMenuPicture(true);
    //隱藏視頻功能 true 隱藏,false 顯示,默認false
    info.setHideMenuVedio(true);
    //隱藏文件功能 true 隱藏,false 顯示,默認false
    info.setHideMenuFile(true);
    //隱藏拍攝功能 true 隱藏,false 顯示,默認false
    info.setHideMenuCamera(true);
    

    # 4.3 留言工單相關

    # 4.3.1 工作臺設置留言界面

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

    圖片

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

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

    圖片

    # 4.3.3 跳轉到留言頁面

    /**
     * 跳轉到留言界面
     *
     * @param context   上下文  必填
     * @param info     用戶的appkey  必填 如果是平臺用戶需要傳總公司的appkey
     * @param isOnlyShowTicket true只顯示留言記錄界面,false 請您留言和留言記錄界面都顯示
     */
     ZCSobotApi.openLeave(Context context,Information info,boolean isOnlyShowTicket);
    
    //2.8.5以前版本方法
    SobotApi.startToPostMsgActivty(Context context,Information info,boolean isOnlyShowTicket);
    

    示例代碼:

    Information info = new Information();
    info.setApp_key(et_appkey.getText().toString());/* 必填 */
    //工單技能組
    info.setLeaveMsgGroupId("6576d173af904d97b1d5d01a11cc66f5");
    Map<String,String> map=new HashMap<>();
    //自定義字段,key和后端添加字段ID的對應
    map.put("834b34870b2e47daa1904d8f63ee55c2","zzz");
    info.setLeaveCusFieldMap(map);
    ZCSobotApi.openLeave(SobotStartActivity.this, info, false);
    

    # 4.3.4 留言頁面事件攔截

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

    ZCSobotApi.setSobotLeaveMsgListener(new SobotLeaveMsgListener() {
        @Override
        public void onLeaveMsg() {
          ToastUtil.showToast(getApplicationContext(),"在這里實現方法,跳轉頁面");
       }
    });
    

    # 4.3.5 已完成狀態的留言詳情界面的回復按鈕可通過參數配置是否顯示

    //已完成狀態的留言,是否可持續回復 true 持續回復 ,false 不可繼續回復 ;
    //默認 true 用戶可一直持續回復
    ZCSobotApi.setSwitchMarkStatus(MarkConfig.LEAVE_COMPLETE_CAN_REPLY,true);
    

    # 4.3.6 獲取留言回復

      /**
       * 獲取未讀留言回復列表,如果獲取到有未讀的留言回復,把最新的一條展示在通知欄中,點擊通知欄通知,跳轉到留言詳情頁面
       *
       * @param context   上下文  必填
       * @param partnerId 用戶唯一標識 與information中傳的partnerId一致
       * @param noReadLeaveReplyListener 獲取未讀留言回復列表回調,SobotLeaveReplyModel:單個留言回復對象
       */
     ZCSobotApi.getLastLeaveReplyMessage(SobotStartActivity.this,"your partnerid", new SobotNoReadLeaveReplyListener() {
                    @Override
                    public void onNoReadLeaveReplyListener(List<SobotLeaveReplyModel> sobotLeaveReplyModelList) {
                        // 發送留言回復通知,點擊通知欄通知后,跳轉到留言詳情頁面
                        ZCSobotApi.sendLeaveReplyNotification(SobotStartActivity.this, sobotLeaveReplyModelList.get(0), R.drawable.sobot_logo_small_icon, R.drawable.sobot_logo_small_icon);
                    }
                });
    

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

    //已完成留言詳情界面-未評價:返回時是否彈出服務評價窗口(只會第一次返回彈,下次返回不會再彈) 默認false(不彈)
    info.setShowLeaveDetailBackEvaluate(true);
    

    # 4.3.8 添加留言擴展參數

     //添加留言對接字段
     List<SobotLeaveMsgFieldModel> leaveParamsExtends = new ArrayList<>();
    //SobotLeaveMsgFieldModel屬性說明;id:對接字段系統自動生成的id;value:傳遞的數據;params:顯示的字段ID,例如city、address,與id對應;數據從后端工作臺配置得到
     leaveParamsExtends.add(new SobotLeaveMsgFieldModel("your id", "your value", "your params"));
     info.setLeaveParamsExtends(leaveParamsExtends);
    
     //添加留言技能組
    info.setLeaveMsgGroupId("your groupId");
    
    //添加留言自定義字段,key和后端添加字段ID的對應
    Map<String,String> map=new HashMap<>();
    map.put("your field key","zzz");
    info.setLeaveCusFieldMap(map);
    

    # 4.4 評價

    # 4.4.1 設置評價界面

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

    圖片

    # 4.4.2 導航欄左側點擊返回時是否彈出滿意度評價

    注意:只有用戶發送過消息,滿意度評價窗口才能彈出

    //點擊返回時是否彈出彈窗(您是否結束會話?)
    info.setShowLeftBackPop(true);
    //導航欄左側點擊返回時是否彈出滿意度評價。true彈出,false不彈;默認false
    info.setShowSatisfaction(false);
    

    效果圖如下: 圖片圖片

    # 4.4.3 導航欄右側關閉按鈕是否顯示和點擊時是否彈出滿意度評價

    注意:只有用戶發送過消息,滿意度評價窗口才能彈出

    //設置是否顯示導航欄右側關閉按鈕,true顯示,false隱藏;默認false
    info.setShowCloseBtn(false);
    //導航欄右側點擊關閉按鈕時是否彈出滿意度評價。true彈出,false不彈;默認false
    info.setShowCloseSatisfaction(false);
    

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

    /**
     * 配置用戶提交人工滿意度評價后釋放會話
     * @param context 上下文對象
     * @param flag true 表示釋放會話  false  表示不釋放會話
     */
    ZCSobotApi.setEvaluationCompletedExit(context,flag);
    

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

    /**
     * 左上角返回和右上角關閉 返回彈出評價窗口時,是否顯示暫不評價按鈕  默認false(不顯示)
     */
    info.setCanBackWithNotEvaluation(true);
    

    # 4.5 消息相關

    # 4.5.1 發送文本消息

    如您的app需要主動發送文本消息給客服,請使用如下代碼:

    /**
     * 發送文本類信息
     * @param context
     * @param content 文本內容
     */
    ZCSobotApi.sendTextToUser(Context context,String content)
    
    //2.8.5以前版本方法
    SobotApi.sendTextMsg(Context context,String content)
    
    

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

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

    /**
    * 設置是否開啟消息提醒 默認不提醒
    * @param context
    * @param flag
    * @param smallIcon 小圖標的id 設置通知欄中的小圖片,尺寸一般建議在24×24
    * @param largeIcon 大圖標的id
    */
    public static void setNotificationFlag(Context context,boolean flag,int smallIcon,int largeIcon);
    

    用戶點擊通知欄會發出廣播,監聽廣播實現跳轉到指定Activity

    action:
    常量:ZhiChiConstant.SOBOT_NOTIFICATION_CLICK
    或者字符串:“sobot_notification_click”
    

    示例代碼:

    //設置是否開啟消息提醒
    ZCSobotApi.setNotificationFlag(getApplicationContext(), true, R.drawable.sobot_logo_small_icon, R.drawable.sobot_logo_icon);
    

    # 4.5.3 設置離線消息

    開啟離線消息

    // 開啟通道接受離線消息,開啟后會將消息以廣播的形式發送過來,如果無需此功能那么可以不做調用
    ZCSobotApi.checkIMConnected(getApplicationContext(), "uid");
    
    //2.8.5以前版本方法
    SobotApi.initSobotChannel(getApplicationContext(), "uid");
    

    關閉離線消息

    // 關閉通道,清除當前會話緩存
    ZCSobotApi.closeIMConnection(getApplicationContext());
    
    //2.8.5以前版本方法
    SobotApi.disSobotChannel(getApplicationContext());
    

    # 4.5.4 注冊廣播、獲取新收到的信息和未讀消息數

    注冊廣播后,當消息通道連通時,可以獲取到新接收到的消息。

    1 注冊廣播

    /**
    * action:ZhiChiConstants.sobot_unreadCountBrocast
    */
    IntentFilter filter = new IntentFilter();
    filter.addAction(ZhiChiConstant.sobot_unreadCountBrocast);
    contex.registerReceiver(receiver, filter);
    

    2 接收新信息和未讀消息數 在BroadcastReceiver的onReceive方法中接收信息。

    public class MyReceiver extends BroadcastReceiver {
      @Override
      public void onReceive(Context context, Intent intent) {
        //未讀消息數
        int noReadNum = intent.getIntExtra("noReadCount", 0);
        //新消息內容
        String content = intent.getStringExtra("content");
        LogUtils.i("未讀消息數:" + noReadNum + "   新消息內容:" + content);
      }
    }
    

    當用戶不處在聊天界面時,收到客服的消息會將未讀消息數保存在本地,如果需要獲取本地保存的未讀消息數,那么在需要的地方調用該方法即可。如下:

    /**
    * @param context 上下文對象
    * @param uid 用戶唯一標識 與information中傳的uid一致,
    * @return int
    */
    ZCSobotApi.getUnReadMessage(Context context,String uid);//如果您沒有在information里設置這個uid,請傳入null。
    
    //2.8.5以前版本方法
    SobotApi.getUnreadMsg(Context context,String uid);
    

    # 4.5.5 發送位置消息

    如您的app需要發送客戶的位置信息,請參照以下步驟設置(其中地圖定位需要開發者自行開發):

    1、客服聊天界面配置位置發送按鈕(顯示在點擊“+”按鈕的菜單面板中,只在轉人工后顯示),代碼如下:

    //菜單動作 當點擊按鈕時會將對應action返回給callback以此作為依據,
    //判斷用戶點擊了哪個按鈕,可自行定義
    final String ACTION_LOCATION = "sobot_action_location";
    //配置位置發送按鈕
    ChattingPanelUploadView.SobotPlusEntity locationEntity = new ChattingPanelUploadView.SobotPlusEntity(R.drawable.sobot_location_btn_selector, ResourceUtils.getResString(getApplicationContext(), "sobot_location"), ACTION_LOCATION);
    List<ChattingPanelUploadView.SobotPlusEntity> tmpList = new ArrayList<>();
    tmpList.add(locationEntity);
    SobotUIConfig.pulsMenu.operatorMenus = tmpList;
    

    2、設置位置發送按鈕的回調:

    //sSobotPlusMenuListener 只能有一個,否則,下邊的會覆蓋上邊的(例如:加號中
    //同時自定義添加位置和訂單按鈕后,可根據action 判斷點擊的是哪個按鈕,做對應的處理)
    SobotUIConfig.pulsMenu.sSobotPlusMenuListener = new SobotPlusMenuListener() {
        @Override
        public void onClick(View view, String action) {
            if (ACTION_LOCATION.equals(action)) {
                Context context = view.getContext();
                //在地圖定位頁面獲取位置信息后發送給客服:
                SobotLocationModel locationData = new SobotLocationModel();
                //地圖快照,必須傳入本地圖片地址,注意:如果不傳會顯示默認的地圖圖片
                locationData.setSnapshot(Environment.getExternalStorageDirectory().getAbsolutePath()  +"/1.png");
                //緯度
                locationData.setLat("40.057406655722");
                //經度
                locationData.setLng("116.2964407172");
                //標點名稱
                locationData.setLocalName("金碼大廈");
                //標點地址
                locationData.setLocalLabel("北京市海淀區六道口金碼大廈");
                ZCSobotApi.sendLocation(context, locationData);
            }
        }
    };
    

    # 4.5.6 自定義超鏈接的點擊事件(攔截范圍:幫助中心、留言、聊天、留言記錄、商品卡片,訂單卡片)

    2.8.2 之后

    // 鏈接的點擊事件, 根據返回結果判斷是否攔截 如果返回true,攔截;false 不攔截
    // 可為訂單號,商品詳情地址等等;客戶可自定義規則攔截,返回true時會把自定義的信息返回
    // 攔截范圍  (幫助中心、留言、聊天、留言記錄、商品卡片,訂單卡片)
    ZCSobotApi.setNewHyperlinkListener(new NewHyperlinkListener() {
        @Override
        public boolean onUrlClick(String url) {
            //舉例
            if (url.contains("baidu.com")) {
                ToastUtil.showToast(getApplicationContext(), "點擊了超鏈接,url=" + url);
                //如果url鏈接是百度,攔截
                //do().....
                return true;
            }
            //舉例
            if (url.contains("訂單編號:123456789")) {
                ToastUtil.showToast(getApplicationContext(), "點擊了超鏈接,url=" + url);
                //如果鏈接是訂單卡片,攔截
                //do().....
                return true;
            }
            return false;
        }
        @Override
        public boolean onEmailClick(String email) {
            ToastUtil.showToast(getApplicationContext(), "點擊了郵件,email=" + email);
            return false;
        }
        @Override
        public boolean onPhoneClick(String phone) {
            ToastUtil.showToast(getApplicationContext(), "點擊了電話,phone=" + phone);
            return false;
        }
    });
    

    2.8.2 之前 這個方法 配置后會攔截所有的,不能動態攔截,建議使用新方法(setNewHyperlinkListener)

    ZCSobotApi.setHyperlinkListener(new HyperlinkListener() {
      @Override
      public void onUrlClick(String url) {
        LogUtils.i("點擊了超鏈接,url="+url);
      }
      @Override
      public void onEmailClick(String email) {
        LogUtils.i("點擊了郵件,email="+email);
      }
      @Override
      public void onPhoneClick(String phone) {
        LogUtils.i("點擊了電話,phone="+phone);
      }
    });
    

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

    ZCSobotApi.setChatStatusListener(new SobotChatStatusListener() {
        @Override
        public void onChatStatusListener(SobotChatStatusMode chatStatusMode) {
            switch (chatStatusMode) {
                case ZCServerConnectRobot:
                    ToastUtil.showToast(getApplicationContext(), "機器人聊天模式");
                    break;
                case ZCServerConnectArtificial:
                    ToastUtil.showToast(getApplicationContext(), "轉人工客服聊天模式");
                    break;
                case ZCServerConnectOffline:
                    ToastUtil.showToast(getApplicationContext(), "已離線");
                    break;
                case ZCServerConnectWaiting:
                    ToastUtil.showToast(getApplicationContext(), "僅人工排隊中");
                    break;
            }
        }
    });
    

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

    ZCSobotApi.replacePhoneNumberPattern(String regex);
    

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

    ZCSobotApi.replaceWebUrlPattern(String regex);
    

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

    //isHide true 隱藏 ,false 顯示 默認false
    ZCSobotApi.hideTimemsgForMessageList( Context context, boolean isHide);
    

    # 4.6 會話頁面自定義UI設置

    為了咨詢客服窗口的界面風格能與集成智齒客服 SDK 的 App 整體統一,智齒客服 SDK 提供了簡潔的 UI 自定義配置選項

    # 4.6.1 配置屬性值

    以下屬性可在application的oncreate()方法中設置

    //設置 轉人工按鈕的圖片
    SobotUIConfig.sobot_serviceImgId = R.drawable.sobot_icon_manualwork_normal;
    //設置 頭部文字字體顏色
    SobotUIConfig.sobot_titleTextColor = R.color.sobot_color;
    //設置 右上角按鈕圖片
    SobotUIConfig.sobot_moreBtnImgId = R.drawable.sobot_delete_hismsg_normal;
    //設置 頭部背景顏色
    SobotUIConfig.sobot_titleBgColor = R.color.sobot_white;
    //修改狀態欄背景顏色
    SobotUIConfig.sobot_statusbar_BgColor = R.color.sobot_white;
    //設置 聊天界面底部整體布局背景顏色
    SobotUIConfig.sobot_chat_bottom_bgColor = R.color.sobot_white;
    //設置 聊天界面左邊氣泡背景顏色
    SobotUIConfig.sobot_chat_left_bgColor = R.color.sobot_common_gray;
    //設置 聊天界面左邊氣泡內文字字體顏色
    SobotUIConfig.sobot_chat_left_textColor = R.color.sobot_holo_red_light;
    //設置 聊天界面左邊氣泡內鏈接文字字體顏色
    SobotUIConfig.sobot_chat_left_link_textColor = R.color.sobot_color;
    //設置 聊天界面右邊氣泡背景顏色
    SobotUIConfig.sobot_chat_right_bgColor = R.color.sobot_holo_red_light;
    //設置 聊天界面右邊氣泡內鏈接文字字體顏色
    SobotUIConfig.sobot_chat_right_link_textColor = R.color.sobot_color;
    //設置 聊天界面右邊氣泡內文字字體顏色
    SobotUIConfig.sobot_chat_right_textColor = R.color.sobot_white;
    //聊天界面文件消息類型氣泡背景顏色
    SobotUIConfig.sobot_chat_file_bgColor = R.color.sobot_holo_red_light;
    //設置 toolbar右邊第二個按鈕是否顯示(評價)
    SobotUIConfig.sobot_title_right_menu2_display = true;
    //修改toolbar右邊第二個按鈕的圖片(R.drawable.sobot_icon_call為撥號圖標,默認是評價圖標)
    SobotUIConfig.sobot_title_right_menu2_bg = R.drawable.sobot_phone;
    //設置toolbar右邊第二個按鈕為撥號功能(有值則為撥號功能,默認是評價功能)
    SobotUIConfig.sobot_title_right_menu2_call_num = "185xxxxxxxx";
    

    # 4.6.2 動態控制顯示標題欄的頭像和昵稱

    默認顯示只顯示頭像

    /**
     * 設置聊天界面頭部標題欄的昵稱模式
     *
     * @param context      上下文對象
     * @param title_type   titile的顯示模式
     *    SobotChatTitleDisplayMode.Default:顯示客服昵稱(默認)
     *    SobotChatTitleDisplayMode.ShowFixedText:顯示固定文本
     *    SobotChatTitleDisplayMode.ShowCompanyName:顯示console設置的企業名稱
     * @param custom_title 如果需要顯示固定文本,需要傳入此參數,其他模式可以不傳
     * @param isShowTitle  是否顯示標題
     */
    ZCSobotApi.setChatTitleDisplayMode(getApplicationContext(),
            SobotChatTitleDisplayMode.ShowFixedText, "昵稱", true);        
          
     
    /**
     * 設置聊天界面標題欄的頭像模式
     *
     * @param context           上下文對象
     * @param avatar_type       頭像的顯示模式
     * SobotChatAvatarDisplayMode.Default:顯示客服頭像(默認)
     * SobotChatAvatarDisplayMode.ShowFixedAvatar:顯示固定頭像
     * SobotChatAvatarDisplayMode.ShowCompanyAvatar:顯示console設置的企業名稱
     * @param custom_avatar_url 如果需要顯示固定頭像,需要傳入此參數,其他模式可以不傳
     * @param isShowAvatar      是否顯示頭像
     */
    SobotApi.setChatAvatarDisplayMode(getApplicationContext(),SobotChatAvatarDisplayMode.Default, "https://sobot-test.oss-cn-beijing.aliyuncs.com/console/66a522ea3ef944a98af45bac09220861/userImage/20191024164346682.PNG", false);
    

    # 4.6.3 控制橫豎屏顯示開關

    //true 橫屏 , false 豎屏; 默認 false 豎屏
    ZCSobotApi.setSwitchMarkStatus(MarkConfig.LANDSCAPE_SCREEN,false);
    

    # 4.6.4 橫屏下是否打開劉海屏開關

    //只有在橫屏下才有用;豎屏已適配,可修改狀態欄顏色
    //true 打開 ,false 關閉; 默認 false 關閉
    ZCSobotApi.setSwitchMarkStatus(MarkConfig.DISPLAY_INNOTCH, true);
    

    # 4.6.5 ui樣式通過同名資源替換

    在客戶app中colors.xml中添加同名顏色可覆蓋智齒sdk中的顏色樣式;也可通過在主項目中同一位置放一個同名的圖片資源去替換智齒sdk界面中的圖片;也可通過在主項目中同一位置放一個同名的文字資源去替換智齒sdk界面中的文字;

    以下是常用的顏色配置,更多顏色、圖片資源可到手動集成模塊中下載源碼包中去查找;

        <!-- 主題色 默認綠色 -->
        <color name="sobot_color">@color/sobot_common_green</color>
    
        <!-- 頭部開始 -->
        <!-- 頭部背景 -->
        <color name="sobot_color_title_bar_bg">@color/sobot_white</color>
        <!-- 狀態欄的顏色設置 -->
        <color name="sobot_status_bar_color">@color/sobot_color_title_bar_bg</color>
        <!-- 頭部中間昵稱顏色 -->
        <color name="sobot_color_title_bar_title">@color/sobot_common_gray1</color>
    
    
        <!-- 中間 聊天列表 -->
        <!-- 聊天背景 -->
        <color name="sobot_color_chat_bg">@color/sobot_white</color>
        <!--文本消息氣泡 左側  黑色字 -->
        <color name="sobot_left_msg_text_color">@color/sobot_common_gray1</color>
        <!--文本消息氣泡 右側 白色字 -->
        <color name="sobot_right_msg_text_color">@color/sobot_white</color>
        <!-- 超鏈接顏色 左邊 -->
        <color name="sobot_color_link">@color/sobot_common_blue</color>
        <!-- 超鏈接顏色 右邊 -->
        <color name="sobot_color_rlink">@color/sobot_common_yellow</color>
        <!-- 消息之間間隔 時間 顏色 -->
        <color name="sobot_color_remind_time_color">@color/sobot_common_gray2</color>
        <!-- 聊天界面提醒背景顏色-->
        <color name="sobot_listview_remind">@color/sobot_common_bg</color>
        <!-- 聊天界面提醒的字體顏色-->
        <color name="sobot_listview_remind_text_color">@color/sobot_common_gray2</color>
        <!-- 消息提醒中的超鏈接顏色 -->
        <color name="sobot_color_link_remind">@color/sobot_common_green</color>
        <!-- 文件消息氣泡顏色 -->
        <color name="sobot_chat_file_bgColor">@color/sobot_color</color>
        <!-- 消息氣泡左側背景默認顏色 -->
        <color name="sobot_chat_left_bgColor">@color/sobot_common_gray4</color>
        <!-- 消息氣泡右側背景默認顏色 -->
        <color name="sobot_chat_right_bgColor">@color/sobot_color</color>
    
        <!-- 底部 -->
        <!-- 點擊加號后 面板背景 -->
        <color name="sobot_color_bottom_bg">@color/sobot_white</color>
        <!-- 消息輸入框 文字 顏色 -->
        <color name="sobot_color_bottom_msg_input_color">@color/sobot_common_gray1</color>
        <!-- 點擊加號后 面板 按鈕字體顏色 -->
        <color name="sobot_color_bottom_btn_wz_color">@color/sobot_common_gray1</color>
    
        <!-- 留言相關 -->
        <!--留言 導航欄切換 文字下邊 橫線 顏色  -->
        <color name="sobot_postMsg_nav_indicator_color">@color/sobot_color</color>
        <!--留言 導航欄切換 選中 字體 顏色  -->
        <color name="sobot_postMsg_nav_sel_tx_color">@color/sobot_common_gray1</color>
        <!--留言 導航欄切換  未選中字體 顏色  -->
        <color name="sobot_postMsg_nav_tx_color">@color/sobot_common_gray2</color>
        <!--留言引導語 超鏈接顏色  -->
        <color name="sobot_postMsg_url_color">@color/sobot_common_blue</color>
    

    # 4.7 其他配置

    # 4.7.1 自定義自動應答語

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

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

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

    //自定義客服歡迎語,默認為空 (如果傳入,優先使用該字段)
    ZCSobotApi.setAdmin_Hello_Word(getApplicationContext(), "自定義客服歡迎語");
    //自定義機器人歡迎語,默認為空 (如果傳入,優先使用該字段)
    ZCSobotApi.setRobot_Hello_Word(getApplicationContext(), "自定義機器人歡迎語");
    //自定義用戶超時提示語,默認為空 (如果傳入,優先使用該字段)
    ZCSobotApi.setUser_Tip_Word(getApplicationContext(), "自定義用戶超時提示語");
    //自定義客服超時提示語,默認為空 (如果傳入,優先使用該字段)
    ZCSobotApi.setAdmin_Tip_Word(getApplicationContext(), "自定義客服超時提示語");
    // 自定義客服不在線的說辭,默認為空 (如果傳入,優先使用該字段)
    ZCSobotApi.setAdmin_Offline_Title(getApplicationContext(), " 自定義客服不在線的說辭");
    // 自定義用戶超時下線提示語,默認為空 (如果傳入,優先使用該字段)
    ZCSobotApi.setUser_Out_Word(getApplicationContext(), " 自定義用戶超時下線提示語");
    

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

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

    /**
     * 控制顯示歷史聊天記錄的時間范圍,最多只能顯示60天內的消息,單位(分鐘)
     * 不傳默認會顯示所有的歷史記錄
     * @param time  查詢時間(例:100-表示從現在起前100分鐘的會話)
    */
    SobotApi.setScope_time(context,time);
    

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

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

     private void customMenu(){
            //添加擴展菜單數據
            ArrayList<ChattingPanelUploadView.SobotPlusEntity> objects = new ArrayList<>();
            /**
             * SobotPlusEntity為自定義菜單實體類
             * @param iconResId 菜單圖標 drawableId
             * @param name      菜單名稱
             * @param action    菜單動作 當點擊按鈕時會將對應action返回給callback
             *                  以此作為依據,判斷用戶點擊了哪個按鈕
             */
            objects.add(new ChattingPanelUploadView.SobotPlusEntity(R.drawable.sobot_camera_picture_button_selector, "位置", "action_location"));
            objects.add(new ChattingPanelUploadView.SobotPlusEntity(R.drawable.sobot_camera_picture_button_selector, "簽到", "action_sing_in"));
            objects.add(new ChattingPanelUploadView.SobotPlusEntity(R.drawable.sobot_camera_picture_button_selector, "收藏", "action_ollection"));
            //添加數據
            SobotUIConfig.pulsMenu.menus = objects;
            //設置回調
            SobotUIConfig.pulsMenu.sSobotPlusMenuListener = new SobotPlusMenuListener() {
                @Override
                public void onClick(View view, String action) {
                    //action與實體類中的action對應
                    ToastUtil.showToast(getApplicationContext(), "action:"+action);
                }
            };
        }
    

    # 4.7.4 調起撥號界面接口

    /**
    * @param phone 是傳入的電話號碼 context 上下文對象
    */
    CommonUtils.callUp(String phone, Context context)
    

    # 4.7.5 智齒日志顯示開關

    /**
    * true 顯示日志信息 默認false不顯示
    */
    ZCSobotApi.setShowDebug(false);
    
    //2.8.5以前版本方法
    /日志顯示開關 true 打開;false 關閉;默認關閉
    LogUtils.isDebug = true;
    //日志顯示各級別開關 true 顯示;false 不顯示
    LogUtils.allowI = true;
    LogUtils.allowD = false;
    LogUtils.allowE = false;
    LogUtils.allowI = false;
    LogUtils.allowV = false;
    LogUtils.allowI = false;
    

    # 4.7.6 多語言支持

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

    如果需要新增語言包,把支持的語言文件放入對應的語言目錄下即可,例如;英文路徑:sobotsdk/src/main/res/values-en/strings.xml;

    [說明:語言文件夾名稱為values-的后面加上語言的標示,例如values-en;strings.xml名字不變]

    方式二、

     /**
         * 2.8.6 新增,使用功能需和智齒開發溝通,服務端是否有對應的語言包
         * 指定使用國際化語言包
         * 如果本地沒有指定的語言時,開始下載,下載前會檢測存儲權限,沒有權限,直接返回,使用系統權限
         *
         * @param language     指定語言名字 例如  "zh-Hans":簡體中文 "en":英文 "zh-Hant":繁體中文 "ru":俄語 "ko":韓語 "ja":日語 "ar":阿拉伯語  "th":泰國語 (2.9.0后添加)"pl":波蘭語 "vi":越南語
         * @param isUse        是否使用指定語言
         * @param isReDownload 是否重新下載語言包 true 重新下載,false 不重新下載,默認false
         */
        ZCSobotApi.setInternationalLanguage(context,language, isUse, isReDownload);
    

    服務端接口多語言指定(2.8.9版本之后支持)、

     /**
      * 支持語言: 簡體中文:zh-Hans 繁體中文:zh-Hant 英語:en 西班牙語:es 葡萄牙語:pt
      */
        info.setLocale("your language");
    

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

    //  隱藏機器人時評價標簽,默認不隱藏。 true 隱藏 ;false 顯示
    info.setHideRototEvaluationLabels(false);
    
    //  隱藏人工時評價標簽,默認不隱藏。 true 隱藏 ;false 顯示
    info.setHideManualEvaluationLabels(false);
    

    # 4.7.7 androidQ沙盒模式適配開關

    /**
    * 如果是android Q使用了沙盒模式,isAndroidQSandbox設置為true,反之設置為false
    * @param context 上下文
    * @param isAndroidQSandbox 默認為fasle
    */
    ZCSobotApi.setIsAndroidQSandbox(conttext,isAndroidQSandbox);
    

    # 4.7.8 時區適配

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

    // false 默認使用東八區時區,true 自動適配手機系統設置的時區
    ZCSobotApi.setSwitchMarkStatus(MarkConfig.AUTO_MATCH_TIMEZONE, false);
    
    

    # 4.7.9 彈出權限用途提示框

    從2.9.1版本開始支持,是否在申請權限前彈出權限用途提示框,配置如下代碼:

    // 是否在申請權限前彈出權限用途提示框,默認 false 不彈,true 彈
    ZCSobotApi.setSwitchMarkStatus(MarkConfig.SHOW_PERMISSION_TIPS_POP, false);
    
    

    # 5 Information類說明

    # id 相關:

    屬性名稱 數據類型 說明 備注
    app_key String 必須設置,不設置初始化不成功。 必填
    choose_adminid String 指定客服ID
    tranReceptionistFlag int 指定客服 轉接類型 0 可轉入其他客服 1 必須轉入指定客服
    partnerid String 用戶唯一標識 對接用戶可靠身份,不能寫死,不建議為null,如果為空會以設備區別
    robot_code String 對接機器人ID
    robot_alias String 對接機器人ID對應的別名

    電商版:

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

    屬性名稱 數據類型 說明 備注
    customer_code String 商戶對接id (僅電商版適用,如果沒有app_key,請提供此編碼)

    # 客服工作臺顯示:

    屬性名稱 數據類型 說明 備注
    user_nick String 昵稱
    user_name String 真實姓名
    user_tels String 用戶電話
    user_emails String 用戶郵箱
    qq String qq
    remark String 備注
    face String 用戶自定義頭像
    visit_title String 接入來源頁面標題
    visit_url String 接入的來源URL
    params String 用戶資料
    customer_fields String 固定KEY的自定義字段
    group_name String 技能組名稱
    groupid String 技能組編號

    # 會話頁面相關:

    屬性名稱 數據類型 說明 備注
    service_mode int 自定義接入模式 1只有機器人,2.僅人工 3.智能客服-機器人優先 4智能客服-人工客服優先
    custom_title_url String 聊天頁頂部標題 自定義圖像路徑

    # 其他:

    屬性名稱 數據類型 說明 備注
    transferaction String 轉人工 指定技能組 溢出
    summary_params String 轉人工自定義字段
    multi_params String 多輪會話 自定義字段
    margs String 熱點引導問題的擴展字段
    content String 自動發送商品訂單信息內容
    queue_first boolean 指定客戶優先
    isArtificialIntelligence boolean 是否智能轉人工,默認false
    artificialIntelligenceNum int 如果是只能轉人工,那么未知問題或者向導問題出現多少次時,顯示轉人工按鈕。默認是一次
    isUseVoice boolean 是否使用語音功能 默認true,可以使用語音功能
    isUseRobotVoice boolean 是否使用機器人語音功能 默認false,機器人不可以使用語音功能 會轉為文字
    isShowLeftBackPop boolean 左上角返回時是否彈出(您是否結束會話?) 默認false不彈
    isShowSatisfaction boolean 導航欄左側點擊返回時是否彈出滿意度評價。默認false,彈出,false不彈滿意度
    isShowCloseSatisfaction boolean 導航欄關閉按鈕關閉時是否彈出滿意度評價。默認false,彈出,false不彈滿意度。
    equipmentId String 設備編號
    tranReceptionistFlag int 轉接類型(0-可轉入其他客服,1-必須轉入指定客服)
    transferKeyWord HashSet 轉人工關鍵字

    # 6 Demo源碼

    您可以通過?點擊這里?下載 Demo 源碼; 點擊這里 下載 Demo 演示安裝包;點擊這里 下載 Demo 使用引導視頻

    # 7 常見問題鏈接

    https://github.com/ZCSDK/FAQ_Android

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