开发者文档 开发者文档
帮助中心 (opens new window)
帮助中心 (opens new window)
  • 呼叫中心V6

  • 外呼机器人V5
  • 电销中心

    • 接口功能规范
    • 基础管理 API
    • 数据服务 API
    • 呼叫能力 (https)
    • 呼叫能力 (JS-SDK)
    • 呼叫能力 (UI电话条)
    • 呼叫事件 (TS)
    • 呼叫能力 (Andorid-SDK)
      • 呼叫能力 (iOS-SDK)
    • 语音类产品 API
    • 电销中心
    智齿科技
    2022-09-13
    目录

    呼叫能力 (Andorid-SDK)

    # 电销能力 (Andorid-SDK)

    智齿客服为企业提供了一整套完善的智能客服解决方案。智齿电销 SDK 为其提供所有电销相关功能支持,仅需提供使用的账户,就能完成电销任务、外呼、电销监听、电销记录等操作。

    智齿电销 SDK 具有以下特性:

    • 提供登录-使用-退出完整流程。
    • 分 2 种登录模块,外部登录同步 token 和常规用户名、密码登录。
    • 支持电销话机注册、电销记录查询、电销监听、座席状态切换等基础功能。

    图片

    相关限制及注意事项:

    1、Android SDK 支持安卓系统 5.0 (API 21)以上版本,支持竖屏和横屏。

    2、开发工具 Android Studio 建议升级到 3.0 以上版本。

    3、Android SDK 需要麦克风危险权限,否则部分功能无法使用。

    4、SDK 不可与智齿客服 APP 中的电销功能以及智齿 PC 工作台中电销功能同时使用。

    # 文档介绍

    # ● 集成流程示意图

    图片

    # ● 文件说明

    SDK 文件包含 SDK 源码包 (telemarketingsdk) 、 Demo 源码 (sobot_tm_sdk_demo) 、 Demo 安装包(sobot_tm_sdk_demo.apk) 、和 Doc 相关说明文档。

    文件 描述
    SobotTMApi 该文件提供接入功能

    # 集成方式

    # ● 依赖集成

    普通版:最新版本地址 (opens new window)

    api 'com.sobot.call:telemarketingsdk:+'
    
    1

    在 build.gradle 中如下所示:

    dependencies {
        implementation 'com.sobot.call:telemarketingsdk:+'
        implementation 'com.squareup.okhttp3:okhttp:4.4.0'
        implementation 'androidx.appcompat:appcompat:1.0.0'
        implementation 'androidx.recyclerview:recyclerview:1.0.0'
        //目前支持常见的几种图片加载库,必须在下面的图片加载库中选择一个添加依赖
        //implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
        //implementation 'com.squareup.picasso:picasso:2.71828'
        //implementation 'com.facebook.fresco:fresco:2.6.0'
        implementation 'com.github.bumptech.glide:glide:4.9.0'
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # ● 手动集成

    下载链接:Android_TMSDK_XXX (opens new window)

    导入 Module :

    解压下载的智齿 Android_TMSDK_XXX.zip 文件,将 telemarketingsdk 文件直接复制到您的项目中,然后 Build --> Clean Project 一下,之后在 build.gradle 中添加项目依赖。

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

    dependencies {
       implementation project(":telemarketingsdk")
        implementation 'com.squareup.okhttp3:okhttp:4.4.0'
        implementation 'androidx.appcompat:appcompat:1.0.0'
        implementation 'androidx.recyclerview:recyclerview:1.0.0'
        //目前支持常见的几种图片加载库,必须在下面的图片加载库中选择一个添加依赖
        //implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
        //implementation 'com.squareup.picasso:picasso:2.71828'
        //implementation 'com.facebook.fresco:fresco:2.6.0'
        implementation 'com.github.bumptech.glide:glide:4.9.0'
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    【注意】

    如果您想使用自己的图片加载方法,可以使用以下方法:SobotBitmapUtil.setImageLoader(new SobotImageLoader() {}); 使用这种方式后,网络图片显示时就不会走 SDK 内部的图片加载方式了。

    混淆相关:

    参照混淆文件(Android_TMSDK_x.x.x\sobot_tm_sdk_demo\app\proguard-rules.pro)中的混淆配置添加混淆规则。

    -dontwarn com.sobot.**
    -keep class com.sobot.** { *; }
    -keep class org.webrtc.** { *; }
    
    1
    2
    3

    # 功能说明

    # ● 初始化和域名

    【注意:启动智齿电销 SDK 之前,需要调用初始化方法,否则将无法启动 SDK。】

    初始化方法为本地执行,不会有异步请求。

    /**
    * 初始化SDK
    *
    * @param application
    */
    SobotTMApi.init(Application application);
    
    1
    2
    3
    4
    5
    6

    默认是腾讯云环境,如果您是其它环境请设置对应域名。

    /**
    * 设置域名
    *
    * @param application
    * @param config 配置类
    */
    SobotTMApi.setHost(Application applicgtion,  SobotTMConfigEntity config);
    
    1
    2
    3
    4
    5
    6
    7

    SobotTMConfigEntity 详情:

    属性 名称 类型 可空
    openApiHost 通用接口服务地址 String 否
    callApiHost 电销接口服务地址 String 否
    stompSocketUri 座席信令服务 String 否
    janusSocketUri janus 消息监听服务 String 否
    # ● 启动智齿页面

    方式1:直接启动电销系统,自动完成登录并跳转页面。 三种启动方法如下:

    /**
    * 通过邮箱密码方式启动电销系统,进入首页
    *
    * @param context
    * @param loginUser 客服账号
    * @param loginPwd  登录密码
    * @param block     回调结果 可为空
    */
    SobotTMApi.startWithAcount(Context context, String loginUser, String loginPwd, SobotResultBlock block) ;
    
    
    /**
    * 通过设置公司token方式启动电销系统,进入首页
    *
    * @param context
    * @param loginUser    客服账号
    * @param companyToken 公司token
    * @param block        回调结果 可为空
    */
    SobotTMApi.startWithToken(Context context, String loginUser, String companyToken, SobotResultBlock block) ;
    
    
    /**
    * 通过设置appkey和appid方式启动电销系统,进入首页
    *
    * @param context
    * @param loginUser 客服账号
    * @param appKey    登录appKey  找售后同事获取(客户账号开通时会有这个)
    * @param appId     登录appId 找售后同事获取(客户账号开通时会有这个)
    * @param block     回调结果 可为空
    */
    SobotTMApi.startWithAppkey(Context context, String loginUser, String appKey, String appId, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32

    方式2:如有特殊需求,SDK 还提供了以 Fragment 嵌入的方式集成会话界面,开发者可以更灵活的使用 SDK。需要先完成登录,然后再执行跳转。

    示例代码如下(也可参考 SobotTMActivity 中 Fragment 的实现)。

    SobotTMFragment sobotTMFragment = (SobotTMFragment) getSupportFragmentManager()
                    .findFragmentById(getResId("sobot_call_contentFrame"));
            if (sobotTMFragment == null) {
                sobotTMFragment = SobotTMFragment.newInstance(SobotTMConstant.STARTUP_MODE_ACTIVITY);
                addFragmentToActivity(getSupportFragmentManager(),
                        sobotTMFragment, getResId("sobot_call_contentFrame"));
            }
    
    public void addFragmentToActivity(FragmentManager fragmentManager, Fragment fragment, int frameId) {
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(frameId, fragment);
        transaction.commit();
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # ● 登录
    /**
    * 通过邮箱密码方式登录电销系统
    *
    * @param context
    * @param loginUser 客服账号
    * @param loginPwd  登录密码
    * @param block     回调结果 可为空
    */
    SobotTMApi.loginUser(Context context, String loginUser, String loginPwd, SobotResultBlock block);
    
    
    /**
    * 通过设置token方式登录电销系统
    *
    * @param context
    * @param loginUser      客服账号
    * @param companyToken   公司token
    * @param isGoToActivity 是否跳转到电销中心页面  true 跳转,false 不跳转
    * @param block          回调结果 可为空
    */
    SobotTMApi.loginWithCompanyToken(Context context, String companyToken, boolean isGoToActivity, SobotResultBlock block);          
    
    
    /**
    * 通过设置appkey和appid方式登录电销系统
    *
    * @param context
    * @param loginUser      客服账号
    * @param appKey         登录appKey  找售后同事获取(客户账号开通时会有这个)
    * @param appId          登录appId 找售后同事获取(客户账号开通时会有这个)
    * @param isGoToActivity 是否跳转到电销中心页面 true 跳转,false 不跳转
    * @param block          回调结果 可为空
    */
    SobotTMApi.loginWithAppkey(Context context, String loginUser, String appKey, String appId, boolean isGoToActivity, SobotResultBlock block);          
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    # ● 退出登录
    /**
    * 退出系统
    * @param context
    * @param loginUser 登录账号
    * @param block  回调结果 可为空
    */
    SobotTMApi.out(Context context, String loginUser, SobotResultBlock block); 
    
    1
    2
    3
    4
    5
    6
    7

    # 开放接口

    # ● 初始化

    初始化SDK,设置域名;

    示例:

    SobotTMOpenApi.initWithConfig(Application application, SobotTMConfigEntity config, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    application 上下文 Application 否
    config 初始化参数 SobotTMConfigEntity 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。

    SobotTMConfigEntity 详情:

    属性 名称 类型 可空
    openApiHost 通用接口服务地址 String 否
    callApiHost 电销接口服务地址 String 否
    stompSocketUri 座席信令服务 String 否
    janusSocketUri janus 消息监听服务 String 否
    sipProxy janus 代理服务 String 否
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 登录
    /**
    * 通过邮箱密码方式登录
    *
    * @param context
    * @param loginUser 客服账号
    * @param loginPwd  登录密码
    * @param block     回调结果 可为空
    */
    SobotTMOpenApi.loginWithAcount(Context context, String loginUser, String loginPwd, SobotResultBlock block);
    
    
    /**
    * 通过设置token方式登录
    *
    * @param context
    * @param loginUser    客服账号
    * @param companyToken 公司token
    * @param block        回调结果 可为空
    */
    SobotTMOpenApi.loginWithToken(Context context, String loginUser, String companyToken, SobotResultBlock block);          
    
    
    /**
    * 通过设置appkey和appid方式登录电销系统
    *
    * @param context
    * @param loginUser 登录客服账号
    * @param appKey    登录appKey  找售后同事获取(客户账号开通时会有这个)
    * @param appId     登录appId 找售后同事获取(客户账号开通时会有这个)
    * @param block     回调结果
    */
    SobotTMOpenApi.loginWithAppkey(Context context, String loginUser, String appKey, String appId, SobotResultBlock block);          
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    # ● 签入
    1. 从一个端调用签入接口会导致其他端断开连接(非座席离线);
    2. 支持座席服务端的登录状态=离线、在线等全部状态签入。但座席服务端工作状态=呼叫中、振铃中、通话中、保持中、整理中时,不允许签入。
    SobotTMOpenApi.agentLogin(Context context, String agentState, String phoneType, String bindExt, String bindMobile, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    agentState 登录状态 String 是 签入成功后的座席登录状态。
    1:在线;2:勿扰。
    为空时,默认勿扰。
    phoneType 接听方式 String 否 接口指定的接听方式签入成功后,会修改座席默认的接听方式。管理员重置座席接听方式权限也会改变座席默认的接听方式。
    pstn:手机;webrtc:网页。
    为空时,系统取座席默认的接听方式。
    bindExt 绑定分机账号 String 否 接口指定的分机账号会改变座席设置中绑定的分机账号。
    不同座席绑定的分机账号不可相同。数据权限为操作座席已绑定的分机加其他未绑定座席的分机。
    bindMobile 绑定电话号码 String 是 手机号码或固话号码。
    接听方式为手机时,绑定电话号码非空,接口指定的绑定电话号码会改变座席设置中绑定的电话号码。
    不同座席绑定的电话号码不可相同。
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # 成功回调函数返回值
    属性 名称 类型 说明
    agentState 登录状态 String 签入成功后的座席登录状态。
    1:在线;2:勿扰。
    为空时,默认勿扰。
    phoneType 接听方式 String 接口指定的接听方式签入成功后,会修改座席默认的接听方式。管理员重置座席接听方式权限也会改变座席默认的接听方式。
    sip:SIP话机;pstn:手机;webrtc:网页。
    为空时,系统取座席默认的接听方式。
    bindExt 绑定分机账号 String 接口指定的分机账号会改变座席设置中绑定的分机账号。
    为空时,系统取座席设置中绑定的分机账号。
    bindMobile 绑定电话号码 String 手机号码或固话号码。
    接口指定的电话号码会改变座席设置中绑定的电话号码。
    为空时,系统取座席设置中绑定的电话号码。
    reasonCode 置忙原因 int 置忙的原因。
    2:勿扰;11:小休;12:小休(培训);13:小休(会议);14:小休(用餐);15:小休(活动);16:小休(自定义1);17:小休(自定义2);18:小休(自定义3)。
    # ● 签出

    座席工作状态为就绪中、置忙中、锁定中才可以。否则,不允许。

    SobotTMOpenApi.agentLogout(Context context,  SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 置忙
    SobotTMOpenApi.agentNotReady(Context context, String reasonCode, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    reasonCode 置忙原因 int 否 置忙后显示的登录状态。
    2:勿扰;11:小休;12:小休(培训);13:小休(会议);14:小休(用餐);15:小休(活动);16:小休(自定义1);17:小休(自定义2);18:小休(自定义3)。
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 置闲
    SobotTMOpenApi.agentReady(Context context, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 查询座席的签入信息
    SobotTMOpenApi.queryLoginBindingInfo(Context context, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock中的 obj可转成 SobotLoginBindEntity 对象。

    SobotLoginBindEntity说明:

    属性 类型 描述
    agentUuid String 座席ID
    agentID String 座席工号
    agentName String 座席名称
    ext String 绑定分机账号
    phone String 绑定电话号码
    phoneTypes List 接听方式集合
    receptionQueues List 查询座席实时已签入的技能组数据(当时已生效的接待技能组)

    接听方式PhoneType说明:

    属性 类型 描述
    phoneType String 接听方式:sip:SIP话机;pstn:手机;webrtc:网页
    defaultPhoneType boolean 默认的接听方式:true已设置默认接听方式;false未设置接听方式集合中只有1条数据为ture;

    QueueAgentCheckin说明:

    属性 类型 描述
    queueID String 技能组号码
    queueName String 技能组名称
    queueWeight int 队列权重
    checkin int 签入组类型:0:默认签入组,1:可选签入组 默认是签入组 ;为空时,代表未开启“呼叫功能设置\座席手动选择技能组签入”。
    # ● 查询座席可用的分机号
    SobotTMOpenApi.queryAvailableExts(Context context, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock中的 obj可转成 List 。

    SobotExtEntity 说明:

    属性 类型 描述
    ext String 分机号
    bindStatus int 分机绑定状态 0-未绑定,1-表示已绑定
    # ● 查询座席可用的置忙原因
    SobotTMOpenApi.queryBusyStatus(Context context, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。

    回调函数说明 详见 SobotResultBlock 。

    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock中的 obj 可转成 List 。

    SobotBusyStatusEntity 说明:

    属性 类型 描述
    name String 状态名称
    code String 状态码
    # ● 查询座席可签入的技能组
    SobotTMOpenApi.queryAvailableQueues(Context context, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。

    回调函数说明 详见 SobotResultBlock 。

    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock.obj 可转成 List 。

    QueueAgentCheckin 说明:

    属性 类型 描述
    queueID String 技能组号码
    queueName String 技能组名称
    queueWeight int 队列权重
    checkin int 签入组类型 0默认签入组,1可选签入组 默认是签入组
    # ● 重置离线(退出登录)
    1. 座席在任何登录状态、任何电话状态下都可以强制挂断座席电话并签出到离线状态;
    2. 可以用于座席端状态异常时,重置座席为离线。
    SobotTMOpenApi.resetLogout(Context context, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 查询座席可用的接听方式
    SobotTMOpenApi.queryPhoneType(Context context, SobotResultBlock block);
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock中的 obj 可转成 SobotAgentEntity 。

    SobotAgentEntity 说明:

    属性 类型 描述
    serviceId String 座席ID
    agentID String 座席工号
    agentName String 座席名称
    thisDN String 绑定分机账号
    phone String 绑定电话号码
    phoneTypes List 接听方式

    SobotPhoneTypesEntity 说明:

    属性 类型 描述
    phoneType String 接听方式:sip:SIP话机;pstn:手机;webrtc:网页。
    defaultPhoneType boolean 默认的接听方式:true已设置默认接听方式;false未设置接听方式集合中只有1条数据为ture;
    isDefault boolean 默认的接听方式:true已设置默认接听方式;false未设置接听方式集合中只有1条数据为ture;(建议使用defaultPhoneType,isDefault以后会删除掉)

    # 呼叫操作

    # ● 外呼
    SobotTMOpenApi.makeCall(Context context, String otherDN, String privacyNumber, String ANI,String outboundPlanCode,String agentANI, SobotResultBlock block) ;
    
    1
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    otherDN 客户号码 String 否
    privacyNumber 客户号码加密 String 是
    ANI 指定客户侧的外显号码 String 是
    outboundPlanCode 指定客户侧的外显号码方案编码 String 是
    agentANI 指定座席侧的外显号码 String 是
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 接听
    /**
     * 接听
     * @param context   上下文
     * @param block     回调
     */
    SobotTMOpenApi.answer(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 挂机
    /**
     * 挂机
     * @param context
     * @param block
     */
    SobotTMOpenApi.hangup(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 保持
    /**
     * 保持
     * @param context
     * @param block
     */
    SobotTMOpenApi.holdCall(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 保持取消
    /**
     * 保持取消
     * @param context
     * @param block
     */
    SobotTMOpenApi.retrieveCall(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 静音
    /**
     * 静音
     * @param context
     * @param block
     */
    SobotTMOpenApi.muteCall(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 静音取消
    /**
     * 静音取消
     * @param context
     * @param block
     */
    SobotTMOpenApi.unMuteCall(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 设置声音播放类型
    /**
     * 自动切换麦克风扬声器为 打开/关闭
     * @param context
     * @param isSpeakerphoneOn true :扬声器打开 ;false : 扬声器关闭
     * @param block
     */
    SobotTMOpenApi.changedPlayCategory(Context context,boolean isSpeakerphoneOn, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    7
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    isSpeakerphoneOn 扬声器是否打开 boolean 是
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock中的 obj 可转成String。

    属性 名称 类型 说明
    SobotResultBlock.obj 声音播放类型 String 范围:听筒播放或扬声器播放
    # ● 查询声音播放类型
    /**
     * 查询麦克风扬声器是否打开
     * @param context
     * @param block
     */
    SobotTMOpenApi.searchPlayCategory(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock中的 obj 可转成 boolean。

    属性 名称 类型 说明
    SobotResultBlock.obj 是否是扬声器播放 boolean true :扬声器打开 ;false : 扬声器关闭
    # ● 发送满意度
    /**
     * 发送满意度
     *
     * @param autoSatisfy 1-表示手动发送满意度;0或者不传值-自动发送满意度(如果系统设置自动发送满意度)
     */
    SobotTMOpenApi.sendSatisfacion(Context context, int autoSatisfy, SobotResultBlock block);
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    autoSatisfy 1-表示手动发送满意度;0或者不传值-自动发送满意度(如果系统设置自动发送满意度) int 否 1-表示手动发送满意度;0或者不传值-自动发送满意度(如果系统设置自动发送满意度)
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 延长整理时长
    /**
     * 延长整理时长
     *
     * @param delayTime 延长秒数在30-900秒之间
     */
    SobotTMOpenApi.delayCallAfterWork(Context context, int delayTime, SobotResultBlock block);
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    delayTime 延长秒数 String 否 延长秒数在30-900秒之间
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 结束整理
    /**
     * 结束整理
     * @param context
     */
    SobotTMOpenApi.finishCallAfterWork(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 发送按键
    /**
     * 发送按键
     * @param context
     * @param dtmfDigits 按键对应值:一次请求发送一个按键值,如,801#,则依次发送8、0、1、#这些按键请求
     */
    SobotTMOpenApi.sendDtmf(Context context,String dtmfDigits, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    dtmfDigits 按键对应值 String 否 按键对应值:一次请求发送一个按键值,如,801#,则依次发送8、0、1、#这些按键请求
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # ● 结束整理并置忙
    /**
     * 查询座席的外呼路由规则
     * @param context
     */
    SobotTMOpenApi.finishCallAfterWorkAndBusy(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock 。

    # 辅助操作

    # ● 查询座席的外呼路由规则
    /**
     * 查询座席的外呼路由规则
     * @param context
     */
    SobotTMOpenApi.queryOutBoudRoutesRules(Context context, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock中的obj 可转成 SobotOutboundRoutesEntity 对象。

    属性 名称 类型 说明
    agentUuid 座席id String 座席id
    agentID 座席工号 String 座席工号
    agentName 座席名称 String 座席名称
    explicitRule 外显规则LIST List 外显规则LIST
    explicitSchema 动态外显方案LIST List 动态外显方案LIST
    explicitNumbers 外显号码LIST List 外显号码LIST
    # 外显规则(SobotExplicitRuleEntity)说明:
    属性 名称 类型 说明
    code 外显规则code String 1:企业号码池随机匹配;2:动态外显号码方案匹配;3:座席号码池指定
    name 外显规则name String 外显规则name
    hasSet 座席最后设定的数据 Boolean false:不是true:是
    # 外显方案(SobotExplicitRuleEntity)
    属性 名称 类型 说明
    code 外显方案code String 1:企业号码池随机匹配;2:动态外显号码方案匹配;3:座席号码池指定
    name 外显方案name String 外显规则name
    hasSet 座席最后设定的数据 Boolean false:不是true:是
    # 外显号码(SobotExplicitNumberEntity)
    属性 名称 类型 说明
    number 外显号码 String
    numberAlias 号码别名 String
    hasSet 座席最后设定的数据 Boolean false:不是true:是
    # ● 修改座席的外呼路由规则
    /**
     * 切换座席的外呼外显规则
     *
     * @param explicitRule   外显规则:1:企业号码池随机匹配;2:动态外显号码方案匹配;3:座席号码池指定;单选;
     * @param explicitCode   动态外显方案编码: 外显规则为动态外显号码方案时必传
     * @param explicitNumber 外显号码:不使用外显规则,直接指定企业的某外显号码呼叫客户,外显号码和外显规则至少需要传一个
     */
    SobotTMOpenApi.switchOutBoudRoutesRules(Context context, String explicitRule, String explicitCode, String explicitNumber, SobotResultBlock block) ;
    
    1
    2
    3
    4
    5
    6
    7
    8
    # 请求参数
    属性 名称 类型 可空 说明
    context 上下文 Context 否
    explicitRule 外显规则 String 否 1:企业号码池随机匹配;2:动态外显号码方案匹配;3:座席号码池指定;单选;
    explicitCode 动态外显方案编码 String 是 外显规则为动态外显号码方案时必传
    explicitNumber 外显号码 String 是 使用外显规则,直接指定企业的某外显号码呼叫客户,外显号码和外显规则至少需要传一个
    block 回调函数 SobotResultBlock 是 接口调用的回调函数。
    # 返回值

    回调函数说明 详见 SobotResultBlock ,当回调成功时, SobotResultBlock中的obj 可转成 SobotOutboundRoutesEntity 对象。

    属性 名称 类型 说明
    agentUuid 座席id String 座席id
    agentID 座席工号 String 座席工号
    agentName 座席名称 String 座席名称
    explicitRule 外显规则LIST List 外显规则LIST
    explicitSchema 动态外显方案LIST List 动态外显方案LIST
    explicitNumbers 外显号码LIST List 外显号码LIST
    # 外显规则(SobotExplicitRuleEntity)
    属性 名称 类型 说明
    code 外显规则code String 1:企业号码池随机匹配;2:动态外显号码方案匹配;3:座席号码池指定
    name 外显规则name String 外显规则name
    hasSet 座席最后设定的数据 Boolean false:不是true:是
    # 外显方案(SobotExplicitRuleEntity)
    属性 名称 类型 说明
    code 外显方案code String 1:企业号码池随机匹配;2:动态外显号码方案匹配;3:座席号码池指定
    name 外显方案name String
    hasSet 座席最后设定的数据 Boolean false:不是true:是
    # 外显号码(SobotExplicitNumberEntity)
    属性 名称 类型 说明
    number 外显号码 String
    numberAlias 号码别名 String
    hasSet 座席最后设定的数据 Boolean false:不是true:是

    # 通用属性说明

    # ● 接口统一回调 SobotResultBlock
    属性 名称 类型 说明
    code 调用状态 SobotResultCode SobotResultCode.CODE_FAILED 代表调用失败;SobotResultCode.CODE_SUCCEEDEDD 代表调用成功。
    msg 结果描述 String 接口调用结果的描述。
    obj 返回数据 Object 接口返回值,具体详情参考每个接口的返回值说明,可为空。
    # ● 监听获取座席实时状态和呼叫事件

    第一步: 注册后获取事件

    事件说明参考呼叫事件(TS) (opens new window)

    Observer<CallStompMsgModel> stompMsgObserver;//stomp 消息事件
         stompMsgObserver = new Observer<CallStompMsgModel>() {
                @Override
                public void onChanged(CallStompMsgModel stompMsgModel) {
                    if (stompMsgModel == null) {
                        return;
                    }
                    SobotLogUtils.i(" 收到stomp 消息:" + SobotStringUtils.checkStringIsNull(stompMsgModel.getStompMessageID()));
                    String stompMessageID = SobotStringUtils.checkStringIsNull(stompMsgModel.getStompMessageID());
                    String stompMessageContent = SobotStringUtils.checkStringIsNull(stompMsgModel.getStompMessageContent());
                    if (!TextUtils.isEmpty(stompMessageContent) && !TextUtils.isEmpty(stompMessageID)) {
                        if (SobotStompEventConstant.EventAgentLogin.equals(stompMessageID)) {
                            //座席签入
                        } else if (SobotStompEventConstant.EventAgentLogout.equals(stompMessageID)) {
                            //座席签出
                        } else if (SobotStompEventConstant.EventAgentReady.equals(stompMessageID)) {
                            //座席置闲
                        } else if (SobotStompEventConstant.EventAgentNotReady.equals(stompMessageID)) {
                            //座席置忙
                        } else if (stompMessageID.toLowerCase().contains("error")) {
                            //返回异常事件
                        } else if (SobotStompEventConstant.EventDialing.equals(stompMessageID)) {
                            //呼入 来电了
                        }else if (SobotStompEventConstant.EventEstablished.equals(stompMessageID)) {
                            //通话接通了
                        }else if (SobotStompEventConstant.EventWebSocketSession.equals(stompMessageID)) {
                            //恢复座席
                        } else if (SobotStompEventConstant.EventAgentConnectionChanged.equals(stompMessageID)) {
                            //座席在其它端登录,被挤下线的事件
                        }
                    }
    
                }
            };
            SobotLiveEventBus.get(SobotCallLiveDataBusKey.RECEIVE_STOMP_MSG, CallStompMsgModel.class)
                    .observeForever(stompMsgObserver);
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36

    第二步:注销 例如:

    protected void onDestroy() {
    super.onDestroy();
    if (stompMsgObserver != null) {
    SobotLiveEventBus.get(SobotCallLiveDataBusKey.RECEIVE_STOMP_MSG, CallStompMsgModel.class).removeObserver(stompMsgObserver);
    }
    }
    
    1
    2
    3
    4
    5
    6
    # ● 监听通话状态的变化
    /**
    * 监听通话状态的变化
    * 监听状态: 用户来电、用户响铃中、通话中、通话结束
    */
    SobotTMOpenApi.setVoipCallListener(new SobotVoipCallListener() {
                @Override
                public void onCallIncoming(String jsep, boolean isCallPhone, String userPhoneNumber) {
                    SobotLogUtils.e("SobotVoipCallListener == onCallIncoming  用户手机号" + userPhoneNumber);
                    if (isCallPhone) {
                        //外呼:客服外呼来电。内部已经自动接听了
                    } else {
                        //呼入:客户来电,手动接听,然后启动通话页面
                        SobotTMOpenApi.answer(getSobotActivity(), jsep, new SobotResultBlock() {
                            @Override
                            public void resultBolok(SobotResultCode code, String msg, Object obj) {
                                SobotToastUtil.showToast(SobotTMInterfaceTestActivity.this, msg);
                            }
                        });
                    }
                }
    
                @Override
                public void onCallConnected() {
                    //通话建立,主叫端和被叫端语音通话中
                    SobotLogUtils.e("SobotVoipCallListener == onCallConnected");
                }
    
                @Override
                public void onCallDisconnected() {
                    //通话结束
                    SobotLogUtils.e("SobotVoipCallListener == onCallDisconnected");
                }
            });
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    # ● 设置调试模式
    /**
    * 是否显示智齿日志,日志过滤标识:sobot_log
    *
    * @param isShow true 显示;false 不显示,默认不显示
    */
    SobotTMApi.setShowLogDebug(boolean isShow);
    
    1
    2
    3
    4
    5
    6

    # 资源配置

    # ● UI 资源替换

    在客户 APP 中 colors.xml 中添加同名颜色可覆盖智齿 SDK 中的颜色样式;也可通过在主项目中同一位置放一个同名的图片资源去替换智齿 SDK 界面中的图片;也可通过在主项目中同一位置放一个同名的文字资源去替换智齿 SDK 界面中的文字。

    以下是常用的颜色配置,更多颜色、图片资源可到手动集成模块中下载源码包中去查找。

       
        <!-- 主题色 默认绿色 -->
        <color name="sobot_call_theme_color">#09AEB0</color>
    
        <!--页面 通用背景颜色 -->
        <color name="sobot_call_bg_color">#EFF3FA</color>
        <!--页面 二级背景色 -->
        <color name="sobot_call_second_bg_color">#FFFFFF</color>
        <!--页面 三级颜色 -->
        <color name="sobot_call_third_bg_color">#EFF3FA</color>
    
        <!-- 一级文字 颜色 -->
        <color name="sobot_call_wenzi_gray1">#3D4966</color>
        <!-- 二级文字 颜色 -->
        <color name="sobot_call_wenzi_gray2">#8B98AD</color>
        <!-- 三级文字 颜色 -->
        <color name="sobot_call_wenzi_gray3">#BDC3D1</color>
        <!-- 四级文字 颜色 提示性文本:时间,输入提示 -->
        <color name="sobot_call_wenzi_gray4">#CCCCCC</color>
     
        <!--  线  -->
        <color name="sobot_call_line_color">#E6E6E6</color>
    
        <!-- 头部背景 -->
        <color name="sobot_color_title_bar_bg">@color/sobot_call_theme_color</color>
        <!-- 状态栏的颜色设置 -->
        <color name="sobot_status_bar_color">@color/sobot_color_title_bar_bg</color>
        <!-- 头部中间昵称颜色 -->
        <color name="sobot_color_title_bar_title">@color/sobot_call_white_color</color>
        <!-- 头部两侧菜单字体颜色 -->
        <color name="sobot_color_title_bar_menu_text">@color/sobot_call_white_color</color>
    
        <!-- 控件布局按压背景颜色-->
        <color name="sobot_call_item_pressed">@color/sobot_call_line_color</color>
    
        <!-- 弹窗页面 头部背景颜色 -->
        <color name="sobot_call_pop_header_bg_color">#EFF3FA</color>
        <!-- 弹窗页面 头部 文字颜色 -->
        <color name="sobot_call_pop_header_weizi_color">@color/sobot_call_wenzi_gray1</color>
    
        <!--通话界面 背景色-->
        <color name="sobot_call_activity_bg">#FFFFFF</color>
    
        <!--拨号界面 电话号 区域 背景色-->
        <color name="sobot_phone_numbe_bg">@color/sobot_call_bg_color</color>
        <!--拨号界面 电话号 区域 文字 黑色-->
        <color name="sobot_phone_numbe_wenzi_gray">@color/sobot_common_gray1</color>
        <!--拨号界面 键盘 背景色-->
        <color name="sobot_phone_keyword_bg">#FFFFFF</color>
        <!--拨号界面 键盘 文字颜色1 黑色-->
        <color name="sobot_phone_keyword_wenzi_gray1">@color/sobot_common_gray1</color>
        <!--拨号界面 键盘 文字颜色2 黑色-->
        <color name="sobot_phone_keyword_wenzi_gray2">@color/sobot_common_gray2</color>
    
        <!--电销中心任务  黄色 未开始-->
        <color name="sobot_call_yellow_color">#EEB049</color>
        <!--电销中心任务  绿色 执行中-->
        <color name="sobot_call_green_color">#21CFA6</color>
        <!--电销中心任务  灰色 已过期-->
        <color name="sobot_call_grey_color">#CFCFCF</color>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60

    # 智齿电销 SDK 功能使用体验 Demo

    点击下载 Demo 源码 (opens new window);

    点击下载体验安装包 (opens new window);

    # 常见问题

    1.token 怎么获取?
    通过智齿登录接口获取登录 token,注意此处 token 为开发模块获取的 token,非新版 v6 版本 accessToken,如果无法获取请使用用户名、密码完成登录,体验效果完全一样,请放心使用。

    2.无法正常登录?
    登录之前请确认是否执行初始化操作,初始化操作为本地赋值;不会有异步请求,主要会设置域名及基础配置信息。

    # 更新说明

    <<SDK 版本更新说明>> (opens new window)

    # 智齿科技 SDK 收集使用个人信息说明

    《智齿科技 SDK 收集使用个人信息说明》 (opens new window)

    上次更新: 2024/5/14 16:23:54

    ← 呼叫事件 (TS) 呼叫能力 (iOS-SDK)→

    最近更新
    01
    运营支持 API
    03-03
    02
    CRM 对接方案
    12-05
    03
    大模型机器人API
    09-09
    更多文章>
    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式