1. 使用说明

欢迎使用“AICC”的在线客服模块的移动端开发者工具套件(SDK)。我们分别为Android和iOS平台提供SDK,通过SDK,可以在您的APP中快速集成在线客服的各种功能。

2. 集成流程

下图展示在app中实现接入在线客服SDK的基本流程: image

3. 创建App接入渠道

3.1. App接入渠道创建页

登录后在左侧边栏中找到 企业配置→在线客服→渠道接入→App

image

3.2. 新增App接入渠道

点击右上角新增按钮,并根据提示新增即可

其中路由导航可以选择一个,如果没有或需要新增可以在内部侧边栏找到路由导航,然后根据文档新增

image

3.3. 新增路由导航

左侧内边栏中找到 路由导航

3.3.3. 添加机器人节点

在右侧找到机器人,往导航面板中拖动,然后按图示示例添加,也可以咨询我们销售或技术支持

image

3.3.4. 添加队列节点

在右侧找到队列,往导航面板中拖动,然后按图示示例添加,也可以咨询我们销售或技术支持

image

3.3.5. 路由导航配置完成

之后将节点链接起来保存即可,这是个简单的路由导航的配置示例,如需更复杂场景需要咨询我们销售或技术支持

image

3.4. 完成新增App接入渠道

新增App接入渠道完成后,如下图

image

4. Android开发文档

4.1. 简介

欢迎使用“智慧服务平台”的在线客服移动端开发者工具套件(SDK)。本文针对安卓端使用做详细说明,通过 SDK,可以在您的 APP 中快速集成访客端在线聊天的功能,以具备文本、图片、视频等类型消息收发。

4.2. 环境要求

name

说明

Android SDK Build-tools

21.0.0 及以上

Android SDK

Android API 21 及以上

JAVA

JDK 1.7 及以上

Gradle

3.0 及以上版本

4.3. 引入SDK

4.3.1. Maven 依赖方式

在项目根目录的 build.gradle 文件中添加如下配置

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

在主 app 的 build.gradle 文件中添加如下依赖配置

    //implementation "com.ti-net.oskit:online:1.4.4" (不再更新)
	implementation 'com.github.ti-net-project:OnlineSDK-Android:1.5.8'

其他

    //如您的应用内从未使用到以下依赖,则需要在app的 build.gradle 文件中添加如下依赖配置
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'

4.3.2. aar 依赖方式

aar下载地址: 下载

在主 app 的 build.gradle 文件中添加如下依赖配置

	api files('libs/online_sdk_1.5.8_release.aar')

4.3.3. 混淆配置

-keep class com.tinet.** { *; }

4.3.4. 权限适配

AndroidManifest.xml 中添加如下所需要的权限

<!--SD卡读写权限,发送文件、保存文件。-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--录音权限,用于录音。-->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!--拍照权限,用于拍照(发送照片)-->
<uses-permission android:name="android.permission.CAMERA"/>

<!-- 安卓11+选择文件进行发送时查看所有文件必须权限  该权限属敏感权限,如有问题请咨询SDK技术支持 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission
    android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
    tools:ignore="ProtectedPermissions" />

4.4. 初始化

4.4.1. 功能描述

SDK 需要开发者在工程中调用下面方法来初始化 SDK。在 App 的整个生命周期中,开发者只需要将 SDK 初始化一次。

4.4.2. 参数说明

参数

类型

必填

说明

context

Context

上下文对象

tOSInitOption

TOSInitOption

初始化参数 option

TOSInitOption 参数说明

参数

类型

必填

说明

accessId

String

访问标识

accessSecret

String

访问秘钥

enterpriseId

String

企业号

apiUrl

String

平台 apiUrl

onlineUrl

String

平台 onlineUrl

debug

boolean

是否开启 debug 模式

advanceParams

Map<String, Object>

自定义可配参数,可为空

4.4.3. 代码示例

说明:只需要在继承 Application 类的 onCreate 初始化一次

        TOSInitOption tOSInitOption = new TOSInitOption();
        tOSInitOption.setAccessId(accessId);
        tOSInitOption.setAccessSecret(accessSecret);
        tOSInitOption.setEnterpriseId(enterpriseId);
        tOSInitOption.setApiUrl(define.getApiUrl());
        tOSInitOption.setOnlineUrl(define.getOnlineUrl());
        tOSInitOption.setDebug(BuildConfig.DEBUG);

        TOSClientKit.initSDK(this, tOSInitOption, new TImageLoader() {
            @Override
            public void loadImage(ImageView imageView, Object uri) {
                // 加载图片,加载图片的略图,合理利用缓存
            }

            @Override
            public void loadImage(ImageView imageView, Object uri, int placeholderImg, int errorImg) {
                // 加载图片,指定加载中的图片资源和加载图片异常资源,加载图片的略图,合理利用缓存
            }

            @Override
            public void loadImage(ImageView imageView, Object uri, int originalWidth, int originalHeight, TImageLoaderListener listener) {
                // 加载图片,指定图片加载的大小,用于需要查看大图或详图

            }

            @Override
            public void loadImage(Context context, Object uri, int originalWidth, int originalHeight, TImageLoaderListener listener) {
                // 加载图片,指定图片加载的大小,用于需要查看大图或详图,且加载控件非ImageView
            }
        });

4.5. 连接

4.5.1. 功能描述

连接在线客服,同一用户多次调用 connect 不会触发多次连接

4.5.2. 参数说明

参数

类型

必填

说明

tOSConnectOption

TOSConnectOption

初始化参数 option

TOSConnectOption 参数说明

参数

类型

必填

说明

visitorId

String

用户 App 的 userID(为空的情况下,系统默认为 UUID 去除-号,不可包含中文或特殊符号,建议使用用户系统 ID 方便 APP 拓展功能)

nickname

String

昵称

headUrl

String

头像地址

mobile

String

手机号

advanceParams

Map<String, Object>

自定义可配参数

4.5.3. 代码示例

说明:只需要在继承 Application 类的 onCreate 初始化一次

        TOSConnectOption tOSConnectOption = new TOSConnectOption();
        tOSConnectOption.setVisitorId(id);
        tOSConnectOption.setNickname(nickname);
        tOSConnectOption.setHeadUrl(headerUrl);
        tOSConnectOption.setMobile(phone);
        tOSConnectOption.setAdvanceParams(extraInfo);

        TOSClientKit.connect(tOSConnectOption, new OnlineConnectResultCallback() {
            @Override
            public void onSuccess() {
            //连接成功回调
            }

            @Override
            public void onError(int errorCode, String errorDesc) {
            //连接失败回调
            }
        });

