集成方法
先下载KF5SDK-Android2.0的官方demo;注:V2.0版本SDK基于AndroidStudio开发,集成步骤均指的是AndroidStudio的IDE,若您的IDE是Eclipse,请请联系我们并尽快更换 Google官方的IDE。
将demo里的kf5sdkModules文件夹里所有module导入到您的工程中,kf5sdkModule文件夹是对kf5的module封装,具体操作步骤请看这里,然后依赖编译,具体导入步骤请自行查阅相关资料。
在Application初始化下调用[KF5SDKInitializer.init(context)]全局初始化接口;
初始化必要信息: [SPUtils.saveHelpAddress(String helpAddress)], [SPUtils.saveAppID(String appID)];
注:helpAddress即您所注册的逸创云客服平台地址,如 demo.kf5.com;appid为验证是否是您平台的唯一标识,这俩接口需要在对SDK其他操作之前调用。
使用方法
使用 SDK 的相关功能,需要获取到用户的相关信息,用户信息的相关接口全部封装在 UserInfoApi中,SDK除了loginUser(Map<String, String> fieldMap,HttpRequestCallBack callBack)与createUser(Map<String, String> fieldMap, HttpRequestCallBack callBack)不需要userToken (用户唯一标示),其他网络请求接口都需要 userToken,所以开发者必须调用两者任意接口先获取到userToken,然后在调用[SPUtils.saveUserToken(String userToken)] 将userToken 保存,方便其他接口调用;每个接口的功能已在注释里做了说明,此处不再描述。
注:如果逻辑是先调用loginUser接口,这个接口只验证后台当前登录的用户是否存在,当用户不存在的时候返回用户不存在,这时需要调用createUser创建用户,创建成功之后将必要信息缓存起来即可,处理逻辑与loginUser相同;如果逻辑是先调用createUser接口,这个接口只会在用户不存在的时候创建用户,因此可能返回用户已存在的信息,这时调用loginUser直接登录用户即可,处理逻辑同上,如果用户创建成功处理逻辑同上。为避免资源浪费,强烈建议loginUser与createUser俩接口采用惰性初始化,不建议应用初始化时就调用这俩接口。
loginUser 与 createUser 中 filedMap 参数说明:由于 SDK 中用户需保证唯一性,所以每次登陆的用户的 email 或者 phone 不同,即 fieldMap 封装的 email 或者 phone 必须不同,否则 App 中的每个用户看到的所有信息全部相同,具体请参考 demo。Http接口封装:TicketAPI(工单模块)、HelpCenterAPI(帮助中心模块)、IMAPI(即时交谈)。
主要Activity 组件说明:
帮助中心模块:HelpCenterActivity(文档分区)、HelpCenterTypeActivity(文档分类)、HelpCenterTypeChildActivity(文档列表)、HelpCenterTypeDetailActivity(文档详情);
工单模块:FeedBackActivity(工单反馈)、LookFeedBackActivity(工单列表)、 FeedBackDetailActivity(工单详情)、OrderAttributeActivity(工单属性)、RatingActivity(满意度评价);
在线交谈模块:KF5ChatActivity(即时交谈)、AgentGroupChoseActivity(问题分配)。
SDK 现已支持滑动返回并默认开启、若需关闭滑动返回则在BaseSwipeBackActivity中设置;开发者若需自定义Activity过渡动画,则在BaseActivity中设置即可。
日志查看,OkHttpManager中设置HttpLoggingInterceptor日志类型。
Http回调接口onSuccess是http请求成功之后的回调接口,即是说后台返回值回调接口;onFailure是请求失败的回调接口,比如404。
自定义字段
工单自定义字段:创建工单可以设置工单自定义字段内容,通过在FeedBackActivity中getDataMap回调接口中设置,具体参数格式如下:
数据格式标准如标注所示,ParamsKey.NAME代表自定义字段名,该值的获取在kf5控制台查看自定义字段属性可知;Params.VALUE代表自定义字段值,这里是对应自定义字段的内容。ParamsKey.NAME与ParamsKey.VALUE需要成对出现。用户自定义信息:在线交谈时可以设置访客自定义信息,设置自定义信息之后,该内容将在kf5控制台im面板右侧自定义信息处展示。具体操作在KF5ChatActivity中scConnect回调接口调用IMPresenter里的setMetadata接口即可,参数格式如下:
数据格式标准如标注所示,与工单自定义字段同理ParamsKey.NAME与ParamsKey.VALUE需要成对出现。用户自定义字段:该字段在创建(loginUser)或者更新用户信息(updateUser)接口中生效,注意用户自定义字段与用户自定义信息的区别,用户自定义字段可以在后台配置并且需要传入正确的key值与value值;而用户自定义信息是用来展示在im面板右侧的附属信息,多变的,参数格式name与value成对出现就行。具体操作可以参考demo中LoginAcitvity实现,代码如下:
未读消息数:该接口主要提供给客户获取当在线交谈页面断开之后客服发送消息时当未读消息数量,为避免资源浪费,调用时候控制一下调用周期。具体操作参考demo中SettingsFragment调用getUnReadMessageCount参数格式。代码如下:
卡片消息:主要行业是电商领域,用户在交谈过程中有发送产品属性的需求。具体操作参考demo中SettingsFragment实现逻辑,代码如下:
SDK中lib文件夹下的framework概述
该jar包主要包含了核心的工具类、http框架、socket框架以及SDK中必要的接口。
SDK的UI设置
v2.0版SDK将业务逻辑开源,开发者可根据需求自定义UI,组件Activity与xml视图的关系可从SDK中Activity组件说明入手。
第三方库
compile 'com.google.code.gson:gson:2.8.5' compile 'com.github.bumptech.glide:glide:4.8.0'
关于混淆
-keep class com.kf5.sdk.im.entity.**{*;} -keep class com.kf5.sdk.helpcenter.entity.**{*;} -keep class com.kf5.sdk.system.entity.**{*;} -keep class com.kf5.sdk.ticket.entity.**{*;} -keep class com.kf5.sdk.im.expression.**{*;} #glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } #gson -keep class com.google.gson.** {*;} -keep class com.google.**{*;} -keep class sun.misc.Unsafe { *; } -keep class com.google.gson.stream.** { *; } -keep class com.google.gson.examples.android.model.** { *; }