最近遇到一个需求,要求集成在线客服功能,于是找到了环信客户互动云,在此记录一下集成步骤,以便以后用到,记录下来方便大家查看。如有错误请多多指教。
一、注册环信客户互动云管理员账户
获取appkey和apptoken等信息,图示如下,注意是【管理员模式】
二、SDK集成分两种方法:
1.gradle中引用:http://docs.easemob.com/cs/300visitoraccess/androidsdk#buildgradle_配置
2.下载SDK,直接在项目中以module形式引入项目。
三、初始化SDK
options.setAppkey(APPKEY);
options.setTenantId(APPTOKEN);
//客服SDK初始化
if (!ChatClient.getInstance().init(this,options)){
return;
}
//客服EaseUI的初始化
UIProvider.getInstance().init(this);
这里的APPKEY就是第一步申请的appkey,APPTOKEN在 设置 -.>企业信息 的租户id中查看。
四、打开会话界面
打开会话界面需要一下几个步骤:
1.注册用户;
2.登陆;
3.打开会话;
注册:
private void register(){
ChatClient.getInstance().register(ed_accountid.getText().toString(), ed_password.getText().toString(), new Callback() {
@Override
public void onSuccess() {
Log.d(TAG, "onSuccess: 注册成功");
Toast.makeText(getActivity(),"注册成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onError(int i, String s) {
Log.d(TAG, "onError: 注册失败 code:" + i + "message:" + s );
}
@Override
public void onProgress(int i, String s) {
}
});
}
这里的ed_accountid.getText().toString(), ed_password.getText().toString()是界面中的EditTextView,就不再给出代码了。
登陆:
private void login(){
ChatClient.getInstance().login(ed_accountid.getText().toString(), ed_password.getText().toString(), new Callback() {
@Override
public void onSuccess() {
Log.d(TAG, "onSuccess: 登陆成功");
// Toast.makeText(getActivity(),"登陆成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onError(int i, String s) {
Log.d(TAG, "onError: 登陆失败 Code:" + i + "message:" + s);
}
@Override
public void onProgress(int i, String s) {
}
});
打开会话界面:
private void openChating(){
if (ChatClient.getInstance().isLoggedInBefore()){
//已经登陆,直接进入会话
Intent chatIntent = new IntentBuilder(getActivity())//获取到当前Activity
.setServiceIMNumber("kefuchannelimid_853236")
.build();
startActivity(chatIntent);
}else {
login();
openChating();//执行登陆
}
}
五、打开自定义的会话界面
这里我们需要将SDK中的ChatFragment放到自己的Activity,或者继承ChatFragment重写自己的Fragment在放到自己的Activity中,然后打开自己的Activity即可,打开自定义Activity方法:
Intent chatIntent = new IntentBuilder(getActivity()).setTargetClass(EaseUIAct.class)//自定义activity
.setServiceIMNumber("kefuchannelimid_853236")
.build();
startActivity(chatIntent);
在自定义的Activity中添加会话的ChatFragment:
Bundle bundle = getIntent().getExtras();
if (bundle != null){
//IM服务号
toChatUserName = bundle.getString(com.hyphenate.helpdesk.easeui.util.Config.EXTRA_SERVICE_IM_NUMBER);
//
String chatFragmentTAG = "chatFragment";
chatFragment = (ChatFragment)getSupportFragmentManager().findFragmentByTag(chatFragmentTAG);
if (chatFragment == null){
chatFragment = new ChatFragment();//ChatFragment();
// Bundle bundle1 = new Bundle();
// bundle.putString(com.hyphenate.helpdesk.easeui.util.Config.EXTRA_SERVICE_IM_NUMBER,toChatUserName);
chatFragment.setArguments(getIntent().getExtras());
}
fragmentManager = getSupportFragmentManager();
transaction = fragmentManager.beginTransaction();
transaction.add(R.id.fl_chatContent,chatFragment);
transaction.show(chatFragment);
transaction.commit();
}
六、获取机器人欢迎语
//获取机器人欢迎语
private void getRobotWelcome(){
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://kefu.easemob.com/v1/Tenants/60284/robots/visitor/greetings/app");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// connection.setDoOutput(true);
// connection.setDoInput(true);
// connection.setUseCaches(false);
connection.setRequestMethod("GET");
int code = connection.getResponseCode();
if (code == 200){
InputStream inputStream = connection.getInputStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] tmp = new byte[1024];
int len = -1;
while ((len = inputStream.read(tmp)) != -1){
outputStream.write(tmp,0,len);
}
inputStream.close();
outputStream.close();
String welcome = new String(outputStream.toByteArray(),"utf-8");
JSONObject jsonObject = new JSONObject(welcome);
int type = jsonObject.getInt("greetingTextType");
String greetingText = jsonObject.optString("greetingText");
if (type == 0){
Message message = Message.createReceiveMessage(Message.Type.TXT);
EMTextMessageBody body = null;
body = new EMTextMessageBody(greetingText);
message.setFrom("kefuchannelimid_853236");
message.addBody(body);
message.setMessageTime(System.currentTimeMillis());
message.setMsgId(UUID.randomUUID().toString());
ChatClient.getInstance().chatManager().saveMessage(message);
}
}
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}
这个可以在自定义的会话中的初始化会话界面的时候添加。
好了希望能帮助到大家。