4.6. 断开连接

4.6.1. 功能描述

断开连接在线客服,当用户退出登录时调用

4.6.2. 参数说明

参数

类型

必填

说明

isReceivePush

Boolean

是否需要推送

listener

OnlineDisconnectListener

断开连接监听

4.6.3. 代码示例

        TOSClientKit.disConnect(false, null);

4.7. 消息监听

TOSClientKit.addOnlineMessageListener(new OnlineMessageListener() {
            @Override
            public void onMessage(OnlineMessage message) {
                // 收到的消息信息
            }
        });

4.8. 会话事件监听

TOSClientKit.addOnlineEventListener(new OnlineEventListener() {
            @Override
            public void chatOpen(OnlineMessage message) {
            //会话开始
            }

            @Override
            public void chatClose(OnlineMessage message) {
            //会话结束
            }

            @Override
            public void chatBridge(OnlineMessage message) {
            //接通座席
            }

            @Override
            public void chatQueue(OnlineMessage message) {
            //进入排队
            }

            @Override
            public void chatLocation(OnlineMessage message) {
            //排队位置播报
            }

            @Override
            public void chatLeaveMessage(OnlineMessage message) {
            //留言
            }

            @Override
            public void chatInvestigation(OnlineMessage message) {
            //满意度
            }

            @Override
            public void robotBridge(OnlineMessage message) {
            //接通机器人
            }

            @Override
            public void withdraw(String messageId) {
            //座席撤回消息
            }

            @Override
            public void chatSwitch(OnlineMessage message) {
            //分支节点
            }

            @Override
            public void chatLeadingWords(OnlineMessage message) {
            //引导语消息
            }

            @Override
            public void chatInquiry(OnlineMessage message) {
            //询前表单消息
            }

            @Override
            public void chatResponse(OnlineMessage message) {
            //消息发送响应
            }
        });

4.9. 会话界面

说明:TOSClientKit 已经实现了一个默认的会话视图界面,直接使用此类,即可快速启动和使用聊天界面。 注:只有 TOSClientKit 调用 connect 成功时,才可进入客服会话聊天界面

4.9.1. 集成客服会话

集成客服 fragment(即 SessionFragment),建议实现自己的 Fragment 继承 SessionFragment,可实现高度自定义。 如下代码:

SessionFragment sessionFragment = new SessionFragment();
sessionFragment.setArguments(getIntent().getExtras());
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.container, sessionFragment);
transaction.commitAllowingStateLoss();

4.10. 修改UI配置

4.10.1. xml修改示例

colors.xml 可修改项

<!--  ++++++++++++++ 聊天背景设置 ++++++++++++++  -->
<!--聊天背景颜色-->
<color name="ti_session_background_color">#FFF2F6FD</color>
<!--  ++++++++++++++ 聊天消息样式设置 ++++++++++++++  -->
<!--昵称文字颜色-->
<color name="ti_nickname_text_color">#FF595959</color>
<!--发送端气泡背景颜色-->
<color name="ti_send_bubble_background_color">#D5E1F7</color>
<!--发送端文字颜色-->
<color name="ti_send_msg_text_color">@color/ti_dark</color>
<!--发送端超链接文字颜色-->
<color name="ti_send_super_line_text_color">#1366dc</color>
<!--接收端文字颜色-->
<color name="ti_receive_msg_text_color">@color/ti_dark</color>
<!--接收端超链接文字颜色-->
<color name="ti_receive_super_line_text_color">#1366dc</color>
<!--接收端气泡背景颜色-->
<color name="ti_receive_bubble_background_color">@android:color/white</color>
<!--猜你所想-->
<color name="ti_guess_text_color">#FAAD14</color>
<!--排队文字颜色-->
<color name="ti_line_up_text_color">@color/ti_blue</color>
<!--会话提示字体颜色-->
<color name="ti_tips_text_color">#FF595959</color>
<!--会话提示气泡颜色-->
<color name="ti_tips_bubble_bg_color">#a6ffffff</color>
<!--时间字体颜色-->
<color name="ti_msg_time_color">#FF8C8C8C</color>
<!--富文本视频播放器的背景-->
<color name="ti_rich_video_bg_color">#80000000</color>
<!--富文本视频播放器进度条的背景色-->
<color name="ti_rich_video_progress_bg_color">#4D000000</color>
<!--富文本视频播放器进度条的前景色-->
<color name="ti_rich_video_foreground_color">@color/ti_white</color>
<!--满意度文字颜色选中-->
<color name="satisfaction_select_text_color">#FAAD14</color>
<!--满意度文字颜色未选-->
<color name="satisfaction_unselected_text_color">#595959</color>
<!--满意度标签文字颜色选中-->
<color name="satisfaction_label_select_text_color">#FAAD14</color>
<!--满意度标签文字颜色未选-->
<color name="satisfaction_label_unselected_text_color">#8C8C8C</color>
<!--满意度标签文字颜色选中边框线颜色-->
<color name="satisfaction_label_select_border_color">#FAAD14</color>
<!--满意度标签文字颜色未选边框线颜色-->
<color name="satisfaction_label_unselected_border_color">#D9D9D9</color>
<!--满意度标签文字颜色选中背景色-->
<color name="satisfaction_label_select_color">#30FAAD14</color>
<!--满意度标签文字颜色未选背景色-->
<color name="satisfaction_label_unselected_color">#30D9D9D9</color>
<!--满意度提交文字-->
<color name="satisfaction_submit_tv_color">#4385FF</color>
<!--满意度提交背景色-->
<color name="satisfaction_submit_bg">#4385FF</color>
<!--  ++++++++++++++  输入栏设置 ++++++++++++++  -->
<!--输入区域背景颜色-->
<color name="ti_input_area_bg_color">#F5F7F9</color>
<!--聊天输入框文字颜色-->
<color name="ti_input_box_text_color">#FF262626</color>
<!--聊天输入框边框线颜色-->
<color name="ti_input_box_border_color">#F3F6F7</color>
<!--聊天输入框背景色-->
<color name="ti_input_box_bg_color">#ffffff</color>
<!--输入区域按住录音按钮文字颜色-->
<color name="ti_input_area_voice_press_text_color">#7E7E7E</color>
<!--输入区域按住录音按钮抬起背景颜色-->
<color name="ti_input_area_voice_press_up_bg_color">#ffffff</color>
<!--输入区域按住录音按钮按下背景颜色-->
<color name="ti_input_area_voice_press_bg_color">#ffe5e5e5</color>
<!--输入区域按住录音pop提示文字颜色-->
<color name="ti_input_area_voice_press_hint_text_color">#A6FFFFFF</color>
<!--输入区发送按钮背景颜色-->
<color name="ti_send_btn_bg_color">#FF4385FF</color>
<!--输入区发送按钮字体颜色-->
<color name="ti_send_btn_text_color">#ffffff</color>
<!--拓展面板条目背景颜色-->
<color name="ti_session_func_item_bg_color">#ffffff</color>
<!--扩展面板条目文字颜色-->
<color name="ti_session_func_item_text_color">#8B8F9D</color>
<!--  ++++++++++++++ 快捷入口设置 ++++++++++++++  -->
<!--快捷入口标签字体颜色-->
<color name="ti_quick_entry_text_color">#000000</color>
<!--快捷入口标签背景色-->
<color name="ti_quick_entry_bg_color">#F3F6F7</color>
<!--快捷入口底部背景色-->
<color name="ti_quick_entry_rv_bg_color">#ffffff</color>
<!--  ++++++++++++++ 商品卡片设置 ++++++++++++++  -->
<!--商品卡片一发送按钮背景色-->
<color name="ti_commodity_card_bg_color">#4384ff</color>
<!--商品卡片一发送文字颜色-->
<color name="ti_commodity_card__color">#ffffff</color>
<!--聊天接受商品卡片分割线颜色-->
<color name="ti_msg_card_receive_dividing_line_color">#80000000</color>
<!--聊天发送商品卡片分割线颜色-->
<color name="ti_msg_card_send_dividing_line_color">#80000000</color>
<!--聊天接受商品卡片描述颜色-->
<color name="ti_msg_card_receive_text_color">#80000000</color>
<!--聊天发送商品卡片描述颜色-->
<color name="ti_msg_card_send_text_color">#80000000</color>
<!--聊天文件名颜色-->
<color name="ti_msg_receive_filename_text_color">@color/ti_send_bubble_background_color</color>
<!--  ++++++++++++++ 选择图片页面 ++++++++++++++  -->
<!--相册导航栏背景色-->
<color name="ti_album_navigation_bar_background">#ffffff</color>
<!--相册导航栏文字颜色-->
<color name="ti_album_navigation_bar_ext">#303030</color>
<!--相册导航栏确定按钮背景色-->
<color name="ti_send_picture_button_bg">#4385ff</color>

