这几天在购物的时候咨询客服,发现在线客服这个东西很不错,今天上午就着手实现了一下。
废话不多说,先看效果
说实话,可能我比较笨,弄这个花了大半天的时间。
本例使用AndroidStudio创建,其中使用了融云 客服这快,网络请求使用的是xutils3.5
项目结构(很简单)
实现过程
第一步:你需要去融云官网注册账号创建运用拿到APP_KEY和App Secret(当然比较懒的小伙伴嫌麻烦直接使用我的也行,谁让我这个人比较好呢,哈哈哈哈~)
第二步:去融云官网下载SDK,将 IMKit 和 IMLib引入项目
下载的SDK解压如下
第三步:修改IMLib这个module中清单文件里面的RONG_CLOUD_APP_KEY,改成我们刚才自己申请的
第四步:修改自己项目的清单文件,加入权限
第五步:创建项目,初始化融云及Xutils网络框架
在自己的Application中添加如下代码
//初始化客服云
RongIM.init(this);
//初始化xutils
x.Ext.init(this);
第六步:获取Token(这里有两种方式,我简单的概述下)
第一种:通过官网直接获取
第二种:通过代码获取(官方告诉我们不要直接在前端获取token,这样不安全,我为了实现功能就将其写在前台,大家正式项目不要学我这样写哦)
看一下官方获取token的说明,首先需要知道他API调用签名的规则
Api调用签名规则
获取Token
通过以上我们就知道该怎么弄了
数据签名我们需要使用sha1加密规则
//SHA1加密// 通用_API_接口签名规则
private static String sha1(String data){
StringBuffer buf = new StringBuffer();
try{
MessageDigest md = MessageDigest.getInstance("SHA1");
md.update(data.getBytes());
byte[] bits = md.digest();
for(int i = 0 ; i < bits.length;i++){
int a = bits[i];
if(a<0) a+=256;
if(a<16) buf.append("0");
buf.append(Integer.toHexString(a));
}
}catch(Exception e){
}
return buf.toString();
}
获取token
Signature=sha1("EmchN7OIPZmzps"+NONCE+Timestamp);
RequestParams params = new RequestParams(
"http://api-cn.ronghub.com/user/getToken.json");
params.addHeader("App-Key",APP_KEY);
params.addHeader("Nonce",NONCE+"");
params.addHeader("Timestamp",Timestamp+"");
params.addHeader("Signature",Signature);
params.addBodyParameter("userId", id);
params.addBodyParameter("name", username);
params.addBodyParameter("portraitUri", "123");
x.http().post(params, new Callback.CommonCallback() {
@Override
public void onCancelled(CancelledException arg0) {
Log.e("TGA","-----CancelledException---");
}
@Override
public void onError(Throwable arg0, boolean arg1) {
Log.e("TGA","-----onError---"+arg0);
}
@Override
public void onFinished() {
Log.e("TGA","-----onFinished---");
}
@Override
public void onSuccess(String s) {
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(s.toString());
token=jsonObject.get("token").toString();
Log.e("TGA","----token----"+token);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
这里重点讲一个,有一点大家不要遗忘,就是前面我所说的要获取app_key和App Secret,这里就需要App Secret了注意看一下截图(注意哦,这里不是App_key 是App Secret 博主就被坑了一次)
到此我们Token就获取到了,接下载我们需要连接融云的服务器
RongIM.connect(token, new RongIMClient.ConnectCallback() {
@Override
public void onTokenIncorrect() {
//失效的状态处理,需要重新获取 Token
// getToken(id,username);
Log.e("TGA","----------connectonTokenIncorrect-------------");
Toast.makeText(MainActivity.this,"connectonTokenIncorrect",Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess(String s) {
Log.e("TGA","----------connectonSuccess-------------");
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
Log.e("TGA","----------connectonError-------------");
}
});
连接成功我们就需要和客服妹妹聊天啦(这里的客服id就是你服务的客服id)
//进入客服
//首先需要构造使用客服者的用户信息
CSCustomServiceInfo.Builder csBuilder = new CSCustomServiceInfo.Builder();
CSCustomServiceInfo csInfo = csBuilder.nickName("融云").build();
/**
* 启动客户服聊天界面。
*
* @param context 应用上下文。
* @param customerServiceId 要与之聊天的客服 Id。
* @param title 聊天的标题,如果传入空值,则默认显示与之聊天的客服名称。
* @param customServiceInfo 当前使用客服者的用户信息。{@link io.rong.imlib.model.CSCustomServiceInfo}
*/
RongIM.getInstance().startCustomerServiceChat(MainActivity.this,
"KEFU155416939664758", "在线客服",csInfo);
这里需要注意我们还需要在清单文件添加客服聊天页面
ConversationFragment这个文件只需要加载一个布局即可
布局文件如下
至此教程也就讲解完了,这里也是带大家入个门,想要制作更多功能,需要去看官方文档说明哦,打字打得手都累了,希望对小伙伴们有帮助哦。