Android SDK V6
# Android SDK V6
智齿客服 SDK 为企业提供了一整套完善的智能客服解决方案。智齿客服 SDK 既包含客服业务逻辑,也提供交互界面;企业只需简单两步,便可在 APP 中集成智齿客服,让 APP 拥有 7 * 24 小时客服服务能力。
管理员可以在后台「 首页 - 在线客服 - 设置 - 对接渠道设置 - 添加渠道 」添加 APP,然后按照本接入文档说明完成 SDK 对接。
智齿客服 SDK 具有以下特性:
- 在线咨询:咨询机器人、咨询人工客服、留言、帮助中心。
- 指定技能组接待。
- 排队或客服不在线时引导用户留言。
- 机器人优先模式下隐藏转人工按钮,N 次机器人未知问题问题是显现。
- 客服满意度评价:用户主动满意度评价+用户退出时询问评价。
- 传入用户资料:用户对接 ID + 基础资料 + 自定义字段。
- 传入商品来源页:来源页标题 + 来源页 URL。
- 高度自定义 UI。
相关限制及注意事项:
1、Android SDK 支持安卓系统 4.2 (API 17) 以上版本,支持竖屏和横屏。
2、开发工具 Android Studio 建议升级到 3.0 以上版本。
3、Android SDK 需要申请存储、麦克风、拍照危险权限,否则部分功能无法使用。
# 文档介绍
# ● 集成流程示意图
# ● 文件说明
SDK 文件包含 SDK 源码包(sobotsdk_x) 、 Demo 源码(Sobot_Sdk_Demo_Android_V6) 、和 Doc 相关说明文档。
文件 | 描述 |
---|---|
ZCSobotApi | 该文件提供接入功能 |
Information | 启动配置信息参数类 |
# 集成方式
# ● 导入集成
下载链接:Android_SDK_V6 (opens new window)
导入 Module :
解压下载的智齿 Android_SDK_XXX.zip 文件,将 sobotsdk-x 或者 sobotsdk-mall-x 文件直接复制到您的项目中,然后 Build --> Clean Project 一下,之后在 build.gradle 中添加项目依赖。
完成上述步骤之后 build.gradle 中如下所示:
dependencies {
implementation project(':sobotsdk-x')
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'
}
2
3
4
5
6
7
8
9
10
11
【注意】
如果您使用的是 picasso 框架,从 4.1.4 版本开始,SDK 默认支持 2.71828 及以上版本。
如果您使用的是 glide v4 框架,从 4.1.4 版本开始,SDK 默认支持 4.9.0 及以上版本。
如果您使用的 4.1.4 之前的SDK版本,但是glide v4 又使用的是 4.9.0 以上版本,您还需要单独添加依赖:'com.sobot.chat:sobotsupport-glidev4:2.3'。
如果您想使用自己的图片加载方法,可以使用以下方法:SobotBitmapUtil.setImageLoader(new SobotImageLoader() {}); 使用这种方式后,网络图片显示时就不会走 SDK 内部的图片加载方式了。
# ● 依赖集成
implementation 'com.sobot.chat:sobotsdk_x:+'
implementation 'com.sobot.chat:sobotsdk-mall-x:+'
在 build.gradle 中如下所示:
dependencies {
implementation 'com.sobot.chat:sobotsdk_x:+'
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'
}
2
3
4
5
6
7
8
9
10
11
【注意】
如果您使用的是 picasso 框架,从 4.1.4 版本开始,SDK 默认支持 2.71828 及以上版本。
如果您使用的是 glide v4 框架,从 4.1.4 版本开始,SDK 默认支持 4.9.0 及以上版本。
如果您使用的 4.1.4 之前的SDK版本,但是glide v4 又使用的是 4.9.0 以上版本,您还需要单独添加依赖:'com.sobot.chat:sobotsupport-glidev4:2.3'。
如果您想使用自己的图片加载方法,可以使用以下方法:SobotBitmapUtil.setImageLoader(new SobotImageLoader() {}); 使用这种方式后,网络图片显示时就不会走 SDK 内部的图片加载方式了。
混淆相关:
参照混淆文件(Android_SDK_x.x.x\Sobot_Sdk_Demo_Android_V6\sobotsdkdemo\proguard-rules.pro)中的混淆配置添加混淆规则。
-keep class com.sobot.** {*;}
注意:使用的图片框架需要自己配置混淆。
# 功能说明
# ● 域名设置
域名说明:
默认 SaaS 平台域名为: https://api.sobot.com。
如果您是腾讯云服务,请设置为: https://www.soboten.com。
如果您是本地化部署,请使用自己的部署的服务域名。
示例代码:
【注意:设置域名一定要在所有接口请求之前设置,即在初始化之前就必须设置完。】
SobotBaseUrl.setApi_Host("域名");
# ● 获取 Appkey
登录 智齿科技管理平台 (opens new window) 获取,如图
# ● 初始化
# 1. 普通版
初始化参数和调用方式:
【注意:启动智齿 SDK 之前,需要调用初始化方法 initSobotSDK,否则将无法启动 SDK。】
【注意:ZCSobotApi中其它功能的调用都需要在初始化方法执行完之后,否则会不生效。】
接口:
/**
* 初始化sdk
* @param applicationcontext 上下文 必填
* @param appkey 用户的 appkey 必填 如果是平台版用户需要传总公司的 appkey
* @param partnerid 用户的唯一标识,不能传一样的值,可以为空
*/
ZCSobotApi.initSobotSDK(Context application,String appkey,final String partnerid);
2
3
4
5
6
7
示例代码:
private void initSobotApp() {
ZCSobotApi.initSobotSDK(your application,"your appkey", "");
}
2
3
# 2. 电商版
初始化参数和调用方式:
【注意:启动智齿 SDK 之前,需要调用初始化方法 initPlatformUnion 和 initSobotSDK,否则将无法启动 SDK。】
【注意:ZCSobotApi中其它功能的调用都需要在初始化方法执行完之后,否则会不生效。】
接口:
/**
* 初始化平台 ID
* @param applicationcontext 上下文 必填
* @param platformUnionCode 平台 ID 必填 请联系对应的客服申请
* @param platformSecretkey 平台标识 秘钥 请联系对应的客服申请
*/
ZCSobotApi.initPlatformUnion(Context application, String platformUnionCode,String platformSecretkey);
//商户对接 ID (仅电商版适用,如果没有 app_key 则必须提供)
//info.setCustomer_code("商户id");
2
3
4
5
6
7
8
9
10
接口(可选):
//设置溢出商城主站公司 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
3
4
5
6
示例代码:
private void initApp() {
ZCSobotApi.initSobotSDK(your application, getResources().getString(R.string.sobot_appkey), "");
// initPlatformUnion() 在 initSobotSDK() 之后调用
// platformUnionCode 平台 ID
ZCSobotApi.initPlatformUnion(your application, "your platformUnionCode", "");
}
2
3
4
5
6
# 3. 权限说明
SDK 使用了 3 个高敏权限(文件存储、麦克风、相机)。
权限使用情况说明表:
权限 | 涉及该权限的功能 |
---|---|
文件存储 | 给客服发送语音消息 ;加号里边图片、视频 、拍摄 、文件;留言上传图片、视频; |
麦克风 | 给客服发送语音消息 ;加号里边拍摄 ; |
相机 | 加号里边拍摄 ;留言拍照 ; |
这些高敏权限只是在上边表中涉及的功能中使用到,使用时动态检测申请,用户同意后才能继续;没有这些高敏权限也不影响 SDK 的其他功能的正常使用。
如果需要在申请权限之前告诉用户该权限的用途,可以使用这个方法 弹出权限用途提示框 。
# ● 启动智齿页面
# 1. 启动智齿页面
普通版本和电商版本启动方式一样。
接口
Information info = new Information();
//appkey 必传
info.setApp_key("Your appkey");
/**
* @param context 上下文对象
* @param information 初始化参数
*/
ZCSobotApi.openZCChat(context, information);
2
3
4
5
6
7
8
示例代码:
Information info = new Information();
// appkey 必填
info.setApp_key(et_appkey.getText().toString());
//注意:用户唯一标识,不能传入一样的值,选填,最大长度限制为300
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("");
//公司名称 4.1.5 新增
info.setEnterprise_name("xxx");
ZCSobotApi.openZCChat(context, info);
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
如有特殊需求,SDK 还提供了以 Fragment 嵌入的方式集成会话界面,开发者可以更灵活的使用 SDK。示例代码如下(也可参考 SobotChatActivity 中 Fragment 的实现)。
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) {
}
2
3
4
5
6
7
8
9
10
11
# 2. 启动商家列表(仅电商版)
/**
* 启动商家列表
*
* @param context 上下文对象
* @param uid 用户唯一标识 与information中传的uid一致
*/
ZCSobotApi.openZCChatListView(Context context,String uid);
2
3
4
5
6
7
设置消息中心item回调:
SobotOption.sobotConversationListCallback = new SobotConversationListCallback(){
@Override
public void onConversationInit(Context context,Information info) {
//点击会话列表中的单个会话,启动聊天页面
//由于默认的启动方式无法获取客服聊天的配置,因此需要手动设置此回调
/**
* 例如:
* 用户昵称,选填
* info.setUser_nick("");
* .....
* ZCSobotApi.openZCChat(context, info);
**/
}
};
2
3
4
5
6
7
8
9
10
11
12
13
14
# 3. 启动客户服务中心
Information info = new Information();
info.setApp_key("Your AppKey"); //分配给App的的密钥
//客服中心电话按钮,电话号码和显示文案都不为空才能显示
info.setHelpCenterTel("18510000000");//电话号码
info.setHelpCenterTelTitle("联系电话");//打电话按钮显示文案
/**
* @param context 上下文对象
* @param information 初始化参数
*/
ZCSobotApi.openZCServiceCenter(context, information);
2
3
4
5
6
7
8
9
10
11
12
效果图如下:
# ● 结束会话
用户在应用中退出登陆时可以调用 SDK 的注销操作(在切换账号时调用),该操作会通知服务器进行推送信息的解绑,避免用户已退出但推送依然发送到当前设备的情况发生。
当用于用户退出登录时调用以下方法:
【注意:调用此方法会造成通道连接断开,此时用户将无法再收到消息。】
/**
* @param context 上下文对象
*/
ZCSobotApi.outCurrentUserZCLibInfo(context);
2
3
4
# ● 机器人客服
# 1. 对接指定机器人
在后台获取机器人编号:
在 SDK 代码中配置:
//设置机器人编号
info.setRobotCode("your robot code");
//设置机器人编号对应的别名
//指定别名和指定的编号 ID 效果一样
info.setRobot_alias("your robot alias");
2
3
4
5
6
# 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);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 3. 自定义转人工事件
SDK 可以配置转人工拦截器,在转人工前做一些额外的逻辑处理,例如自定义技能组选择 Dialog。
1.设置拦截器
SobotOption.transferOperatorInterceptor = new SobotTransferOperatorInterceptor() {
@Override
public void onTransferStart(final Context context, final SobotTransferOperatorParam param) {
//do something
}
};
2
3
4
5
6
2、修改转人工参数 SobotTransferOperatorParam,以下为可修改参数介绍:
//技能组 ID
String groupId;
//技能组名称
String groupName;
//转人工后是否提示
boolean isShowTips;
//商品卡片信息
ConsultingContent consultingContent;
2
3
4
5
6
7
8
3、使用转人工参数主动调用转人工接口:
/**
* 外部主动调用转人工
* @param context
* @param param 转人工参数
*/
ZCSobotApi.connectCustomerService(context, param);
2
3
4
5
6
# 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
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
2.配置参数说明
①、设置是否溢出
//设置溢出
overflow()
//设置不溢出
no_overflow()
②、设置指定的技能组
designatedSkillId("技能组id")
设置指定的客服
designatedServiceId("客服id")
③、设置溢出条件
//指定客服组时:技能组无客服在线
conditionServiceOffline()
//指定客服组时:技能组所有客服忙碌
conditionServiceBusy()
//指定客服组时:技能组不上班
conditionServiceOffWork()
//指定客服组时:智能判断
conditionIntelligentudgement()
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 5. 机器人咨询模式下可隐藏加号菜单栏的按钮
//隐藏留言功能,人工和机器人模式下都会隐藏 true 隐藏,false 显示,默认false
info.setHideMenuLeave(true);
//隐藏评价功能 true 隐藏,false 显示,默认false
info.setHideMenuSatisfaction(true);
2
3
4
# 6. 指定常见问题引导
//不同场景进入可以配置 faqid 指定机器人对应的常见问题引导
info.setFaqId("robot faqid");
2
# ● 人工客服
# 1. 对接指定技能组
在后台获取技能组编号:
在 SDK 代码中配置技能组 ID:
//预设技能组编号
info.setGroupid("your groupId");
//预设技能组名称,选填
info.setGroup_name("your groupName");
2
3
4
注意:此字段可选,如果传入技能组 ID,那么 SDK 内部转人工之后不在弹技能组的选择框,直接跳转到传入 ID 所对应的技能组中。
# 2. 对接指定客服
在后台获取指定客服 ID :
在 SDK 代码中设置:
//转接类型(0-可转入其他客服,1-必须转入指定客服)
info.setTranReceptionistFlag(1);
//指定客服id
info.setChoose_adminid("your Customer service id");
2
3
4
注意:
choose_adminid :指定对接的客服,如果不设置,取默认。
tranReceptionistFlag :设置指定客服之后是否必须转入指定客服 0 :可转入其他客服, 1:必须转入指定客服, 注意:如果设置为1 ,当指定的客服不在线,不能再转接到其他客服。
# 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);
2
3
4
5
6
7
用户自定义资料
方式一:Map方式
//自定义用户料
Map<String, String> customInfo = new HashMap<>();
customInfo.put("资料", "aaaaa");
info.setParams(customInfo);
2
3
4
方式二:Json方式
//自定义用户料 字符串必须是json 格式,不然可能出现不显示的情况
info.setParams("{\"title\":\"标题\",\"url\":\"https://www.baidu.com\"}");
2
效果图如下:
# 4. 设置转接成功后自动发消息
SDK 可以设置转接成功后自动发消息,可设置是否每次进入聊天页面都自动发送一次,默认只发送一次。
//发送文字消息
//设置发送模式
//SobotAutoSendMsgMode.Default 默认 不发送
//SobotAutoSendMsgMode.SendToRobot 只给机器人发送
//SobotAutoSendMsgMode.SendToOperator 只给人工客服发送
//SobotAutoSendMsgMode.SendToAll 全部发送
//setIsEveryTimeAutoSend 是否每次进入聊天页都发送
info.setAutoSendMsgMode(SobotAutoSendMsgMode.SendToAll.setContent("your msg").setIsEveryTimeAutoSend(false));
//转人工成功后可发送文字、图片、视频、文件(只限人工模式下),需要设置文件本地路径和发送类型
//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));
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 5. 设置指定客户排队优先接入
SDK 可以设置当前用户排队优先,当此用户进入排队状态时,将会被优先接待。
//设置排队优先接入 true:优先接入 false:默认值,正常排队
info.setIs_Queue_First(true);
2
# 6. 设置服务总结自定义字段
SDK 可以配置服务总结自定义字段,可以使客服更快速的对会话进行服务总结。
1、获取自定义字段 ID
2、设置服务总结自定义字段 (转人工支持传入服务总结参数)
//服务总结自定义字段
Map<String, String> summaryInfo = new HashMap<>();
summaryInfo.put("your keyId", "your value");
info.setSummary_params(summaryInfo);
2
3
4
# 7. 设置多轮会话接口参数
在使用多轮会话功能时,每一个接口我们都会传入 uid 和 mulitParams 两个固定的自定义参数,uid 是用户的唯一标识,mulitParams 是自定义字段 json字符串、如果用户对接了这两个字段,我们会将这两个字段回传给第三方接口、如果没有我们会传入空字段。
//多轮会话自定义参数
info.setMulti_params("{\"key1\",\"val1\"}");
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.sobot.com");
//描述,选填
consultingContent.setSobotGoodsDescribe("XXX超级电视 S5");
//标签,选填
consultingContent.setSobotGoodsLable("¥2150");
//转人工后是否自动发送
consultingContent.setAutoSend(true);
//每次返回再次进入聊天页面是否都重新发送 true 每次都发,false 只发一次,默认只发一次
consultingContent.setEveryTimeAutoSend(false);
//启动智齿客服页面 在Information 添加,转人工发送卡片消息
info.setConsultingContent(consultingContent);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
效果图如下:
# 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);
//自定义订单状态名称 只有订单状态是0时才有效,其他值还按照原有逻辑
//orderCardContent.setOrderStatus(0);
//orderCardContent.setStatusCustom("您的自定义状态");
//订单总金额(单位 分)
orderCardContent.setTotalFee(1234);
//订单商品总数
orderCardContent.setGoodsCount("4");
//订单链接
orderCardContent.setOrderUrl("https://item.jd.com/1765513297.html");
//订单创建时间
orderCardContent.setCreateTime(System.currentTimeMillis() + "");
//转人工后是否自动发送
orderCardContent.setAutoSend(true);
//每次返回再次进入聊天页面是否都重新发送 true 每次都发,false 只发一次,默认只发一次
orderCardContent.setEveryTimeAutoSend(false);
//订单商品集合
orderCardContent.setGoods(goodsList);
//订单卡片内容
info.setOrderGoodsInfo(orderCardContent);
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
用法二:转人工后,加号中可添加一个订单按钮,点击后给客服发送一条订单消息。
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);
//自定义订单状态名称 只有订单状态是0时才有效,其他值还按照原有逻辑
//orderCardContent.setOrderStatus(0);
//orderCardContent.setStatusCustom("您的自定义状态");
//订单总金额(单位是分)
orderCardContent.setTotalFee(1234);
//订单商品总数
orderCardContent.setGoodsCount("4");
//订单链接
orderCardContent.setOrderUrl("https://item.jd.com/1765513297.html");
//订单创建时间
orderCardContent.setCreateTime(System.currentTimeMillis() + "");
//转人工后是否自动发送
orderCardContent.setAutoSend(true);
//每次返回再次进入聊天页面是否都重新发送 true 每次都发,false 只发一次,默认只发一次
orderCardContent.setEveryTimeAutoSend(false);
//订单商品集合
orderCardContent.setGoods(goodsList);
ZCSobotApi.sendOrderGoodsInfo(context, orderCardContent);
}
}
};
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
配置订单卡片拦截,也可使用 ZCSobotApi.setNewHyperlinkListener()进行拦截;setOrderCardListene 拦截后 setNewHyperlinkListener 就不会在拦截了。
ZCSobotApi.setOrderCardListener(new SobotOrderCardListener() {
@Override
public void onClickOrderCradMsg(OrderCardContentModel orderCardContent) {
ToastUtil.showToast(getApplicationContext(), "点击了订单卡片" );
}
});
2
3
4
5
6
效果图如下:
# 10. 查看商户客服是否正在和用户聊天 (仅电商版可用)
/**
* 判断当前用户是否正在与当前商户客服聊天
*
* @param appkey 当前商户的appkey
* @return true 表示正在与当前商户客服聊天
* false 表示当前没有与所选商户客服聊天
*/
ZCSobotApi.isActiveOperator(appkey);
2
3
4
5
6
7
8
# 11. 设置用户是否是 vip 和用户 vip 级别
//可在启动智齿客服时设置
//指定客户是否为vip,0:普通 1:vip
info.setIsVip("1");
//通过名称设置vip级别;vip级别可在智齿管理端(系统设置>自定义字段>客户字段)中编辑,拿到等级对应的 ID 或者名称
info.setVip_level("尊贵");
2
3
4
5
# 12. 设置用户自定义标签
//可在启动智齿客服时设置
//用户标签可在智齿管理端(系统设置>自定义字段>客户字段)中编辑,拿到用户标签对应的 ID 或者名称
//可添加多个用户标签,多个标签 ID 或者名称之间用,分割
info.setUser_label("明星,记者");
2
3
4
# 13. 转人工后可隐藏“+”号菜单栏中的按钮
//隐藏留言功能,人工和机器人模式下都会隐藏 true 隐藏,false 显示,默认false
info.setHideMenuLeave(true);
//隐藏留言功能,只有人工模式下会隐藏 true 隐藏,false 显示,默认false
info.setHideMenuManualLeave(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);
2
3
4
5
6
7
8
9
10
11
12
13
14
# 14. 发送自定义卡片到会话记录,以系统的方式推荐给客户
自定义卡片参数说明文档 (opens new window)
//1.创建SobotChatCustomCard数据
SobotChatCustomCard customCard = new SobotChatCustomCard();
//卡片id
customCard.setCardId("cardId12121212");
//推荐显示模式,默认false,只有在人工模式下才能把卡片推送给用户;true 机器模式下也能把卡片推送给用户;一个会话只能发送一次
customCard.setShowCustomCardAllMode(true);
//卡片类型 0, "订单卡片",1, "商品卡片"
customCard.setCardType(rg_card_type.getCheckedRadioButtonId() == R.id.rg_dingdan?0:1);
//卡片样式 0, "平铺" 1, "列表"
customCard.setCardStyle(rg_card_style.getCheckedRadioButtonId()==R.id.rg_pingpu?0:1);
//是否以客户身份发送: 0:“系统身份发送",1:“客户身份发送”,从v4.1.4版本开始支持
customCard.setIsCustomerIdentity(0);
// 配置顶部引导语、图片、卡片描述
customCard.setCardDesc("测试的是的方式测试的是的方式测试的是的方式测试的是的方式测试的是的方式测试的是的方式测试的是的方式");
customCard.setCardGuide("测试标题 引导语测试标题 引导语测试标题 引导语测试标题 引导语测试标题 引导语测试标题 引导语测试标题 引导语");
customCard.setCardImg("https://hk.sobot.com/auth/_next/static/media/sideZh.74024132.png");
customCard.setCardLink("https://www.sobot.com");
// 配置自定义点击按钮
List<SobotChatCustomMenu> menus = new ArrayList<>();
SobotChatCustomMenu m = new SobotChatCustomMenu();
m.setMenuLink("胜多负少士大夫胜多负少士大夫胜多负少士大夫胜多负少士大夫");
m.setMenuLinkType(0);
m.setMenuType(2);
m.setMenuName("发送");
m.setMenuTip("发送提示");
menus.add(m);
SobotChatCustomMenu mm = new SobotChatCustomMenu();
mm.setMenuLink("胜多负少士大夫");
mm.setMenuLinkType(2);
mm.setMenuType(1);
mm.setMenuName("确认");
mm.setMenuTip("发送提示");
menus.add(mm);
SobotChatCustomMenu mmm = new SobotChatCustomMenu();
mmm.setMenuLink("胜多负少士大夫");
mmm.setMenuLinkType(2);
mmm.setMenuType(0);
mmm.setMenuName("查看详情手动阀手动阀是的发士大夫士大夫士大夫是的发士大夫");
mmm.setMenuTip("发送提示");
menus.add(mmm);
customCard.setCardMenus(menus);
// 配置自定义字段
Map<String ,Object> param = new HashMap<>();
param.put("测试","0999999999999990");
customCard.setCustomField(param);
// 配置自定义卡片中间列表部分
List<SobotChatCustomGoods> goods = new ArrayList<>();
int goodsNum = 3;
for (int i = 0; i < goodsNum; i++) {
SobotChatCustomGoods g = new SobotChatCustomGoods();
//机器人标准问题,可为"",从 v4.1.4版本开始支持
g.setCustomCardQuestion("第一个问题的标问");
g.setCustomCardAmount("222.9");
g.setCustomCardTime("2023-06-25 14:32:21");
g.setCustomCardCode("sobot121u321u3");
g.setCustomCardStatus("待收货");
g.setCustomCardCount("5");
g.setCustomCardAmountSymbol("¥");
g.setCustomCardName(i+"测试邮箱我是的就就的的的是是我我我的的的嗡嗡嗡嗡嗡嗡嗡嗡嗡问问二位问问额嗡嗡嗡嗡嗡嗡为微软微软微软微软微软微软");
g.setCustomCardId("cardId_"+i);
g.setCustomCardDesc("测试邮箱我是的就就的的的是是我我我的的的嗡嗡嗡嗡嗡嗡嗡嗡嗡问问二位问问额嗡嗡嗡嗡嗡嗡为微软微软微软微软微软微软");
g.setCustomCardThumbnail("https://hk.sobot.com/auth/_next/static/media/sideZh.74024132.png");
if(i==0){
List<SobotChatCustomMenu> menus2 = new ArrayList<>();
menus2.add(m);
g.setCustomMenus(menus2);
}else if(i == 1){
List<SobotChatCustomMenu> menus2 = new ArrayList<>();
menus2.add(m);
menus2.add(mm);
g.setCustomMenus(menus2);
}else {
List<SobotChatCustomMenu> menus2 = new ArrayList<>();
menus2.add(m);
menus2.add(mm);
menus2.add(mmm);
g.setCustomMenus(menus2);
}
goods.add(g);
}
customCard.setCustomCards(goods);
//设置卡片
info.setCustomCard(customCarddange);
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# ● 留言工单相关
# 1. 工作台设置留言界面
在工作台可以设置留言界面
# 2. 留言页面用户信息自定义配置
留言中的邮箱、电话、附件这三个参数的校验和显示逻辑可在pc端console页面配置。
# 3. 跳转到留言页面
/**
* 跳转到留言界面
*
* @param context 上下文 必填
* @param info 用户的appkey 必填 如果是平台用户需要传总公司的appkey
* @param isOnlyShowTicket true只显示留言记录界面,false 请您留言和留言记录界面都显示
*/
ZCSobotApi.openLeave(Context context,Information info,boolean isOnlyShowTicket);
2
3
4
5
6
7
8
示例代码:
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);
//指定留言模版id,跳转到指定的留言界面
info.setLeaveTemplateId("7800560a37784ce1be064915c8389d28");
ZCSobotApi.openLeave(SobotStartActivity.this, info, false);
2
3
4
5
6
7
8
9
10
11
# 4. 留言页面事件拦截
SDK 中留言可跳转到自定义页面,如有此需求,可以使用如下方法进行设置:
ZCSobotApi.setSobotLeaveMsgListener(new SobotLeaveMsgListener() {
@Override
public void onLeaveMsg() {
ToastUtil.showToast(getApplicationContext(),"在这里实现方法,跳转页面");
}
});
2
3
4
5
6
# 5. 已完成状态的留言详情界面的回复按钮可通过参数配置是否显示
//已完成状态的留言,是否可持续回复 true 持续回复 ,false 不可继续回复 ;
//默认 true 用户可一直持续回复
ZCSobotApi.setSwitchMarkStatus(MarkConfig.LEAVE_COMPLETE_CAN_REPLY,true);
2
3
# 6. 获取留言回复
/**
* 获取未读留言回复列表,如果获取到有未读的留言回复,把最新的一条展示在通知栏中,点击通知栏通知,跳转到留言详情页面
*
* 如果您通过类似定时任务的方式实时获取最新的留言回复,两次请求间隔时间需大于 60s,接口才会有数据返回
*
* @param context 上下文 必填
* @param partnerId 用户唯一标识 与 information 中传的 partnerid 一致
* @param noReadLeaveReplyListener 获取未读留言回复列表回调,SobotLeaveReplyModel:单个留言回复对象
*/
ZCSobotApi.getLastLeaveReplyMessage(SobotStartActivity.this,"your partnerid", new SobotNoReadLeaveReplyListener() {
@Override
public void onNoReadLeaveReplyListener(List<SobotLeaveReplyModel> sobotLeaveReplyModelList) {
if(sobotLeaveReplyModelList!=null&&sobotLeaveReplyModelList.size()>0){
// 发送留言回复通知,点击通知栏通知后,跳转到留言详情页面
ZCSobotApi.sendLeaveReplyNotification(SobotStartActivity.this, sobotLeaveReplyModelList.get(0), R.drawable.sobot_logo_small_icon, R.drawable.sobot_logo_small_icon);
}
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 7. 添加留言评价主动提醒开关
//已完成留言详情界面-未评价:返回时是否弹出服务评价窗口(只会第一次返回弹,下次返回不会再弹) 默认false(不弹)
info.setShowLeaveDetailBackEvaluate(true);
2
# 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);
2
3
4
5
6
7
8
9
10
11
12
13
# ● 评价
# 1. 设置评价界面
在工作台可以设置,满意度评价界面:
# 2. 导航栏左侧点击返回时是否弹出满意度评价
注意:只有用户发送过消息,满意度评价窗口才能弹出。
//点击返回时是否弹出弹窗(您是否结束会话?)
info.setShowLeftBackPop(true);
//导航栏左侧点击返回时是否弹出满意度评价。true弹出,false不弹;默认false
info.setShowSatisfaction(false);
2
3
4
效果图如下:
# 3. 导航栏右侧关闭按钮是否显示和点击时是否弹出满意度评价
注意:只有用户发送过消息,满意度评价窗口才能弹出。
//设置是否显示导航栏右侧关闭按钮,true显示,false隐藏;默认false
info.setShowCloseBtn(false);
//导航栏右侧点击关闭按钮时是否弹出满意度评价。true弹出,false不弹;默认false
info.setShowCloseSatisfaction(false);
2
3
4
# 4. 配置用户提交人工满意度评价后释放会话
/**
* 配置用户提交人工满意度评价后释放会话
* @param context 上下文对象
* @param flag true 表示释放会话 false 表示不释放会话
*/
ZCSobotApi.setEvaluationCompletedExit(context,flag);
2
3
4
5
6
# 5. 左上角返回和右上角关闭时,人工满意度评价弹窗界面配置是否显示暂不评价按钮
/**
* 左上角返回和右上角关闭 返回弹出评价窗口时,是否显示暂不评价按钮 默认 false (不显示)
*/
info.setCanBackWithNotEvaluation(true);
2
3
4
# ● 消息相关
# 1. 发送文本消息
如您的 APP 需要主动发送文本消息给客服,请使用如下代码:
/**
* 发送文本类信息
* @param context
* @param content 文本内容
*/
ZCSobotApi.sendTextToUser(Context context,String content)
2
3
4
5
6
# 2. 设置是否开启消息提醒
当用户不处在聊天界面时,收到客服的消息,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);
2
3
4
5
6
7
8
示例代码:
//设置是否开启消息提醒
ZCSobotApi.setNotificationFlag(getApplicationContext(), true, R.drawable.sobot_logo_small_icon, R.drawable.sobot_logo_icon);
2
# 3. 设置离线消息
开启离线消息:
// 开启通道接受离线消息,开启后会将消息以广播的形式发送过来,如果无需此功能那么可以不做调用
ZCSobotApi.checkIMConnected(getApplicationContext(), "uid");
2
关闭离线消息:
// 关闭通道,清除当前会话缓存
ZCSobotApi.closeIMConnection(getApplicationContext());
2
# 4. 注册广播、获取新收到的信息和未读消息数
注册广播后,当消息通道连通时,可以获取到新接收到的消息。
1 注册广播
/**
* action:ZhiChiConstants.sobot_unreadCountBrocast
*/
IntentFilter filter = new IntentFilter();
filter.addAction(ZhiChiConstant.sobot_unreadCountBrocast);
contex.registerReceiver(receiver, filter);
2
3
4
5
6
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");
Bundle bundle = intent.getExtras();
ZhiChiPushMessage message = (ZhiChiPushMessage) bundle.get("sobotMessage");
LogUtils.i(" 未读消息数:" + noReadNum + " 新消息内容:" + content);
LogUtils.i(" 消息对象:" + message.toString());
unread_msg_num.setText(noReadNum + "");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
当用户不处在聊天界面时,收到客服的消息会将未读消息数保存在本地,如果需要获取本地保存的未读消息数,那么在需要的地方调用该方法即可。如下:
/**
* @param context 上下文对象
* @param partnerid 用户唯一标识 与 information 中传的 partnerid 一致,
* @return int
*/
ZCSobotApi.getUnReadMessage(Context context,String partnerid);//如果您没有在 information 里设置这个 partnerid,请传入null。
2
3
4
5
6
# 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
3
4
5
6
7
8
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);
}
}
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 6. 自定义超链接的点击事件(拦截范围:帮助中心、留言、聊天、留言记录、商品卡片,订单卡片,位置卡片)
// 链接的点击事件, 根据返回结果判断是否拦截 如果返回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
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
设置位置卡片点击事件回调 :
//位置卡片点击后默认优先打开百度地图,没有安装百度地图,再打开高德地图;可拦截位置卡片点击事件,自己处理
SobotOption.mapCardListener = new SobotMapCardListener() {
@Override
public boolean onClickMapCradMsg(Context context, SobotLocationModel locationModel) {
if (context != null && locationModel != null) {
ToastUtil.showCustomToast(context, "点击拦截位置卡片事件");
//优先打开高德地图
//StMapOpenHelper.firstOpenGaodeMap(context, locationModel);
//优先打开百度地图
//StMapOpenHelper.firstOpenBaiduMap(context, locationModel);
}
//返回true 拦截 ;返回false 不拦截
return true;
}
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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;
}
}
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 8. 替换消息中手机或固话识别的正则表达式
ZCSobotApi.replacePhoneNumberPattern(String regex);
# 9. 替换消息中超链接识别的正则表达式
ZCSobotApi.replaceWebUrlPattern(String regex);
# 10. 隐藏消息列表中的时间提示
//isHide true 隐藏 ,false 显示 默认false
ZCSobotApi.hideTimemsgForMessageList( Context context, boolean isHide);
2
# ● 会话页面自定义 UI 设置
为了咨询客服窗口的界面风格能与集成智齿客服 SDK 的 APP 整体统一,智齿客服 SDK 提供了简洁的 UI 自定义配置选项。
# 1. 配置属性值
以下属性可在 Application 的 oncreate() 方法中设置:
//设置 toolbar右边第一个按钮是否显示,默认显示
SobotUIConfig.sobot_title_right_menu1_display = true;
//设置 toolbar右边第二个按钮是否显示,默认隐藏(评价)
SobotUIConfig.sobot_title_right_menu2_display = true;
//设置 toolbar右边第三个按钮是否显示,默认隐藏
SobotUIConfig.sobot_title_right_menu3_display = true;
//修改toolbar右边第三个按钮的图片(电话图标R.drawable.sobot_phone)
SobotUIConfig.sobot_title_right_menu3_bg = R.drawable.sobot_phone;
//设置toolbar右边第三个按钮电话需要拨打的号码
SobotUIConfig.sobot_title_right_menu3_call_num = "18510000000";
2
3
4
5
6
7
8
9
10
# 2. 动态控制显示标题栏的头像、昵称和公司名称
/**
* 设置聊天界面头部导航栏昵称显示模式
*
* @param context 上下文对象
* @param title_type title的显示模式
* SobotChatTitleDisplayMode.Default:显示客服昵称(默认)
* SobotChatTitleDisplayMode.ShowFixedText:显示固定文本
* @param custom_title 如果需要显示固定文本,需要传入此参数,其他模式可以不传
* @param isShowTitle 是否显示标题 true 显示;false 隐藏,默认 false
*/
ZCSobotApi.setChatTitleDisplayMode(getApplicationContext(),
SobotChatTitleDisplayMode.ShowFixedText, "昵称", false);
/**
* 设置聊天界面头部导航栏的头像模式
*
* @param context 上下文对象
* @param avatar_type 头像的显示模式
* SobotChatAvatarDisplayMode.Default:显示客服头像(默认)
* SobotChatAvatarDisplayMode.ShowFixedAvatar:显示固定头像
* @param custom_avatar_url 如果需要显示固定头像,需要传入此参数,其他模式可以不传
* @param isShowAvatar 是否显示头像
*/
ZCSobotApi.setChatAvatarDisplayMode(getApplicationContext(),SobotChatAvatarDisplayMode.Default, "https://sobot-test.oss-cn-beijing.aliyuncs.com/console/66a522ea3ef944a98af45bac09220861/userImage/20191024164346682.PNG", false);
/**
* 设置聊天界面头部导航栏公司名称显示模式
*
* @param context 上下文对象
* @param company_type 公司名称的显示模式
* SobotChatCompanyDisplayMode.Default:显示公司名称(默认)
* SobotChatCompanyDisplayMode.ShowFixedText:显示固定文本
* @param custom_company_name 如果需要显示固定文本,需要传入此参数,其他模式可以不传
* @param isShowCompany 是否显示标题 true 显示;false 隐藏,默认 false
*/
ZCSobotApi.setChatCompanyDisplayMode(getApplicationContext(), SobotChatCompanyDisplayMode.ShowFixedText,"公司名字", false);
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
# 3. 控制横竖屏显示开关
//true 横屏 , false 竖屏; 默认 false 竖屏
ZCSobotApi.setSwitchMarkStatus(MarkConfig.LANDSCAPE_SCREEN,false);
2
# 4. 横屏下是否打开刘海屏开关
//只有在横屏下才有用;竖屏已适配,可修改状态栏颜色
//true 打开 ,false 关闭; 默认 false 关闭
ZCSobotApi.setSwitchMarkStatus(MarkConfig.DISPLAY_INNOTCH, true);
2
3
# 5. UI 样式通过同名资源替换
在客户 APP 中 colors.xml 中添加同名颜色可覆盖智齿 SDK 中的颜色样式;也可通过在主项目中同一位置放一个同名的图片资源去替换智齿 SDK 界面中的图片;也可通过在主项目中同一位置放一个同名的文字资源去替换智齿 SDK 界面中的文字。
以下是常用的颜色配置,更多颜色、图片资源可到手动集成模块中下载源码包中去查找。
<!-- 主题色 默认绿色 -->
<color name="sobot_color">@color/sobot_common_green</color>
<!-- 头部开始 -->
<!-- 头部导航栏和状态栏背景渐变色 左边 开始 -->
<color name="sobot_color_title_bar_left_bg">@color/sobot_gradient_start</color>
<!-- 头部导航栏和状态栏背景渐变色 右边 结束 -->
<color name="sobot_color_title_bar_bg">@color/sobot_gradient_end</color>
<!-- 头部昵称颜色 -->
<color name="sobot_color_title_bar_nike_name">@color/sobot_white</color>
<!-- 头部公司名称颜色 -->
<color name="sobot_color_title_bar_company_name">@color/sobot_white</color>
<!-- 头部两侧菜单字体颜色 -->
<color name="sobot_color_title_bar_menu_text">@color/sobot_white</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_blue</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_color</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_start">@color/sobot_gradient_start</color>
<!-- 消息气泡右侧背景默认颜色 渐变色 右边 结束-->
<color name="sobot_chat_right_bgColor_end">@color/sobot_gradient_end</color>
<!-- 左侧消息气泡昵称颜色 -->
<color name="sobot_chat_left_nikename_color">@color/sobot_common_gray2</color>
<!-- 右侧消息气泡昵称颜色 -->
<color name="sobot_chat_right_nikename_color">@color/sobot_common_gray2</color>
<!--引用消息-->
<!--文本消息气泡 左侧 引用 类型 颜色 黑色字 -->
<color name="sobot_left_appoint_msg_type_color">@color/sobot_common_gray2</color>
<!--文本消息气泡 左侧 引用 内容 颜色 黑色字 -->
<color name="sobot_left_appoint_msg_text_color">@color/sobot_common_gray3</color>
<!--文本消息气泡 左侧 引用 卡片里边 颜色 黑色字 -->
<color name="sobot_left_appoint_msg_card_text_color">@color/sobot_common_gray1</color>
<!--文本消息气泡 右侧 引用 类型 颜色 白色字 -->
<color name="sobot_right_appoint_msg_type_color">#E6FFFFFF</color>
<!--文本消息气泡 右侧 引用 内容 颜色 白色字 -->
<color name="sobot_right_appoint_msg_text_color">#D9FFFFFF</color>
<!-- 消息气泡右侧 线条颜色-->
<color name="sobot_chat_right_line">#99FFFFFF</color>
<!--消息气泡左侧 线条颜色-->
<color name="sobot_chat_left_line">#CCCCCC</color>
<!--右侧 引用消息 引用部分背景色-->
<color name="sobot_chat_appoint_right_transparent_bg">#24FFFFFF</color>
<!--左侧 引用消息 引用部分背景色-->
<color name="sobot_chat_appoint_left_transparent_bg">#FFFFFF</color>
<!--引用消息 小方块 占位背景色-->
<color name="sobot_chat_appoint_zhanwei_bg">#CDD9EA</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_white</color>
<!--留言 导航栏切换 选中 字体 颜色 -->
<color name="sobot_postMsg_nav_sel_tx_color">@color/sobot_white</color>
<!--留言 导航栏切换 未选中字体 颜色 -->
<color name="sobot_postMsg_nav_tx_color">@color/sobot_white</color>
<!--留言引导语 超链接颜色 -->
<color name="sobot_postMsg_url_color">@color/sobot_common_blue</color>
<!--留言 上传图片 弹窗 选项背景色 -->
<color name="sobot_color_setting_item_pressed">@color/sobot_common_white</color>
<!-- 聊天界面按钮的背景颜色 -->
<color name="sobot_btn_bg">@color/sobot_color</color>
<color name="sobot_btn_bg_pressed">@color/sobot_color</color>
<color name="sobot_btn_bg_disable">#EFF3FA</color>
<color name="sobot_text_btn_color">#ffffff</color>
<color name="sobot_text_btn_color_pressed">#80ffffff</color>
<!-- 通告布局背景颜色-->
<color name="sobot_announcement_bgcolor">#FFFBE6</color>
<!-- 通告标题字体颜色-->
<color name="sobot_announcement_title_color">@color/sobot_common_gray1</color>
<!-- 置顶通告是超链接 文字颜色-->
<color name="sobot_announcement_link_color">@color/sobot_common_hese</color>
<!-- 删除历史记录的字体颜色 -->
<color name="sobot_text_delete_hismsg_color">@color/sobot_common_red</color>
<!--输入框上边 自定义标签 整体背景颜色-->
<color name="sobot_lable_bg_color">@color/sobot_common_gray6</color>
<!--自定义标签边框颜色-->
<color name="sobot_lable_stroke_color">#EDEEF0</color>
<!--自定义标签默认填充颜色-->
<color name="sobot_lable_nomal_bg_color">@color/sobot_white</color>
<!--自定义标签选中填充颜色-->
<color name="sobot_lable_press_bg_color">@color/sobot_white</color>
<!--自定义标签字体颜色-->
<color name="sobot_lable_text_color">@color/sobot_common_gray1</color>
<!--商品信息title颜色-->
<color name="sobot_goods_title_text_color">@color/sobot_common_gray1</color>
<!--商品信息描述颜色-->
<color name="sobot_goods_des_text_color">@color/sobot_common_gray2</color>
<!--商品价格颜色-->
<color name="sobot_goods_price_text_color">@color/sobot_color</color>
<!--订单卡片 文字通用颜色-->
<color name="sobot_order_label_text_color">@color/sobot_common_gray1</color>
<!--订单卡片 订单状态颜色-->
<color name="sobot_order_status_text_color">#E67F17</color>
<!--订单卡片 商品描述颜色-->
<color name="sobot_order_des_text_color">@color/sobot_common_gray2</color>
<!--留言记录详情时间线线条颜色-->
<color name="sobot_ticket_deal_line_grey">@color/sobot_common_gray5</color>
<!--留言 选择业务 字体颜色-->
<color name="sobot_post_msg_template_text_color">@color/sobot_color</color>
<!-- 评价、技能组、切换业务、留言弹窗 选择按钮选中背景色-->
<color name="sobot_dialog_btn_select">@color/sobot_color</color>
<!-- 评价 标签按钮默认文字颜色-->
<color name="sobot_chat_evaluate_question_select_textColor">@color/sobot_color</color>
<!--评价 提交按钮-->
<color name="sobot_evaluate_btn_press">@color/sobot_color</color>
<color name="sobot_evaluate_btn_nor">#4ADABE</color>
<!--十分评价 (方块) 选中的颜色 -->
<color name="sobot_ten_evaluate_select">#FFF0AC0E</color>
<!--五星评价控件下边 对应描述的颜色-->
<color name="sobot_color_evaluate_ratingBar_des_tv">@color/sobot_common_hese</color>
<!--多轮会话 标签 字体颜色-->
<color name="sobot_template2_lable_text_color">@color/sobot_color</color>
<color name="sobot_template4_more_text_color">@color/sobot_common_blue</color>
<!--线条 分割线颜色-->
<color name="sobot_line_1dp">@color/sobot_common_gray5</color>
<!-- 聊天内容 背景颜色 -->
<color name="sobot_lv_message_bg">@color/sobot_white</color>
<!--历史记录里 引导问题中的问题的颜色-->
<color name="sobot_color_suggestion_history">@color/sobot_common_gray1</color>
<!-- 文件消息 发送和下载 button背景 -->
<color name="sobot_btn_normal_color">@color/sobot_color</color>
<!--文件进度条前景色-->
<color name="sobot_sectorProgressView_fgColor">#4D000000</color>
<!--自动补全背景色-->
<color name="sobot_auto_complete_press">#EFF3FA</color>
<color name="sobot_auto_complete">@color/sobot_white</color>
<!-- 自定义卡片 -->
<color name="sobot_card_goods_desc">@color/sobot_common_gray9</color>
<color name="sobot_card_goods_price">#FFFE7F02</color>
<!-- 边框-->
<color name="sobot_card_mgs_bg">@color/sobot_white</color>
<color name="sobot_card_mgs_bg1">#fffdff</color>
<color name="sobot_card_mgs_bg2">#fbf8fb</color>
<color name="sobot_card_mgs_bg3">#f4f1f5</color>
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# 6.设置夜间(深色)模式
4.1.4 版本 新增
/** 设置界面白天、夜间模式或者跟随系统,默认跟随系统
* sdk 初始化后设置,因为每次初始化后会还原。
* @param mode 0 / AppCompatDelegate.MODE_NIGHT_AUTO:根据当前时间在day/night主题间切换
* 1 / AppCompatDelegate.MODE_NIGHT_NO:白天模式
* 2 / AppCompatDelegate.MODE_NIGHT_YES:夜间模式
* 其它 / AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM:跟随系统
*
*/
ZCSobotApi.setLocalNightMode(context, int mode);
2
3
4
5
6
7
8
9
# ● 其他配置
# 1. 自定义自动应答语
SDK 中的自动应答语可以在 PC 工作台进行动态设置,如果 PC 工作台的设置满足不了您的需求,那么您可以使用以下接口在代码中进行本地配置。
注意:本地设置本地优先,PC 端不在起效。
information.setAdmin_Hello_Word( "自定义客服欢迎语");//自定义客服欢迎语,默认为空 (如果传入,优先使用该字段)
information.setRobot_Hello_Word( "自定义机器人欢迎语");//自定义机器人欢迎语,默认为空 (如果传入,优先使用该字段)
information.setUser_Tip_Word( "自定义用户超时提示语");//自定义用户超时提示语,默认为空 (如果传入,优先使用该字段)
information.setAdmin_Tip_Word("自定义客服超时提示语");//自定义客服超时提示语,默认为空 (如果传入,优先使用该字段)
information.setAdmin_Offline_Title( "自定义客服不在线的说辞");// 自定义客服不在线的说辞,默认为空 (如果传入,优先使用该字段)
information.setUser_Out_Word( "自定义用户超时下线提示语");// 自定义用户超时下线提示语,默认为空 (如果传入,优先使用该字段)
2
3
4
5
6
# 2. 自定义聊天记录显示时间范围
如想设置用户只能看到 xx 天内的聊天记录,那么可以调用以下方法进行设置:
/**
* 控制显示历史聊天记录的时间范围,最多只能显示60天内的消息,单位(分钟)
* 不传默认会显示所有的历史记录
* @param time 查询时间(例:100-表示从现在起前100分钟的会话)
*/
ZCSobotApi.setScope_time(context,time);
2
3
4
5
6
# 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.operatorMenus = objects;
//设置回调
SobotUIConfig.pulsMenu.sSobotPlusMenuListener = new SobotPlusMenuListener() {
@Override
public void onClick(View view, String action) {
//action与实体类中的action对应
ToastUtil.showToast(getApplicationContext(), "action:"+action);
}
};
}
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
# 4. 调起拨号界面接口
/**
* @param phone 是传入的电话号码 context 上下文对象
*/
CommonUtils.callUp(String phone, Context context)
2
3
4
# 5. 智齿日志显示开关
/**
* true 显示日志信息 默认false不显示
*/
ZCSobotApi.setShowDebug(false);
2
3
4
# 6. 多语言支持
方式一、 目前 SDK 支持英文和中文等多种语言,语言会根据当前手机语言自行切换适配,如果当前手机语言不识别,默认使用中文。
如果需要新增语言包,把支持的语言文件放入对应的语言目录下即可,例如;英文路径:sobotsdk/src/main/res/values-en/strings.xml。
说明:语言文件夹名称为 values- 的后面加上语言的标示,例如 values-en;strings.xml 名字不变。
方式二、
《客户SDK支持语言编码表》 (opens new window)
/**
* 指定使用国际化语言包
* @param language 指定语言编码,例如:"zh-Hans":简体中文、"en":英文,其他语言编码参考《客户SDK支持语言编码表》
* @param isUse 是否使用指定语言
*/
ZCSobotApi.setInternationalLanguage(context,language, isUse);
2
3
4
5
6
特殊处理:
如果多语言时配置了人工评价或机器人评价标签,不支持多语言显示,可以通过如下属性隐藏显示(不影响评价功能使用,仅评价内容中缺失标签)。
// 隐藏机器人时评价标签,默认不隐藏。 true 隐藏 ;false 显示
info.setHideRototEvaluationLabels(false);
// 隐藏人工时评价标签,默认不隐藏。 true 隐藏 ;false 显示
info.setHideManualEvaluationLabels(false);
2
3
4
5
# 7. 时区适配
默认系统北京东八区标准事件,如果需要根据手机时区动态适配,配置如下代码:
// false 默认使用东八区时区,true 自动适配手机系统设置的时区
ZCSobotApi.setSwitchMarkStatus(MarkConfig.AUTO_MATCH_TIMEZONE, false);
2
# 8. 弹出权限用途提示框
是否在申请权限前弹出权限用途提示框,配置如下代码:
// 是否在申请权限前弹出权限用途提示框,默认 false 不弹,true 弹
ZCSobotApi.setSwitchMarkStatus(MarkConfig.SHOW_PERMISSION_TIPS_POP, false);
2
# 9. 智齿部分功能页面点击返回的监听(只记录不拦截),可自己添加逻辑(例如埋点)
ZCSobotApi.setFunctionClickListener(new SobotFunctionClickListener() {
@Override
public void onClickFunction(Context context, SobotFunctionType functionType) {
//1:留言返回,2:会话页面返回,3:帮助中心返回,4:电商消息中心页面返回,5:电话联系客服
LogUtils.i(functionType.toString());
}
});
2
3
4
5
6
7
# 10. 安全校验
1.功能位置:在线渠道设置-渠道安全设置-安全秘钥设置-勾选“生效范围(APP)"。
2、开启生效范围 APP “安全密钥”功能后,SDK 渠道必须传 partnerid 参数。且对接时传参增加参数 “sign” 和 “createTime”,其中,sign =“MD5(app_key + partnerid + 密钥 + createTime)”,createTime 是 Unix 毫秒时间戳;secret 长度为 32 的字符串,createTime 是毫秒级时间戳。
3、传入参数后智齿会对 sign 进行解密,验证传入的 partnerid 与 sign 中传入的 partnerid 是否一致,若一致则正常接入智齿系统,若不一致则接入失败。若客户没有传 partnerid 或 sign,则视同非法用户,接入失败。
4、APP “安全密钥”的功能开启和关闭,生效范围的设置是实时生效的。
//启动智齿页面时传入下边两个参数
//签名
info.setSign(your sign);
//毫秒级时间戳
info.setCreateTime(crete_time);
2
3
4
5
# ● Information 类说明
# 1. ID 相关
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
app_key | String | 是 | 必须设置,不设置初始化不成功 |
choose_adminid | String | 否 | 指定客服 ID |
tranReceptionistFlag | Integer | 否 | 指定客服 转接类型, 0 可转入其他客服 ; 1 必须转入指定客服 |
partnerid | String | 否 | 用户唯一标识 |
robot_code | String | 否 | 对接机器人 ID |
robot_alias | String | 否 | 对接机器人 ID 对应的别名 |
faqId | String | 否 | 常见问题参数 |
sign | String | 否 | 签名 MD5 加密(app_key+partnerid+secret+create_time) |
createTime | String | 否 | 时间戳 |
电商版:
设置电商转人工溢出策略,以下属性与 transferaction 冲突,如果设置 transferaction,将覆盖 flow_type、flow_companyid、flow_groupid 的配置。
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
customer_code | String | 否 | 商户对接id (仅电商版适用,如果没有 app_key,请提供此编码) |
# 2. 客服工作台显示
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
user_nick | String | 否 | 昵称 |
user_name | String | 否 | 真实姓名 |
user_tels | String | 否 | 用户电话 |
user_emails | String | 否 | 用户邮箱 |
String | 否 | ||
remark | String | 否 | 备注 |
face | String | 否 | 用户自定义头像 |
visit_title | String | 否 | 接入来源页面标题 |
visit_url | String | 否 | 接入的来源URL |
params | String | 否 | 用户资料 |
customer_fields | String | 否 | 固定KEY的自定义字段 |
group_name | String | 否 | 技能组名称 |
groupid | String | 否 | 技能组编号 |
isVip | String | 否 | 指定客户是否为vip |
vip_level | String | 否 | vip等级 |
user_label | String | 否 | 用户标签 |
# 3. 会话页面相关
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
service_mode | Integer | 否 | 自定义接入模式 1 只有机器人,2 仅人工 3 智能客服-机器人优先 4 智能客服-人工客服优先 |
# 4. 其他
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
transferaction | String | 否 | 转人工 指定技能组 溢出 |
summary_params | String | 否 | 转人工自定义字段 |
multi_params | String | 否 | 多轮会话 自定义字段 |
margs | String | 否 | 热点引导问题的扩展字段 |
content | String | 否 | 自动发送商品订单信息内容 |
queue_first | Boolean | 否 | 指定客户优先 |
isArtificialIntelligence | Boolean | 否 | 是否智能转人工,默认 false |
artificialIntelligenceNum | Integer | 否 | 如果是只能转人工,那么未知问题或者向导问题出现多少次时,显示转人工按钮。默认是一次 |
isUseVoice | Boolean | 否 | 是否使用语音功能 默认 true,可以使用语音功能 |
isUseRobotVoice | Boolean | 否 | 是否使用机器人语音功能 默认 false,机器人不可以使用语音功能 会转为文字 |
isShowLeftBackPop | Boolean | 否 | 左上角返回时是否弹出(您是否结束会话?) 默认 false 不弹 |
isShowSatisfaction | Boolean | 否 | 导航栏左侧点击返回时是否弹出满意度评价。默认 false,弹出,false 不弹满意度 |
isShowCloseSatisfaction | Boolean | 否 | 导航栏关闭按钮关闭时是否弹出满意度评价。默认 false,弹出,false 不弹满意度。 |
equipmentId | String | 否 | 设备编号 |
tranReceptionistFlag | Integer | 否 | 转接类型(0 - 可转入其他客服,1 - 必须转入指定客服) |
transferKeyWord | HashSet | 否 | 转人工关键字 |
isCloseInquiryForm | Boolean | 否 | 是否关闭询前表单 |
leaveMsgGuideContent | String | 否 | 留言引导文案 |
leaveMsgGroupId | String | 否 | 留言技能组 |
leaveCusFieldMap | Map | 否 | 留言自定义字段 |
leaveParamsExtends | List | 否 | 对接型字段 |
leaveTemplateId | List | 否 | 留言模版 ID |
hideMenuSatisfaction | Boolean | 否 | 隐藏评价 |
hideMenuLeave | Boolean | 否 | 隐藏留言 |
hideMenuPicture | Boolean | 否 | 隐藏图片 |
hideMenuVedio | Boolean | 否 | 隐藏视频 |
hideMenuCamera | Boolean | 否 | 隐藏拍摄 |
hideMenuFile | Boolean | 否 | 隐藏文件 |
showLeaveDetailBackEvaluate | Boolean | 否 | 留言详情界面返回弹出服务评价窗口 |
canBackWithNotEvaluation | Boolean | 否 | 弹出评价窗口时,暂不评价按钮 |
hideRototEvaluationLabels | Boolean | 否 | 是否隐藏机器人评价标签 |
hideManualEvaluationLabels | Boolean | 否 | 是否隐藏人工评价标签 |
locale | String | 否 | 服务端接口国际化语言 |
helpCenterTel | String | 否 | 帮助中心添加呼叫电话号码 |
helpCenterTelTitle | String | 否 | 帮助中心电话号码按钮字段 |
hideMenuManualLeave | Boolean | 否 | 仅隐藏人工状态下的留言 |
isShowRightMsgFace | Boolean | 否 | 是否显示右侧消息的头像 |
isShowRightMsgNickName | Boolean | 否 | 是否显示右侧消息的昵称 |
isShowEveryLeftMsgFaceNickName | Boolean | 否 | 是否每条左侧都显示做昵称、头像 |
# 源码和 Demo
点击下载 Demo 源码 (opens new window);
点击查看 Demo 使用教程 (opens new window)。
# 常见问题
https://github.com/ZCSDK/FAQ_Android (opens new window)
# 更新说明
<<SDK 版本更新说明>> (opens new window)
# 智齿科技 SDK 收集使用个人信息说明
<<智齿科技 SDK 收集使用个人信息说明>> (opens new window)
请在《隐私政策》中向用户告知使用 智齿客服 SDK,参考条款如下:
SDK 名称:智齿客服 SDK
服务类型:客服系统
收集个人信息类型:设备及系统信息(包括操作系统类型、系统版本、APP 包名、APP 版本、设备类型、设备厂商、设备型号、网络类型)、传感器(包括加速度传感器和距离传感器)、网络身份标识信息(IP 地址)
隐私权政策链接:https://www.zhichi.com/docs/clause/sdk-clause.html
2
3
4
5
6