dimen 可修改项

<!--  ++++++++++++++ 聊天消息样式设置 ++++++++++++++  -->
<!--头像大小-->
<dimen name="ti_chat_avatar_size">40dp</dimen>
<!--头像与消息气泡的间距-->
<dimen name="ti_chat_avatar_message_spacing">8dp</dimen>
<!--头像与消息气泡的间距-->
<dimen name="ti_chat_avatar_screen_spacing">8dp</dimen>
<!--  头像圆角弧度  -->
<dimen name="ti_chat_avatar_radius">4dp</dimen>
<!--昵称文字大小-->
<dimen name="ti_chat_username_text_size">13sp</dimen>
<!--发送端文字大小-->
<dimen name="ti_send_bubble_text_size">16sp</dimen>
<!--接收端文字大小-->
<dimen name="ti_receive_bubble_text_size">16sp</dimen>
<!--聊天气泡背景圆角弧度-->
<dimen name="ti_msg_bubble_background_corner">10dp</dimen>
<!--消息的最大限制宽度-->
<dimen name="ti_message_max_width">260dp</dimen>
<!--图片消息的默认高度-->
<dimen name="ti_msg_img_height">195dp</dimen>
<!--富文本视频播放器的宽-->
<dimen name="ti_rich_video_width">150dp</dimen>
<!--富文本视频播放器的高-->
<dimen name="ti_rich_video_height">180dp</dimen>
<!--会话提示文字大小-->
<dimen name="ti_notification_size">12sp</dimen>
<!--时间文字大小-->
<dimen name="ti_time_size">12sp</dimen>
<!--富文本消息之间的默认空格大小-->
<dimen name="ti_msg_html_divider">4dp</dimen>
<!--  ++++++++++++++ 输入栏样式设置 ++++++++++++++  -->
<!--输入框行高-->
<dimen name="ti_input_box_high_line_height">24dp</dimen>
<!--输入框文字大小-->
<dimen name="ti_input_box_text_size">16sp</dimen>
<!--输入框、录音按钮最小高度-->
<dimen name="ti_input_box_min_height">40dp</dimen>
<!--输入框边框大小-->
<dimen name="ti_input_box_border_width">1dp</dimen>
<!--输入框边框圆角弧度-->
<dimen name="ti_input_box_corner_radius">5dp</dimen>
<!--输入区域语音,表情,"+"图标大小-->
<dimen name="ti_input_area_icon_size">36dp</dimen>
<!--输入区域按住录音按钮文字大小-->
<dimen name="ti_input_area_voice_press_text_size">14sp</dimen>
<!--输入区域按住录音按钮边框大小-->
<dimen name="ti_input_area_voice_press_border_width">1dp</dimen>
<!--输入区域按住录音按钮圆角弧度-->
<dimen name="ti_input_area_voice_press_corner_radius">5dp</dimen>
<!--输入区发送按钮背景圆角弧度-->
<dimen name="ti_send_btn_bg_corner_radius">8dp</dimen>
<!--拓展面板条目底层背景圆角弧度-->
<dimen name="ti_session_func_item_bg_corner_radius">15dp</dimen>
<!--扩展面板条目背景大小-->
<dimen name="ti_session_func_item_bg_size">56dp</dimen>
<!--扩展面板条目图片大小-->
<dimen name="ti_session_func_item_img_size">32dp</dimen>
<!--扩展面板条目文字大小-->
<dimen name="ti_session_func_item_text_size">12sp</dimen>
<!--发送按钮高-->
<dimen name="ti_send_out_high">40dp</dimen>
<!--发送按钮宽-->
<dimen name="ti_send_out_wide">62dp</dimen>
<!--满意度标签圆角-->
<dimen name="satisfaction_label_radius">5dp</dimen>
<!--满意度标签高-->
<dimen name="satisfaction_label_high">35dp</dimen>
<!--满意度提交按钮圆角-->
<dimen name="satisfaction_submit_radius">5dp</dimen>
<!--  ++++++++++++++ 快捷入口设置 ++++++++++++++  -->
<!--快捷入口内容距边框区域垂直间距-->
<dimen name="ti_quick_entry_vertical_spec">10dp</dimen>
<!--快捷入口文字大小-->
<dimen name="ti_quick_entry_item_text_size">13sp</dimen>
<!--快捷入口标签背景圆角弧度-->
<dimen name="ti_quick_entry_item_corner_radius">10dp</dimen>
<!--快捷入口标签水平间距-->
<dimen name="ti_quick_entry_item_horizontal_spacing">10dp</dimen>
<!--  ++++++++++++++ 商品卡片设置 ++++++++++++++  -->
<!--商品卡片一图片大小-->
<dimen name="ti_msg_img_one">60dp</dimen>
<!--商品卡片一发送按钮背景圆角-->
<dimen name="ti_commodity_card_file">30dp</dimen>
<!--商品卡片一发送文字大小-->
<dimen name="ti_commodity_card_size">14sp</dimen>
<!--商品卡片订单号、日期文字大小-->
<dimen name="ti_message_tv_size">12sp</dimen>
<!--商品卡片二图片大小-->
<dimen name="ti_message_img">80dp</dimen>

string.xml 可修改项

<!--录音按钮文案-->
  <string name="ti_pressed_speak">按住说话</string>
  <!--发送消息按钮文案-->
  <string name="ti_send">发送</string>
  <!--会话页面输入框hint文案-->
  <string name="ti_input_box_hint_text">请输入内容</string>
  <!--选择图片页面标题-->
  <string name="ti_camera">相册</string>

4.10.2. 代码修改示例

说明:只需要在继承 Application 类的 onCreate 初始化一次

       //以下自定义界面为UI配置代码实现
       TCustomizationUI tCustomizationUI = new TCustomizationUI();//自定义UI对象
       tCustomizationUI.sendBubbleBackground = R.drawable.ti_bg_color;//发送端气泡背景
       tCustomizationUI.receiveBubbleBackground = R.drawable.ti_bg_color;//接收端气泡背景
       tCustomizationUI.sendBubbleBackgroundColor = getResources().getColor(R.color.ti_red);//发送端气泡背景颜色
       tCustomizationUI.receiveBubbleBackgroundColor = getResources().getColor(R.color.ti_red);//接收端气泡背景颜色
       //聊天背景颜色
       tCustomizationUI.sessionBackgroundColor = getResources().getColor(R.color.ti_session_func_item_text_color);
       tCustomizationUI.msgTimeColor = getResources().getColor(R.color.ti_guess_text_color);//时间字体文字颜色
       tCustomizationUI.inputAreaBgColor = getResources().getColor(R.color.ti_guess_text_color);//输入区域背景颜色
       //输入区域按住录音按钮文字颜色
       tCustomizationUI.inputAreaVoicePressTextColor = getResources().getColor(R.color.ti_guess_text_color);
       tCustomizationUI.inputBoxHintText = "hint_text";//会话页面输入框hint文案
       tCustomizationUI.chatAvatarRadius = R.dimen.fab_margin;//头像圆角弧度

    	 tCustomizationUI.showVisitorNickname = false;//访客昵称
       tCustomizationUI.showVisitAvatar = false;//访客头像
       tCustomizationUI.showAgentRobotNickname = false;//客服、机器人昵称
       tCustomizationUI.showAgentRobotAvatar = false;//客服、机器人头像
       tCustomizationUI.showVoiceButton = false;//语音按钮


        // : 2022/10/13 以下为配置文本消息含超链接高亮显示规则
        List<TTextPatternRule> tTextPatternRules = new ArrayList<>();
        tTextPatternRules.add(
                new TTextPatternRule(Pattern.compile("这里填正则表达式", Pattern.CASE_INSENSITIVE),//正则Pattern变量,是否忽略大小写可自行修改compile第二个参数
                        Color.parseColor("#1366dc"),//高亮显示颜色int值,可自行修改为所需颜色
                        "phoneNumber"));//类型说明,用于onLinkClick方法内回调messageEventType,区分匹配类型


       TOSClientKitConfig tosClientKitConfig = new TOSClientKitConfig.Builder()
                .setTCustomizationUI(tCustomizationUI)//配置自定义UI
                .setTextHighLightRuleList(tTextPatternRules)//配置文本消息含超链接高亮显示规则数组
                .build();

       TOSClientKit.setTosClientKitConfig(tosClientKitConfig);

4.11. 会话界面相关操作

4.11.1. 会话状态监听

TOSClientKit.setOnlineStatusListener(new OnlineMessageManager.OnlineStatusListener() {
            @Override
            public void onStatusChanged(int status) {
                //当前状态
            }
        });

4.11.2. 会话内消息事件监听

请继承 SessionFragment 来实现

@Override
protected SessionClickListener getListener() {
   return new SessionClickListenerImpl(this){

            @Override
            public void onClick(View itemView, OnlineMessage message) {
                super.onClick(itemView,message);
                //消息点击事件
            }

            @Override
            public void onLinkClick(String url) {
                //super.onLinkClick(url);
                //屏蔽super,可实现自定义超链接点击事件
            }

            /**
            *
            * @param content          点击文本内容
            * @param messageEventType 文本类型
            */
            @Override
            public void onLinkClick(String content, String messageEventType) {
                //可根据messageEventType实现自有业务逻辑
            }

            @Override
            public void videoPlay(String url) {
                super.videoPlay(url);
                //自定义视频播放,如果需要自己实现视频播放,则需要屏蔽super.videoPlay(url);父类的实现方式
            }

            @Override
            public void downloadFile(String url, String name) {
                super.downloadFile(url, name);
               //下载文件回调,屏蔽super可自定义而下载功能
            }

            /**
             *
             * @param permissions
             * @param requestCode
             *   申请语音权限                1661
             *   申请相机权限                1662
             *   申请相机、语音权限 -- 拍摄    1663
             *   申请文件权限 -- 文件         1664
             *
             */
            @Override
            public void onStartRequestPermissionsCallback(@NonNull String[] permissions, int requestCode) {
                super.onStartRequestPermissionsCallback(permissions, requestCode);
                // : 2022/9/19 权限申请回调
                TLogUtils.i("onStartRequestPermissionsCallback:" + requestCode);
            }

        };
    }

4.11.3. 拓展面板功能

请继承 SessionFragment 来实现

 @Override
    protected FuncListener getFuncListener() {
        // 自定义底部功能栏

        return new FuncListenerImpl(this){
            @Override
            public void onFuncClick(Function func) {
                super.onFuncClick(func);
               //拓展面板Item点击回调
            }
        };
    }

4.11.4. 快捷入口功能

ArrayList message = new ArrayList<>();
message.add(new LabeInfo("订单号", "1234567890"));
message.add(new LabeInfo("服务地区", "北京市"));
message.add(new LabeInfo("服务", "满意"));
message.add(new LabeInfo("师傅", "金师傅"));
message.add(new LabeInfo("产品类型", "电子产品"));
message.add(new LabeInfo("师傅电话", "12345678900"));
message.add(new LabeInfo("订单状态", "已完成"));

//更新快捷入口可实时更新至会话窗体
TOSClientKit.updateSessionWindowQuickEntrys(message);

//清空快捷入口数据
TOSClientKit.clearSessionWindowQuickEntrys();

//快捷入口的点击回调
//请继承SessionFragment来实现
@Override
protected LabelListener getLabelListener() {
    return new LabelListenerImpl(this) {
        @Override
        public void onLabelClick(LabeInfo info) {
            super.onLabelClick(info);
            Toast.makeText(requireContext(), info.toString(), Toast.LENGTH_SHORT).show();
        }
    };
}

4.11.5. 商品卡片功能

商品卡片数据可以通过 argument 传递到会话窗体,参数名:tinetCard,可直接引用 SessionFragment.ARGS_CARD,参数实体为 CardInfo。

//定义CardInfo,卡片实体
CardInfo message = new CardInfo();
message.setSubTitle("华为P40麒麟990 5G SoC芯片 5000万超感知徕卡三摄 30倍数字变焦");
message.setDescription("这是商品描述,啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦");
message.setImg(
            "https://img1.baidu.com/it/u=1963848283,2056721126&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500");
message.setPrice("¥ 100.99");
message.setTime(TimeUtils.getDate(System.currentTimeMillis()));
message.setStatus("已到货");

HashMap<String, String> extraInfo = new HashMap<>();
extraInfo.put("订单号", "1234567890");
extraInfo.put("服务地区", "北京市");
extraInfo.put("服务", "满意");
extraInfo.put("师傅", "金师傅");
extraInfo.put("产品类型", "电子产品");
extraInfo.put("师傅电话", "12345678900");
extraInfo.put("订单状态", "已完成");
message.setExtraInfo(extraInfo);

//传递至会话窗体
intent.putExtra(ChatFragment.ARGS_CARD,message);

4.12. 会话相关接口

4.12.1. 获取会话当前在线状态

代码示例

    /**
     * 获取当前在线状态
     *
     * @return 0:不在线(会话结束)  1:机器人   2:人工座席
     */
     TOSClientKit.getCurrentOnlineStatus()

4.12.2. 获取当前会话信息

代码示例

    /**
     * 获取当前会话信息
     *
     * @return SessionInfo
     */
     TOSClientKit.getCurrentSessionInfo()

返回参数SessionInfo说明

参数

类型

说明

mainUniqueId

String

会话 ID

startTime

String

会话开始时间

status

int

会话状态(新打开 1;路由中 2;排队中 3;接通座席 4;留言中 5;满意度 6;关闭 7;接通机器人 8;座席主动发起会话 9;)

enterpriseId

String

企业 id

visitorId

String

访客 id

4.12.3. 获取会话最后一条消息信息

代码示例

     TOSClientKit.getLastMessageInfo(visitorId, new OnLastMessageResult() {
            @Override
            public void onLastMessage(int unreadCount, String lastMessage) {

            }
        });

返回参数说明

参数

类型

说明

unreadCount

String

未读数

lastMessage

String

最后一条消息

4.13. 其他

4.13.1. 获取版本号

代码示例

    /**
     * 获取SDK版本号
     *
     * @return 版本号字符串
     */
     TOSClientKit.getSDKVersion()

4.14. 附加说明

4.14.1. 会话详情

字段名

字段类型

字段描述

备注

mainUniqueId

String

会话 ID

startTime

long

会话开始时间

status

int

当前会话状态

暂未使用

enterpriseId

String

企业 id

visitorId

String

访客 id

4.14.2. 在线状态

字段名

字段类型

字段描述

备注

STATUS_OUTLINE

int

不在线(会话结束)

STATUS_ROBOT

int

机器人在线

STATUS_ONLINE

int

人工座席

4.14.3. 消息

消息类型

objectName

描述

文本消息

TextMessage

文本消息(包含表情)

图片消息

ImageMessage

图片消息

语音消息

VoiceMessage

语音消息

视频消息

VideoMessage

视频消息

文件消息

FileMessage

文件消息

4.14.4. 消息类型

参数名

参数值

说明

TEXT

1

文本消息

IMAGE

2

图片消息

FILE

3

文件消息

VIDEO

4

视频消息

ROBOT_HTML

5

机器人富文本消息

ROBOT_CHOOSE

6

机器人选项消息

VOICE

7

语音消息

KNOW_LEDGE

8

知识库文件消息

CARD

10

卡片消息

ROBOT_GROUP

14

机器人组合消息

ROBOT_ABOUT_QUESTION

15

机器人相关问题

ROBOT_GUESS_QUESTION

16

机器人猜你想问

ROBOT_COMMON_QUESTION

17

机器人常见问题

ROBOT_APPROX_QUESTION

18

机器人近似问题

ROBOT_COMMENT_QUESTION

19

机器人推荐问题

ROBOT_COMMON_QUESTION_CLASSIC

20

机器人常见问题(分类)

4.14.5. 消息发送状态

参数名

参数值

说明

NORMAL

1

正常

SENSITIVE_WORD

2

包含敏感词

REVOKE

3

已被撤回

4.14.6. 消息状态

参数名

参数值

说明

MSG_STATUS_SEND_FAIL

-1

消息发送失败状态

MSG_STATUS_SENDING

0

消息发送中状态

MSG_STATUS_SEND_SUCCESS

1

消息已发送状态

4.14.7. 事件

参数名

参数值

说明

CHAT_MESSAGE

chatMessage

聊天消息

CHAT_BRIDGE

chatBridge

接通座席

CHAT_CLOSE

chatClose

关闭座席

CHAT_LEAVE_MESSAGE

chatLeaveMessage

留言消息

ROBOT_BRIDGE

robotBridge

接通机器人

CHAT_OPEN

chatOpen

会话开始

CHAT_QUEUE

chatQueue

进入排队

CHAT_LOCATION

chatLocation

排队位置播报

CHAT_INVESTIGATION

chatInvestigation

满意度

WITHDRAW

withdraw

座席撤回消息

CHAT_SWITCH

chatSwitch

分支节点

CHAT_LEADING_WORDS

chatLeadingWords

引导语

CHAT_INQUIRY

chatInquiry

询前表单

CHAT_OFFLINE

chatOffline

访客离线

CHAT_ONLINE

chatOnline

访客上线

CHAT_LEAVE_QUEUE

chatLeaveQueue

访客退出排队

CHAT_SWITCH_NEXT

chatSwitchNext

访客选择节点

CHAT_SUBMIT_INVESTIGATION

chatSubmitInvestigation

访客提交满意度

CHAT_SUBMIT_INQUIRY

chatSubmitInquiry

访客提交询前表单

4.14.8. 初始化参数说明

参数

类型

说明

accessId

String

移动端唯一标识,对应座席端渠道 ID

accessSecret

String

加密信息

enterpriseId

String

企业 ID

mPlatformDefine

PlatformDefine

平台,提供北京、上海和测试三个平台,也可以自定义平台

debug

Boolean

是否为 debug 模式,debug 模式下可以输出日志信息

4.14.9. 消息发送人类型

消息发送人类型封装在类 OnlineMessageSenderType 类中。

参数名

参数值

说明

ONLINE

1

座席

VISITOR

2

访客

SYSTEM

3

系统

ROBOT

4

机器人

NOTIFY

5

系统通知

4.14.10. 消息状态

系统支持的消息状态封装在 TMessageStatus 类中。

参数名

参数值

说明

MSG_STATUS_SEND_FAIL

-1

消息发送失败状态

MSG_STATUS_SENDING

0

消息发送中状态

MSG_STATUS_SEND_SUCCESS

1

消息已发送状态

4.14.11. 商品卡片消息

参数名

参数类型

说明

title

String

卡片消息标题

subTitle

String

卡片消息副标题

description

String

卡片消息的描述,例如商品的简单描述

price

String

商品卡片的价格

time

String

卡片消息的时间,例如订单的生成时间

img

String

卡片消息的图片地址,例如商品的图片地址

url

String

卡片消息详情,例如商品的详情页

subUrl

String

卡片消息详情副地址

buttonText

String

按钮文本内容

status

String

商品状态

extraInfo

HashMap<String, String>

额外信息

extraData

String

额外信息

5. iOS开发文档

5.1. 简介

欢迎使用“智慧服务平台”的在线客服移动端开发者工具套件(SDK)。本文针对iOS端使用做详细说明,通过SDK,可以在您的APP中快速集成访客端在线聊天的功能,以具备文本,图片、视频等类型消息收发及消息通知能力,

5.2. 集成准备

5.2.1. 注册账号

请先确保已注在线客服账号

5.2.2. 开发环境

适配iOS 10.0以上

开发工具:Xcode 13

5.2.4. SDK文件说明

解压下载【iOS_SDK】,下载完为一个压缩包,包含TOSCilentLib.framework、TOSCilentKit.framework、TOSClinet.bundle和相关说明文档。

文件名

说明

TOSClinetKit.framework

SDK UI Kit

TOSClient.bundle

图片资源文件 表情资源文件

TOSCilentLib.framework

SDK Lib

5.2.5. 自动导入

  1. cd 至项目根目录。

  2. 执行 vim podfile

  3. Podfile 文件中,添加以下内容

    ```objective-c
    pod 'TOSClientKit'
    ```
  4. 执行 pod install。如果出现找不到相关版本的问题,可先执行 pod repo update ,再执行 pod install

5.2.6. 手动导入SDK和添加依赖库

把下载的TOSClinetKit.framework 、TOSClientLib.framework、TOSClient.bundle文件夹中的文件拖入你的工程里。 iOS_SDK 的实现,依赖了一些系统的框架,在开发应用时需要在工程里加入这些框架 ( TOSClientLib不包含UI界面,可根据接口自行开发功能 ) 。开发者首先点击工程右边的工程名,然后在工程名右边依次选择 TARGETS → BuiLd Phases → Link Binary With Libraries,展开 LinkBinary With Libraries 后点击展开后下面的 + 来添加下面的依赖项:

- TOSClientLib.framework(Embed & Sign)
- TOSClientKit.framework(Embed & Sign)
- TOSClient.bundle
- 另外需要增加libc++.tbd来支持c++环境

5.2.7. 配置需要的权限

相机、麦克风、相册等权限

 Privacy - Camera Usage Description
 Privacy - Microphone Usage Description
 Privacy - Photo Library Additions Usage Description
 Privacy - Photo Library Usage Description

5.2.8. 注意事项

  • 在APP的 Info.plist 文件中增加 CFBundleDisplayName,value值为APP名称

  • 在会话页面中关闭键盘管理的第三方控件,如:IQKeyboardManager

  • 如有需要,可在跳转会话页面前设置会话页面的titleName属性,修改顶部标题

5.3. 快速集成

5.3.1. 启动SDK

客服SDK提供了一套完整的聊天界面,帮助开发者快速集成,并提供自定义接口,以实现定制需求。只需以下几行代码便可快速启动SDK应用。

  • 请在链接客服服务成功后再调起会话页面

TOSInitOption 参数说明

参数

类型

必填

说明

accessId

NSString

访问标识(后台创建账号时获取,移动端唯一标识,对应座席端渠道ID)

accessSecret

NSString

访问秘钥(后台创建账号时获取,在座席端管理平台创建渠道时生成)

enterpriseId

NSString

企业号(后台创建账号时获取,企业ID)

apiUrl

NSString

平台apiUrl(接口环境平台)

onlineUrl

NSString

平台onlineUrl

debug

BOOL

是否开启debug模式

advanceParams

NSDictionary

自定义可配参数,可为空

首先在AppDelegate中初始化SDK的Option
TOSInitOption * initOption = [[TOSInitOption alloc] initWithOption:YES
                             apiUrl:@"平台apiUrl"
                          onlineUrl:@"平台onlineUrl"
                           accessId:@"移动端唯一标识,对应座席端渠道ID"
                       accessSecret:@"在座席端管理平台创建渠道时生成"
                       enterpriseId:@"企业ID"
                      advanceParams:@{}];
[[TOSClientKit sharedTOSKit] initSDK:initOption];

5.4. 链接服务

5.4.1. 功能描述

连接在线客服,同一用户多次调用connect不会触发多次连接

TOSConnectOption 参数说明

参数

类型

必填

说明

visitorId

NSString

用户App的userID(为空的情况下,系统默认为UUID去除-号,不可包含中文或特殊符号(-),建议使用用户系统ID方便APP拓展功能)

nickname

NSString

昵称

headUrl

NSString

头像地址

mobile

NSString

手机号

advanceParams

NSDictionary

自定义可配参数

TOSConnectOption * connectOption = [[TOSConnectOption alloc] initWithOption:@"用户App的userID"
																	 nickname:@"昵称"
																	 headUrl:@"头像地址"
																	 mobile:@"手机号"
																	 advanceParams:@{}];
[[TOSClientKit sharedTOSKit] connect:connectOption success:^{

    } error:^(TIMConnectErrorCode errCode, NSString * _Nonnull errorDes) {

    } tokenIncorrect:^{

}];

5.5. 断开链接

5.5.1. 功能描述

断开连接在线客服,当用户退出登录时调用

TOSDisConnectOption 参数说明

| 参数 | 类型 | 必填 | 说明 | isReceivePush | BOOL | 是 | 是否需要推送

TOSDisConnectOption *disOption = [[TOSDisConnectOption alloc] initWithOption:YES];
[[TIMClient sharedTIMClient] disconnect:disOption success:^{

} error:^(TIMConnectErrorCode errCode, NSString * _Nonnull errorDes) {

}];

5.6. 全局自定义配置

  // 本地kit一些配置
  [TOSClientKit sharedClientKit].disableMessageNotificaiton = YES;  // 取消本地推送
  [TOSClientKit sharedClientKit].disableMessageAlertSound = YES;    // 取消本地推送声音

5.6.1. 获取版本号

// 获取版本号
[TOSClientKit getSDKVersion];

5.7. 会话相关

5.7.1. 获取会话信息

TOSSessionInfoModel 参数说明

参数

类型

必填

说明

enterpriseId

NSString

企业号

mainUniqueId

NSString

会话ID

startTime

NSNumber

时间戳

status

NSNumber

会话状态,详情见TinetChatStatusType说明

visitorId

NSString

当前用户ID

TOSSessionInfoModel *model = [[TOSClientKit sharedTOSKit] getCurrentSessionInfo];

5.7.2. 客服会话页面

NS_ASSUME_NONNULL_BEGIN

@interface ChatInfoViewController : TOSCustomerChatVC

@end

5.7.3. 文本类型消息中关于链接、单号和手机号的相关点击回调

  • 此方法需要在TOSCustomerChatVC类的子类中实现

typedef NS_ENUM(NSUInteger, TinetClickTextMessageEventType) {
    TinetClickEventTypeUrl,					      // 链接
    TinetClickEventTypeOrderNumber,				// 订单号
    TinetClickEventTypePhone,			  	   // 手机号
    TinetClickCommodityCard,						 // 商品卡片
};

/// 文本类型消息中关于链接、商品卡片、订单号和手机号的相关点击回调
/// @param eventType 事件类型
/// @param userInfo  详细信息
- (void)tinet_textMessageClickAction:(TinetClickTextMessageEventType)eventType userInfo:(NSDictionary *)userInfo;

5.7.4. 会话状态监听

  • 此方法需要在TOSClientKitCustomerChatVC类的子类中实现

typedef NS_ENUM(NSUInteger, TinetChatStatusType) {
    TinetChatStatusTypeOutline,   // 不在线或结束会话
    TinetChatStatusTypeRobot,     // 机器人在线
    TinetChatStatusTypeOnline,    // 客服在线
};

/// @param status  会话状态
/// 当前会话状态监听
- (void)chatStatusChanged:(TinetChatStatusType)status;

5.7.5. 获取未读数和最后一条消息

  /**
   未读消息获取
  */
	[[TOSClientKit sharedTOSKit] getUnreadMessage:^(NSString * _Nonnull lastMessage, NSInteger unreadCount) {
        NSLog(@"未读数:%@, 最后一条消息:%@", unreadCount, lastMessage);
    } withError:^(NSString * _Nonnull errorStr) {
        /// 错误提示
    }];

  // 未读数的更新  接收通知
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(unreadMessage:) name:KTOSClientLibLastMessageReceivedNotification object:nil];

5.8. 自定义UI配置

5.8.1. TOSKitCustomInfo 自定义UI类说明

/// 初始化
+ (TOSKitCustomInfo *)shareCustomInfo;

/// 快速入口Item的圆角弧度
@property (nonatomic, assign) CGFloat quickEntryItem_cornerRadius;

/// 发送方气泡的颜色
@property (nonatomic, strong) UIColor *senderBubble_backGround;
/// 发送方气泡的圆角弧度
@property (nonatomic, assign) CGFloat senderBubble_cornerRadius;

/// 头像的圆角弧度
@property (nonatomic, assign) CGFloat portrait_cornerRadius;

/// 聊天背景颜色
@property (nonatomic, strong) UIColor *chat_backGround;

/// 快速入口Item的背景颜色
@property (nonatomic, strong) UIColor *quickEntryItem_backgroundColor;

/// 接收方气泡的颜色
@property (nonatomic, strong) UIColor *receiveBubble_backGround;
/// 接收方气泡的圆角弧度
@property (nonatomic, assign) CGFloat receiveBubble_cornerRadius;

/// 快速入口底部的背景颜色
@property (nonatomic, strong) UIColor *quickEntryBottom_backgroundColor;

/// 接收方字体颜色
@property (nonatomic, strong) UIColor *receiveText_Color;

/// 发送方字体颜色
@property (nonatomic, strong) UIColor *senderText_Color;

/// 聊天底部输入中的语音按钮控制
@property (nonatomic, assign) BOOL ChatBox_voiceButton_enable;

/// 聊天底部输入中文本输入框的暗文设置
@property (nonatomic, strong) NSString *ChatBox_textview_placeholder;

/// 聊天底部背景颜色
@property (nonatomic, strong) UIColor *ChatBox_backGroundColor;

/// 聊天底部中线条颜色
@property (nonatomic, strong) UIColor *ChatBox_lineColor;

/// 聊天中显示的时间字体颜色
@property (nonatomic, strong) UIColor *Chat_time_textColor;

/// 启用或关闭客服或机器人昵称的显示
@property (nonatomic, assign) BOOL Chat_tosRobotName_show;

/// 启用或关闭访客昵称的显示
@property (nonatomic, assign) BOOL Chat_visitorName_show;

/// 启用或关闭客服昵称(机器人昵称)UI区域的显示
@property (nonatomic, assign) BOOL Chat_tosRobotName_enable;

/// 启用或关闭访客昵称UI区域的显示
@property (nonatomic, assign) BOOL Chat_visitorName_enable;

/// 启用或关闭客服和机器人头像UI区域的显示
@property (nonatomic, assign) BOOL Chat_tosRobot_portrait_enable;

/// 启用或关闭访客头像UI区域的显示
@property (nonatomic, assign) BOOL Chat_visitor_portrait_enable;

/// 相册展示导航栏中的文字颜色
@property (nonatomic, strong) UIColor *imagePicker_barItemTextColor;

/// 相册展示导航栏中的背景颜色
@property (nonatomic, strong) UIColor *imagePicker_naviBgColor;

/// 吐司提示气泡背景颜色
@property (nonatomic, strong) UIColor *Toast_backGroundColor;

/// 吐司提示中文字颜色
@property (nonatomic, strong) UIColor *Toast_textColor;

/// 语音按钮中文字颜色
@property (nonatomic, strong) UIColor *VoiceButton_textColor;

/// 语音按钮中文字高亮颜色
@property (nonatomic, strong) UIColor *VoiceButton_highlight_textColor;

示例代码:
[TOSKitCustomInfo shareCustomInfo].senderBubble_backGround = [UIColor redColor];

5.8.2. 商品卡片示例

 // TOSClientKitCommodityCardOption 详情见 商品卡片参数说明
  TOSClientKitCommodityCardOption *option = [[TOSClientKitCommodityCardOption alloc] init];
  option.subTitle = @"华为P40麒麟990 5G SoC芯片 5000万超感知徕卡三摄 30倍数字变焦";
  option.descriptions = @"这是商品描述,啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦";
  option.price = @"100.99";
  option.time = @"2022/05/24 18:32";
  option.img = @"https://img2.baidu.com/it/u=3019548648,4204913203&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500";
  option.status = @"已到货";
  option.extraInfo =
  @[@{@"name": @"订单号", @"value": @"1234567890"},
  @{@"name": @"产品类型", @"value": @"电子产品"},
  @{@"name": @"师傅"   , @"value": @"金师傅"},
  @{@"name": @"服务地区", @"value": @"北京市"},
  @{@"name": @"服务"   , @"value": @"满意"},
  @{@"name": @"师傅电话", @"value": @"12345678900"},
  @{@"name": @"订单状态", @"value": @"已完成"}];

  chatVC.commodityCardOption = option;

5.8.3. 快捷入口配置

chatVC.quickEntryAllItems = @[@"快捷入口1",@"快捷入口2",@"快捷入口3"];

/// 快捷入口的点击回调    index    点击索引从0开始(需要在子类实现这个方法)
- (void)quickEntryItemDidTouchIndex:(NSInteger)index;

5.8.4. 扩展面板配置

TOSKitExtendBoardItemModel类说明

+ (TOSKitChatBoxExtendBoard *)shareChatBoxExtendBoard;
/// 扩展项
@property (nonatomic, strong) NSArray <TOSKitExtendBoardItemModel *>*allItems;

/// 示例代码
TOSKitExtendBoardItemModel *model1 = [[TOSKitExtendBoardItemModel alloc] init];
model1.type = TOSChatBoxExtendBoardTypePhotos;	//除自定义类型外,其他类型不填即为默认UI

TOSKitExtendBoardItemModel *model2 = [[TOSKitExtendBoardItemModel alloc] init];
model2.type = TOSChatBoxExtendBoardTypeTakePicture;

TOSKitExtendBoardItemModel *model3 = [[TOSKitExtendBoardItemModel alloc] init];
model3.type = TOSChatBoxExtendBoardTypeCustom;//类型
model3.title = @"按钮3"; //标题
model3.image = @"image";//图片名称,图片大小:32*32/64*64/96*96
model3.index = 3;       //下标
[TOSKitChatBoxExtendBoard shareChatBoxExtendBoard].allItems = @[model1,model2,model3];

/// 扩展面板,自定义按钮事件 (需要在子类实现这个方法)
- (void)didClinkCustomExtendBoardItemAction:(TOSKitExtendBoardItemModel *)item;

TOSKitExtendBoardItemModel参数说明

参数名

参数值

说明

title

NSString

标题

image

NSString

图片名

index

NSInteger

扩展项的唯一标示符

type

TOSChatBoxExtendBoardType

枚举类型,除自定义类型外,其他类型不填即为默认UI

TOSChatBoxExtendBoardType参数说明

参数名

参数值

说明

TOSChatBoxExtendBoardTypePhotos

0

相册

TOSChatBoxExtendBoardTypeTakePicture

1

相机

TOSChatBoxExtendBoardTypeCustomFile

2

文件

TOSChatBoxExtendBoardTypeArtificial

3

转人工

TOSChatBoxExtendBoardTypeCloseChat

4

结束会话

TOSChatBoxExtendBoardTypeCustom

5

自定义

5.9. 详细参数说明

会话状态监听

参数名

参数值

说明

TinetChatStatusTypeOutline

0

离线或结束会话

TinetChatStatusTypeRobot

1

机器人

TinetChatStatusTypeOnline

2

客服

TOSClientKitCommodityCardOption 商品卡片参数说明

参数名

参数类型

说明

subTitle

NSString

卡片消息副标题

descriptions

NSString

卡片消息的描述,例如商品的简单描述

price

NSString

商品卡片的价格

time

NSString

卡片消息的时间,例如订单的生成时间

img

NSString

卡片消息的图片地址,例如商品的图片地址

status

NSString

商品状态

extraInfo

NSDictionary

额外信息