机器人

机器人

2
评论

基于环信sdk在uni-app框架中快速开发一款多平台社交Demo SDK uni_app 环信

beyond 发表了文章 • 547 次浏览 • 2020-05-11 11:34 • 来自相关话题

说在前面:此款 demo 是基于 环信sdk 开发的一款具有单聊、群聊、聊天室、音视频等功能的应用。在此之前我们已经开发完 Vue、react(web端)、微信小程序。这三个热门领域的版本,如有需要源码可以后台留言索取。





 
安装开发工具

我们选用微信小程序来用做示例(如果选择百度、支付宝安装对应开发者工具即可)、

微信开发者工具建议还是安装最新版的。uni-app的开发也必须安装HBuilderX工具,这个是捆绑的,没得选择。要用uni-app,你必须得装!

工具安装:

微信开发者工具

HBuilderX

项目demo介绍:






项目demo启动预览:





 
快速集成环信 sdk:

1、复制整个utils文件






如果你想具体了解主要配置文件 请看这个链接:

http://docs-im.easemob.com/im/web/intro/start

2、如何使用环信的appkey ,可以在环信 console 后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到配置文件中 ,如下图所示:






以上两个重要的配置准备完成之后就可以进行一系列的操作了(收发消息、好友申请、进群入群通知等)

在uni-app中 使用环信 sdk 实现添加、删除好友:

1、在全局 App.vue 文件 钩子函数 onLaunch() 中监听各种事件 (好友申请、收到各类消息等)如图:






发送好友请求:






在onPresence(message)事件中接收到好友消息申请:






同意好友请求:






拒绝好友请求:






实现收发消息:

1、给好友发送消息:






2、接收到消息:

在onTextMessage(message)事件中接收到好友消息,然后做消息上屏处理(具体消息上屏逻辑可看demo中代码示例):





以上展示的仅仅为基本业务场景,更多的业务逻辑详情请看demo示例。api具体详情可以查看 环信sdk 文档

最后结语:基于uni-app这个框架可实现多平台, 虽然目前一期集成环信sdk的版本仅支持微信小程序版本,但二期我们将加入头条、支付宝等小程序,敬请期待。PS:对于安卓、ios移动端,我们建议使用针对移动端开发的sdk版本。

基于uni-app的开发其中也趟了不少坑,在这里就不多赘述了。回归到框架的选型来讲,选用uni-app开发小程序,可同时并行多端小程序,这点是真香,一次开发多端发布。至于审核嘛~ 时快时慢。 查看全部
说在前面:此款 demo 是基于 环信sdk 开发的一款具有单聊、群聊、聊天室、音视频等功能的应用。在此之前我们已经开发完 Vue、react(web端)、微信小程序。这三个热门领域的版本,如有需要源码可以后台留言索取。

1.jpg

 
安装开发工具

我们选用微信小程序来用做示例(如果选择百度、支付宝安装对应开发者工具即可)、

微信开发者工具建议还是安装最新版的。uni-app的开发也必须安装HBuilderX工具,这个是捆绑的,没得选择。要用uni-app,你必须得装!

工具安装:

微信开发者工具

HBuilderX

项目demo介绍:

2.jpg


项目demo启动预览:

3.jpg

 
快速集成环信 sdk:

1、复制整个utils文件

4.jpg


如果你想具体了解主要配置文件 请看这个链接:

http://docs-im.easemob.com/im/web/intro/start

2、如何使用环信的appkey ,可以在环信 console 后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到配置文件中 ,如下图所示:

5.jpg


以上两个重要的配置准备完成之后就可以进行一系列的操作了(收发消息、好友申请、进群入群通知等)

在uni-app中 使用环信 sdk 实现添加、删除好友:

1、在全局 App.vue 文件 钩子函数 onLaunch() 中监听各种事件 (好友申请、收到各类消息等)如图:

6.jpg


发送好友请求:

7.jpg


在onPresence(message)事件中接收到好友消息申请:

8.jpg


同意好友请求:

9.jpg


拒绝好友请求:

10.jpg


实现收发消息:

1、给好友发送消息:

11.jpg


2、接收到消息:

在onTextMessage(message)事件中接收到好友消息,然后做消息上屏处理(具体消息上屏逻辑可看demo中代码示例):

12.jpg

以上展示的仅仅为基本业务场景,更多的业务逻辑详情请看demo示例。api具体详情可以查看 环信sdk 文档

最后结语:基于uni-app这个框架可实现多平台, 虽然目前一期集成环信sdk的版本仅支持微信小程序版本,但二期我们将加入头条、支付宝等小程序,敬请期待。PS:对于安卓、ios移动端,我们建议使用针对移动端开发的sdk版本。

基于uni-app的开发其中也趟了不少坑,在这里就不多赘述了。回归到框架的选型来讲,选用uni-app开发小程序,可同时并行多端小程序,这点是真香,一次开发多端发布。至于审核嘛~ 时快时慢。
1
评论

手把手教程:4小时开发一个视频会议APP【附开源代码】 环信 开源 视频会议

fat1 发表了文章 • 1047 次浏览 • 2020-04-17 00:29 • 来自相关话题

今年是不平凡的一年,没错,就是因为疫情,因为疫情原因 ,大家只能呆着家里,严重影响了我们正常的学习 生活 工作,在这种情况下,只能在家办公,这时候大家就会想到线上视频会议,目前很多互联网公司有这个产品,比较出名的就比如 腾讯会议 钉钉 zoom等,用这些是很方便,但是如果能开发自己的视频会议,那会不会更好或者是更有成就感,下面简单介绍这个这个项目,和大概的开发过程。本项目基于环信音视频云来完成,实现的主要功能有:
  创建会议、删除会议、获取指定会议室详情、加入会议室、退出会议室等关于会议的管理 ;  获取会议室参会人名列表、踢人,设置观众为主播,设置主播为观众等关于会议室的人员管理;  共享桌面(web端);
 三个端的实现:Android,iOS,Web

上面这些功能在项目中都已经实现。还有水印 ,变声等高级功能在环信音视频SDK的接口内部都已经封装好,本项目没有实现 ,大家可以自行去实现。有关多人音视频功能更详细的介绍大家可以参考:这儿。多人音视频实现的实现主要有以下一些场景:社交交友,远程心理咨询、远程医疗、一对一在线教育、远程视频辅助等。咳咳 ,接下来就是纯干货了,给大家介绍我是如何一步步开发出一个完整的多人音视频app。
 
项目截图
 
首先给大家展示下项目运行的效果图,会议界面 主窗口是一个大的 RelativeLayout ,最下面的那一排排小窗口是的实现方法是HorizontalScrollView加上一个开源的组件 com.jaouan.compoundlayout.RadioLayoutGroup 实现的,点击下面的小窗口后,可以 把小窗口的视频流显示在大屏上,具体是调用 updateRemoteSurfaceView(String streamId, EMCallSurfaceView remoteView)来更新SurfaceView,具体的细节大家可以看看代码里面的实现 最后会公布代码开源地址。
















准备工作
    大家得下载安装Android Studio,配置好Android 开发环境,怎么详细配置我就在这不再细说了 网上有很多的教程,大家自己可以找找看,然后大家可以看看环信多人音视频会议的主要功能和一些基本概念介绍。
集成 
  1. 首先大家会想问怎么调用环信的SDK ,大家可以使用 远程依赖SDK包,建议大家用最新版本的远程依赖:
     com.hyphenate:hyphenate-sdk:3.6.6 ,依赖包可以放在 build.gradle里面的 dependencies 选项下面,如下图所示





2.其次怎么使用环信的appkey ,可以在环信音视频云后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到AndroidManifest.xml中 ,如下图所示:






3.经过以上两个重要的前期配置准备 ,接下来我们就可以开始进行代码开发了,首先我们先创建一个项目的DemoApplication类和      DemoHelper类,DemoApplication 类和DemoHelper类都是一个单例类 ,DemoApplication 主要功能就是进行DemoHelper 的初始化,而DemoHelper里面主要是主要有一些option 配置和EMClient 进行初始化,代码如下所示:public void init(Context context) {
EMOptions options = initChatOptions(context);
EMClient.getInstance().init(context, options);
PreferenceManager.init(context);
}
  DemoHelper还有一个重要的功能就是设置  EMConferenceListener 进行会议监听,有关 EMConferenceListener的类的详细介绍 ,通过这个监听可以再加入会议的时候获取到已经在会议中的流和主播信息,分别是通过其中以下两个回调获取:@Override
public void onMemberJoined(EMConferenceMember member){

}

@Override
public void onStreamAdded(EMConferenceStream stream){

}
4.DemoApplication类完成以后,接下来就是怎么去登陆 环信IM 账号和 创建加入会议房间了,首次安装的时候都没有账号,我们使用的办法是自动注册一个账号 在本地进行保存,然后进行登录 ,注册 登录详细接口请看 这儿,  注册 登录的调用大概如下所示: 
 try {
        //注册一个环信ID
        EMClient.getInstance().createAccount(username, password);
            
        //注册成功进行登录
        PreferenceManager.getInstance().setCurrentUserName(username);
        PreferenceManager.getInstance().setCurrentuserPassword(password);
        login();
    } catch (final HyphenateException e) {
       runOnUiThread(new Runnable() {
               public void run() {
                  int errorCode=e.getErrorCode();
                   if(errorCode==EMError.NETWORK_ERROR){
                    Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
      }
   }   
}
 
  public void login() {
 
        //登录已经注册成功的环信ID
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "login: onSuccess");
                //登录成功进入会议房间
                joinRoom();
            }
            @Override
            public void onProgress(int progress, String status) {
                Log.d(TAG, "login: onProgress");
            }
            @Override
            public void onError(final int code, final String message) {
                Log.d(TAG, "login: onError: " + code);
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message,Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
登录完成以后,我们可以根据房间名创建并加入房间,主要代码大概如下: EMClient.getInstance().conferenceManager().joinRoom(currentRoomname, currentPassword, conferenceRole,roomConfig, new EMValueCallBack<EMConference>(){
@Override
public void onSuccess(EMConference value) {
EMLog.i(TAG, "join conference success");
Intent intent = new Intent(MainActivity.this, ConferenceActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(final int error, final String errorMsg) {
EMLog.e(TAG, "join conference failed error " + error + ", msg " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
setBtnEnable(true);
if(error == CALL_TALKER_ISFULL) {
takerFullDialogDisplay();
}else{
Toast.makeText(getApplicationContext(), "Join conference failed " + error + " " + errorMsg, Toast.LENGTH_SHORT).show();
}
}
});
}
});
EMClient.getInstance().conferenceManager().joinRoom() API可以根据房间名创建指定会议,当以该房间名命名的会议不存在时候,会直接创建,当会议已经创建好 可以根据正确的房间名和密码加入房间 ,到这一步为止,我们已经成功的创建 并加入会议。
5.加入会议以后我们进入到会议界面,展示从DemoHelper类 EMConferenceListener 中的 onStreamAdded 回调 和 onMemberJoined 获取到的流和主播列表 ,在ConferenceActivity 中实现 EMConferenceListener ,然后直接把 ConferenceActivity 注册监听,用以下方法  EMClient.getInstance().conferenceManager().addConferenceListener(this); 这样就可实现 EMConferenceListener 事件的处理,比如
 主播 进出房间 :
public void onMemberJoined(final EMConferenceMember member);
public void onMemberExited(final EMConferenceMember member);

增加流 移除流:
public void onStreamAdded(final EMConferenceStream stream)
 public void onStreamRemoved(final EMConferenceStream stream)

管理员变更: 
public void onAdminAdded(String streamId) ;  
public void onAdminRemoved(String streamId)

角色变更  用户被踢  谁在说话等各种回调,可以处理各种业务逻辑 ,详细的请参考 项目中的实现 ,最后会附上项目的开源地址。

6 进入会议房间以后如果用户角色为主播可以进行发布视频流 ,观众只能订阅视频流 不能发布视频流 ,可以调用SDK的publish接口发布流,该接口用到了EMStreamParam参数,你可以自由配置,比如是否上传视频,是否上传音频,使用前置或后置摄像头,视频码率,显示视频页面等等,具体实现可以参考 中发布 订阅视频流的内容, 关于以上的代码逻辑如以 如以下: //发布视频流
normalParam = new EMStreamParam();
normalParam.setStreamType(EMConferenceStream.StreamType.NORMAL);
normalParam.setVideoOff(true);
normalParam.setAudioOff(true);

EMClient.getInstance().conferenceManager().publish(normalParam, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
conference.setPubStreamId(value, EMConferenceStream.StreamType.NORMAL);
addOrUpdateStreamList("local-stream", value);

PhoneStateManager.get(ConferenceActivity.this).addStateCallback(phoneStateCallback);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "publish failed: error=" + error + ", msg=" + errorMsg);
}
});
//订阅其他主播的视频流
private void subscribe(EMConferenceStream stream, EMCallSurfaceView surfaceView) {
EMClient.getInstance().conferenceManager().subscribe(stream, surfaceView, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}

@Override
public void onError(int error, String errorMsg) {

}
});
}
7.有关上麦 下麦 的逻辑处理,观众可以请求上麦成为主播,主播可以下麦成为观众,上麦 下麦 是利用 EMConferenceAttribute进行处理 ,EMConferenceAttribute  是一个事件广播,广播事件是一个key-value格式,key-value 可以由开发者进行自行定义,增添事件以后 ,服务器会把事件进行广播。会议中成员会收到 onAttributesUpdated回调。例如本项目中的会议上麦 下麦 代码如下所示://上麦申请

EMClient.getInstance().conferenceManager().setConferenceAttribute(
EMClient.getInstance().getCurrentUser(),
"request_tobe_speaker",
new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_speaker scuessed");

}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_speaker failed: error=" + error

}
});

//下麦申请
EMClient.getInstance().conferenceManager().setConferenceAttribute(EMClient.getInstance().getCurrentUser()
, "request_tobe_audience", new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_audience scuessed");
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_audience failed: error=" + error + ", msg=" + errorMsg);
}
});
 上麦 下麦 请求发出以后 只能由主持人去处理,处理在 EMConferenceListener  的回调 onAttributesUpdated(EMConferenceAttribute attributes) 去处理 ,收到回调以后 解析attributes 然后进行处理请求,处理的过程代码大概如下: EMClient.getInstance().conferenceManager().grantRole(conference.getConferenceId()
, new EMConferenceMember(memName, null, null,null)
, EMConferenceManager.EMConferenceRole.Talker, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole success, result: " + value);
dialog.dismiss();
}
@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole failed, error: " + error + " - " + errorMsg);

}
});
下麦也是和上麦一样是利用 EMConferenceAttribute进行处理。

9.有关退出会议 销毁会议 普通主播  观众只能退出会议 ,主持人还可以 销毁会议 正在进行中的会议可以进行销毁,退出会议 销毁会议 具体代码如下: EMClient.getInstance().conferenceManager().exitConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功退出当前会议!", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "exit conference failed " + error + ", " + errorMsg);
}
});

EMClient.getInstance().conferenceManager().destroyConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功销毁当前会议!", Toast.LENGTH_SHORT).show();
}
});
EMLog.i(TAG, "finish ConferenceActivity");
finish();
}

尾语
至此 整个 多人音视频会议开发的详细步骤 已经完成 ,虽然比较麻烦 但是每个步骤都很清晰 ,有不太清楚的欢迎大家积极讨论, 附上本项目的github地址:https://github.com/easemob/videocall-android  欢迎大家积极参与 ,谢谢支持。
Demo下载 二维码如下 欢迎大家体验(iOS版和web版下载地址请见:https://www.easemob.com/download/rtc)






  查看全部
今年是不平凡的一年,没错,就是因为疫情,因为疫情原因 ,大家只能呆着家里,严重影响了我们正常的学习 生活 工作,在这种情况下,只能在家办公,这时候大家就会想到线上视频会议,目前很多互联网公司有这个产品,比较出名的就比如 腾讯会议 钉钉 zoom等,用这些是很方便,但是如果能开发自己的视频会议,那会不会更好或者是更有成就感,下面简单介绍这个这个项目,和大概的开发过程。本项目基于环信音视频云来完成,实现的主要功能有:
  •   创建会议、删除会议、获取指定会议室详情、加入会议室、退出会议室等关于会议的管理 ;
  •   获取会议室参会人名列表、踢人,设置观众为主播,设置主播为观众等关于会议室的人员管理;
  •   共享桌面(web端);

 三个端的实现:Android,iOS,Web

上面这些功能在项目中都已经实现。还有水印 ,变声等高级功能在环信音视频SDK的接口内部都已经封装好,本项目没有实现 ,大家可以自行去实现。有关多人音视频功能更详细的介绍大家可以参考:这儿。多人音视频实现的实现主要有以下一些场景:社交交友,远程心理咨询、远程医疗、一对一在线教育、远程视频辅助等。咳咳 ,接下来就是纯干货了,给大家介绍我是如何一步步开发出一个完整的多人音视频app。
 
项目截图
 
首先给大家展示下项目运行的效果图,会议界面 主窗口是一个大的 RelativeLayout ,最下面的那一排排小窗口是的实现方法是HorizontalScrollView加上一个开源的组件 com.jaouan.compoundlayout.RadioLayoutGroup 实现的,点击下面的小窗口后,可以 把小窗口的视频流显示在大屏上,具体是调用 updateRemoteSurfaceView(String streamId, EMCallSurfaceView remoteView)来更新SurfaceView,具体的细节大家可以看看代码里面的实现 最后会公布代码开源地址。

20200410140627956.jpg


20200410140855852.jpg


20200410141055394.jpg


准备工作
    大家得下载安装Android Studio,配置好Android 开发环境,怎么详细配置我就在这不再细说了 网上有很多的教程,大家自己可以找找看,然后大家可以看看环信多人音视频会议的主要功能和一些基本概念介绍。
集成 
  1. 首先大家会想问怎么调用环信的SDK ,大家可以使用 远程依赖SDK包,建议大家用最新版本的远程依赖:
     com.hyphenate:hyphenate-sdk:3.6.6 ,依赖包可以放在 build.gradle里面的 dependencies 选项下面,如下图所示
2020040917363212.png


2.其次怎么使用环信的appkey ,可以在环信音视频云后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到AndroidManifest.xml中 ,如下图所示:

20200409213959916.png


3.经过以上两个重要的前期配置准备 ,接下来我们就可以开始进行代码开发了,首先我们先创建一个项目的DemoApplication类和      DemoHelper类,DemoApplication 类和DemoHelper类都是一个单例类 ,DemoApplication 主要功能就是进行DemoHelper 的初始化,而DemoHelper里面主要是主要有一些option 配置和EMClient 进行初始化,代码如下所示:
public void init(Context context) {
EMOptions options = initChatOptions(context);
EMClient.getInstance().init(context, options);
PreferenceManager.init(context);
}

  DemoHelper还有一个重要的功能就是设置  EMConferenceListener 进行会议监听,有关 EMConferenceListener的类的详细介绍 ,通过这个监听可以再加入会议的时候获取到已经在会议中的流和主播信息,分别是通过其中以下两个回调获取:
@Override 
public void onMemberJoined(EMConferenceMember member){

}

@Override
public void onStreamAdded(EMConferenceStream stream){

}

4.DemoApplication类完成以后,接下来就是怎么去登陆 环信IM 账号和 创建加入会议房间了,首次安装的时候都没有账号,我们使用的办法是自动注册一个账号 在本地进行保存,然后进行登录 ,注册 登录详细接口请看 这儿,  注册 登录的调用大概如下所示: 
 try {
        //注册一个环信ID
        EMClient.getInstance().createAccount(username, password);
            
        //注册成功进行登录
        PreferenceManager.getInstance().setCurrentUserName(username);
        PreferenceManager.getInstance().setCurrentuserPassword(password);
        login();
    } catch (final HyphenateException e) {
       runOnUiThread(new Runnable() {
               public void run() {
                  int errorCode=e.getErrorCode();
                   if(errorCode==EMError.NETWORK_ERROR){
                    Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
      }
   }   
}
 
  public void login() {
 
        //登录已经注册成功的环信ID
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "login: onSuccess");
                //登录成功进入会议房间
                joinRoom();
            }
            @Override
            public void onProgress(int progress, String status) {
                Log.d(TAG, "login: onProgress");
            }
            @Override
            public void onError(final int code, final String message) {
                Log.d(TAG, "login: onError: " + code);
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message,Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
登录完成以后,我们可以根据房间名创建并加入房间,主要代码大概如下:
 EMClient.getInstance().conferenceManager().joinRoom(currentRoomname, currentPassword, conferenceRole,roomConfig, new EMValueCallBack<EMConference>(){
@Override
public void onSuccess(EMConference value) {
EMLog.i(TAG, "join conference success");
Intent intent = new Intent(MainActivity.this, ConferenceActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(final int error, final String errorMsg) {
EMLog.e(TAG, "join conference failed error " + error + ", msg " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
setBtnEnable(true);
if(error == CALL_TALKER_ISFULL) {
takerFullDialogDisplay();
}else{
Toast.makeText(getApplicationContext(), "Join conference failed " + error + " " + errorMsg, Toast.LENGTH_SHORT).show();
}
}
});
}
});

EMClient.getInstance().conferenceManager().joinRoom() API可以根据房间名创建指定会议,当以该房间名命名的会议不存在时候,会直接创建,当会议已经创建好 可以根据正确的房间名和密码加入房间 ,到这一步为止,我们已经成功的创建 并加入会议。
5.加入会议以后我们进入到会议界面,展示从DemoHelper类 EMConferenceListener 中的 onStreamAdded 回调 和 onMemberJoined 获取到的流和主播列表 ,在ConferenceActivity 中实现 EMConferenceListener ,然后直接把 ConferenceActivity 注册监听,用以下方法  EMClient.getInstance().conferenceManager().addConferenceListener(this); 这样就可实现 EMConferenceListener 事件的处理,比如
 主播 进出房间 :
public void onMemberJoined(final EMConferenceMember member);
public void onMemberExited(final EMConferenceMember member);

增加流 移除流:
public void onStreamAdded(final EMConferenceStream stream)
 public void onStreamRemoved(final EMConferenceStream stream)

管理员变更: 
public void onAdminAdded(String streamId) ;  
public void onAdminRemoved(String streamId)

角色变更  用户被踢  谁在说话等各种回调,可以处理各种业务逻辑 ,详细的请参考 项目中的实现 ,最后会附上项目的开源地址。

6 进入会议房间以后如果用户角色为主播可以进行发布视频流 ,观众只能订阅视频流 不能发布视频流 ,可以调用SDK的publish接口发布流,该接口用到了EMStreamParam参数,你可以自由配置,比如是否上传视频,是否上传音频,使用前置或后置摄像头,视频码率,显示视频页面等等,具体实现可以参考 中发布 订阅视频流的内容, 关于以上的代码逻辑如以 如以下:
 //发布视频流
normalParam = new EMStreamParam();
normalParam.setStreamType(EMConferenceStream.StreamType.NORMAL);
normalParam.setVideoOff(true);
normalParam.setAudioOff(true);

EMClient.getInstance().conferenceManager().publish(normalParam, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
conference.setPubStreamId(value, EMConferenceStream.StreamType.NORMAL);
addOrUpdateStreamList("local-stream", value);

PhoneStateManager.get(ConferenceActivity.this).addStateCallback(phoneStateCallback);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "publish failed: error=" + error + ", msg=" + errorMsg);
}
});
//订阅其他主播的视频流
private void subscribe(EMConferenceStream stream, EMCallSurfaceView surfaceView) {
EMClient.getInstance().conferenceManager().subscribe(stream, surfaceView, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}

@Override
public void onError(int error, String errorMsg) {

}
});
}

7.有关上麦 下麦 的逻辑处理,观众可以请求上麦成为主播,主播可以下麦成为观众,上麦 下麦 是利用 EMConferenceAttribute进行处理 ,EMConferenceAttribute  是一个事件广播,广播事件是一个key-value格式,key-value 可以由开发者进行自行定义,增添事件以后 ,服务器会把事件进行广播。会议中成员会收到 onAttributesUpdated回调。例如本项目中的会议上麦 下麦 代码如下所示:
//上麦申请  

EMClient.getInstance().conferenceManager().setConferenceAttribute(
EMClient.getInstance().getCurrentUser(),
"request_tobe_speaker",
new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_speaker scuessed");

}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_speaker failed: error=" + error

}
});

//下麦申请
EMClient.getInstance().conferenceManager().setConferenceAttribute(EMClient.getInstance().getCurrentUser()
, "request_tobe_audience", new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_audience scuessed");
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_audience failed: error=" + error + ", msg=" + errorMsg);
}
});

 上麦 下麦 请求发出以后 只能由主持人去处理,处理在 EMConferenceListener  的回调 onAttributesUpdated(EMConferenceAttribute attributes) 去处理 ,收到回调以后 解析attributes 然后进行处理请求,处理的过程代码大概如下:
   EMClient.getInstance().conferenceManager().grantRole(conference.getConferenceId()
, new EMConferenceMember(memName, null, null,null)
, EMConferenceManager.EMConferenceRole.Talker, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole success, result: " + value);
dialog.dismiss();
}
@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole failed, error: " + error + " - " + errorMsg);

}
});

下麦也是和上麦一样是利用 EMConferenceAttribute进行处理。

9.有关退出会议 销毁会议 普通主播  观众只能退出会议 ,主持人还可以 销毁会议 正在进行中的会议可以进行销毁,退出会议 销毁会议 具体代码如下:
 EMClient.getInstance().conferenceManager().exitConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功退出当前会议!", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "exit conference failed " + error + ", " + errorMsg);
}
});

EMClient.getInstance().conferenceManager().destroyConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功销毁当前会议!", Toast.LENGTH_SHORT).show();
}
});
EMLog.i(TAG, "finish ConferenceActivity");
finish();
}

尾语
至此 整个 多人音视频会议开发的详细步骤 已经完成 ,虽然比较麻烦 但是每个步骤都很清晰 ,有不太清楚的欢迎大家积极讨论, 附上本项目的github地址:https://github.com/easemob/videocall-android  欢迎大家积极参与 ,谢谢支持。
Demo下载 二维码如下 欢迎大家体验(iOS版和web版下载地址请见:https://www.easemob.com/download/rtc)


20200410142228530.png

 
0
评论

【公开课预告】如何更好的使用环信机器人 机器人 环信

beyond 发表了文章 • 230 次浏览 • 2020-05-12 10:19 • 来自相关话题

时间:2020年5月15日下午15:00
时长:半小时
课程主题:如何更好的使用环信机器人
主讲人:环信AI训练师 赵星星
               
课程介绍:
1.培训对象:环信机器人运营人员。已掌握最基本的机器人操作能力,希望进一步提升机器人的使用效果,让机器人为企业创造更大价值
 
2.难度级别:中级
 3.培训要达成的目标:
A.机器人平台日常使用技能的查缺补漏及部分高级技能
B.成为创建及维护机器人知识库的专家
C.理解机器人的关键运营指标
D.知识库调优
 4.培训大纲:
A.如何快速启动环信机器人:机器人平台日常使用技能的查缺补漏及部分高级技能
B.学会搭建完善的知识库
C.懂得知识运营六大关键指标体系
D.监控日常运营的那些数据-数据管理
E.怎么调优知识库-服务优化
 
参考网址:http://docs-ai.easemob.com/cs/start 
 点击链接直接加入会议:
https://meeting.tencent.com/s/51uTAmIf21b2 
会议 ID:979 281 483
 手机一键拨号入会
+8675536550000,,979281483# (中国大陆)
+85230018898,,,2,979281483# (中国香港)
根据您的位置拨号
+8675536550000 (中国大陆)
+85230018898 (中国香港)
  查看全部

时间:2020年5月15日下午15:00
时长:半小时
课程主题:如何更好的使用环信机器人
主讲人:环信AI训练师 赵星星
               
课程介绍:
1.培训对象:环信机器人运营人员。已掌握最基本的机器人操作能力,希望进一步提升机器人的使用效果,让机器人为企业创造更大价值
 
2.难度级别:中级
 3.培训要达成的目标:
A.机器人平台日常使用技能的查缺补漏及部分高级技能
B.成为创建及维护机器人知识库的专家
C.理解机器人的关键运营指标
D.知识库调优
 4.培训大纲:
A.如何快速启动环信机器人:机器人平台日常使用技能的查缺补漏及部分高级技能
B.学会搭建完善的知识库
C.懂得知识运营六大关键指标体系
D.监控日常运营的那些数据-数据管理
E.怎么调优知识库-服务优化
 
参考网址:http://docs-ai.easemob.com/cs/start 
 点击链接直接加入会议:
https://meeting.tencent.com/s/51uTAmIf21b2 
会议 ID:979 281 483
 手机一键拨号入会
+8675536550000,,979281483# (中国大陆)
+85230018898,,,2,979281483# (中国香港)
根据您的位置拨号
+8675536550000 (中国大陆)
+85230018898 (中国香港)
 
0
评论

Freshdesk母公司收购Joe Hukum进军聊天机器人市场 客户服务 机器人

客服超人 发表了文章 • 1510 次浏览 • 2017-07-25 11:45 • 来自相关话题

译者按:相对于国外智能聊天机器人市场的方兴未艾,国内智能聊天机器人的落地势头更是一浪高过一浪,以环信为首的智能客服厂商提供的服务包括单轮会话、多轮会话以及人工协作已经广泛应用于包括保险、教育、金融、电商等行业,借助于AI技术在包括主动营销方面也有了更深入的探索。




   Freshworks(Freshdesk母公司)去年筹集5500万美元,用以建立超越现有帮助台服务。今天,Freshworks通过收购Joe Hukum来实现这一战略。Joe Hukum是一家印度创业公司,负责为企业提供建立自己的聊天机器人平台。

   虽有问询,但这些公司并没有透露任何交易条款。Joe Hukum, 之前为Speedy,最初侧重建立自己的个人助理或管理程序,帮助人们订购商品和服务,现转向为其他企业构建机器人服务平台。“Joe Hukum”是一种印地语的音译,意思是“按照你的意愿”。

   这是Freshworks在两年内的第八次收购,且在人工智能领域进行了一系列的收购,特别是“神经语言程序设计”(简称为“NLP”,注意不能与自然语言处理相混淆):另外两个收购是Chatimity和Frilp。Freshworks表示将利用三家创业公司的技术和人才,推出基于聊天机器人的解决方案。

   具体而言,Joe Hukum已经建立了知识树编码用以自动化销售、服务和支持工作流程。所以由联合创始人Arihant Jain,Ajeet Kushwaha和Rahul Agarwal领导的创业团队将在现有的Freshworks产品之上构建机器人产品。

   这笔交易强调了客户服务行业对聊天机器人的持续兴趣:公司正在寻找更有效率和更便宜的方式来提供基本信息和帮助客户。许多人认为聊天机器人是可行的解决方案,尽管目前正在建设的很多东西仍处于早期阶段。

   Freshworks创始人兼CEO Girish Mathrubootham在一份声明中说:“我们看到我们的客户对如何使用聊天机器人抱有浓厚兴趣,因为他们正在寻找与客户在网络和移动渠道上进行互动的新途径。随着客户偏好从传统的基于呼叫中心的电话树转移,聊天机器人提供了新的支持体验,同时也根本解决了对客户查询和途径进行分类的老式挑战,将其转为恰当的支持代理。这些仍属于聊天机器人的初期阶段,但Joe Hukum的创新团队和技术将帮助企业客户更好地吸引和支持其顾客。

   Freshworks引用了Gartner的研究,预测到2019年,40%的企业将使用自然语言聊天机器人来进行业务中(思考Slack风格的机器人)和对外的通信。

   这也正是Freshworks觉得它有潜力的地方。目前该公司为大约10万家公司提供Freshdesk,并在这一群体中开始销售这些机器人新服务。

   Joe Hukum的Jain在一份声明中表示:“作为Freshworks的一部分,对我们所有人来说都是激动人心的,因为它为我们提供了一个平台,为我们扩大了规模和覆盖面,并影响了成千上万的客户。

   相对于国外智能聊天机器人市场的方兴未艾,国内智能聊天机器人的落地势头更是一浪高过一浪,以环信为首的智能客服厂商提供的服务包括单轮会话、多轮会话以及人工协作已经广泛应用于包括保险、教育、金融、电商等行业,借助于AI技术在包括主动营销方面也有了更深入的探索。近期环信联合Gartner发布的业界首个智能客服机器人实践报告《Best Practice of Customer Service Bot In Customer Service Industry》更是给呼叫中心向在线客服转型的业客户注入了一剂强心针,客户们有充足的理由相信借助于智能聊天机器人的帮助可以利用有限的客服资源来应对移动互联时代海量客户咨询的暴涨。
 Gartner报告点击查看 查看全部
译者按:相对于国外智能聊天机器人市场的方兴未艾,国内智能聊天机器人的落地势头更是一浪高过一浪,以环信为首的智能客服厂商提供的服务包括单轮会话、多轮会话以及人工协作已经广泛应用于包括保险、教育、金融、电商等行业,借助于AI技术在包括主动营销方面也有了更深入的探索。

微信图片_20170725114409.jpg

   Freshworks(Freshdesk母公司)去年筹集5500万美元,用以建立超越现有帮助台服务。今天,Freshworks通过收购Joe Hukum来实现这一战略。Joe Hukum是一家印度创业公司,负责为企业提供建立自己的聊天机器人平台。

   虽有问询,但这些公司并没有透露任何交易条款。Joe Hukum, 之前为Speedy,最初侧重建立自己的个人助理或管理程序,帮助人们订购商品和服务,现转向为其他企业构建机器人服务平台。“Joe Hukum”是一种印地语的音译,意思是“按照你的意愿”。

   这是Freshworks在两年内的第八次收购,且在人工智能领域进行了一系列的收购,特别是“神经语言程序设计”(简称为“NLP”,注意不能与自然语言处理相混淆):另外两个收购是Chatimity和Frilp。Freshworks表示将利用三家创业公司的技术和人才,推出基于聊天机器人的解决方案。

   具体而言,Joe Hukum已经建立了知识树编码用以自动化销售、服务和支持工作流程。所以由联合创始人Arihant Jain,Ajeet Kushwaha和Rahul Agarwal领导的创业团队将在现有的Freshworks产品之上构建机器人产品。

   这笔交易强调了客户服务行业对聊天机器人的持续兴趣:公司正在寻找更有效率和更便宜的方式来提供基本信息和帮助客户。许多人认为聊天机器人是可行的解决方案,尽管目前正在建设的很多东西仍处于早期阶段。

   Freshworks创始人兼CEO Girish Mathrubootham在一份声明中说:“我们看到我们的客户对如何使用聊天机器人抱有浓厚兴趣,因为他们正在寻找与客户在网络和移动渠道上进行互动的新途径。随着客户偏好从传统的基于呼叫中心的电话树转移,聊天机器人提供了新的支持体验,同时也根本解决了对客户查询和途径进行分类的老式挑战,将其转为恰当的支持代理。这些仍属于聊天机器人的初期阶段,但Joe Hukum的创新团队和技术将帮助企业客户更好地吸引和支持其顾客。

   Freshworks引用了Gartner的研究,预测到2019年,40%的企业将使用自然语言聊天机器人来进行业务中(思考Slack风格的机器人)和对外的通信。

   这也正是Freshworks觉得它有潜力的地方。目前该公司为大约10万家公司提供Freshdesk,并在这一群体中开始销售这些机器人新服务。

   Joe Hukum的Jain在一份声明中表示:“作为Freshworks的一部分,对我们所有人来说都是激动人心的,因为它为我们提供了一个平台,为我们扩大了规模和覆盖面,并影响了成千上万的客户。

   相对于国外智能聊天机器人市场的方兴未艾,国内智能聊天机器人的落地势头更是一浪高过一浪,以环信为首的智能客服厂商提供的服务包括单轮会话、多轮会话以及人工协作已经广泛应用于包括保险、教育、金融、电商等行业,借助于AI技术在包括主动营销方面也有了更深入的探索。近期环信联合Gartner发布的业界首个智能客服机器人实践报告《Best Practice of Customer Service Bot In Customer Service Industry》更是给呼叫中心向在线客服转型的业客户注入了一剂强心针,客户们有充足的理由相信借助于智能聊天机器人的帮助可以利用有限的客服资源来应对移动互联时代海量客户咨询的暴涨。
 Gartner报告点击查看
1
最佳

android移动客服怎么集成机器人,做过的大神指导下 移动客服 机器人 机器人

Wxin 回复了问题 • 2 人关注 • 2594 次浏览 • 2017-01-21 19:03 • 来自相关话题

0
评论

聊天机器人成网络话题焦点,移动客服才是幕后推手 机器人

客服超人 发表了文章 • 1693 次浏览 • 2017-01-05 11:35 • 来自相关话题

 (环信编译)在当今的客户服务行业,关于聊天机器人的讨论如火如荼。到底是什么造成了这种现象?哪些因素的共同影响将这一话题推到聚光灯下?





 Kik Services的总裁Josh Jacobs在最近的Forrester CXSF大会上尝试对这一问题做出回答。

  “我认为答案的关键在于移动端的崛起,首先以及最重要的是,我们正处于一个临界点,此时绝大多数的计算都发生在移动设备上。”

   Jacobs说,“聊天成为了杀手级应用,在中国,微信所成就的一切为世界其他国家树立了榜样。我们采取了这样的模式,Facebook也已采取了这种模式。我们认为在世界的其他地方也可以建立这样的模式。”

   Jacobs说,在过去的25年里,“我们已经开发出了涵盖各种需求的网络服务,这些服务延展到了我们房间灯泡下面的一切东西;然而没有一种用户界面,能够让所有这些服务以一种简单的方式整合起来。在物联网时代,对话成了一种简便易行的方式;在网络服务驱动的世界里,对话也是一个更好的方案。如今,人们已经习惯了用移动设备来进行对话,越来越多的人也都加入到这个行列之中,且认为体验‘很赞’。”

   Jacobs还说,他的公司和其他公司现在所做的工作并不是前无古人的。

   “鉴于我的年龄,我的经验告诉我,我们现在所做的一切都并不是前人没有做过的。”他说,“这就是CRM,CRM已经在我们身边出现了很多年。另一个我们看到的趋势是,大公司,尤其是客服领域的大公司都会说‘我们必须得把这个新渠道加上。’”

   首先,Jacobs说,聊天“要么扩展了漏斗的顶端,并把很多人吸引进去;要么,就是被成为移动端客户的不适应吓跑。”

   其次,Jacobs建议各大品牌关注他们能够提供的休闲体验,以在吸引客户方面“放长线钓大鱼”。

品牌公司们应该随时了解自家客户最舒适的交互方式,并相应地参与到这些方式中去。

   “下一代人希望用聊天或者语音,所以你就需要进入到这些环境中去,这些渠道是你接触到这些用户的必由之路。”Jacobs说,“这就是面向Z世代和千禧一代的CRM、再参与、再营销和客户终身价值。”

   有的品牌还在对此保持怀疑态度,在往聊天或任何与之相关项目的迈进上踌躇不前。

   “我认为我们讨论的一切都是关于如何让品牌发出自己的声音,让你的品牌参与到对话之中。”Jacobs说,“你可以更多的围绕着市场营销的环节去做这件事。”(环信编译自www.loyalty360.org)
关于环信移动客服全媒体智能云客服倡领者,于2016年荣膺“Gartner 2016 Cool Vendor”。环信支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。基于环信业界领先的IM长连接技术保证消息必达,并通过智能客服机器人技术降低人工客服工作量。同时,基于人工智能和大数据挖掘的客户旅程透析产品"环信客户声音"能够帮助企业优化运营,提高跨渠道客服体验。

截至2016年上半年,环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、中信证券等众多标杆企业。根据易观发布的《中国SaaS客服市场专题研究报告》显示,环信移动客服在SaaS移动端客服用户覆盖占比高达77.4%,稳居行业第一。 查看全部
 (环信编译)在当今的客户服务行业,关于聊天机器人的讨论如火如荼。到底是什么造成了这种现象?哪些因素的共同影响将这一话题推到聚光灯下?
摄图网-.jpg


 Kik Services的总裁Josh Jacobs在最近的Forrester CXSF大会上尝试对这一问题做出回答。

  “我认为答案的关键在于移动端的崛起,首先以及最重要的是,我们正处于一个临界点,此时绝大多数的计算都发生在移动设备上。”

   Jacobs说,“聊天成为了杀手级应用,在中国,微信所成就的一切为世界其他国家树立了榜样。我们采取了这样的模式,Facebook也已采取了这种模式。我们认为在世界的其他地方也可以建立这样的模式。”

   Jacobs说,在过去的25年里,“我们已经开发出了涵盖各种需求的网络服务,这些服务延展到了我们房间灯泡下面的一切东西;然而没有一种用户界面,能够让所有这些服务以一种简单的方式整合起来。在物联网时代,对话成了一种简便易行的方式;在网络服务驱动的世界里,对话也是一个更好的方案。如今,人们已经习惯了用移动设备来进行对话,越来越多的人也都加入到这个行列之中,且认为体验‘很赞’。”

   Jacobs还说,他的公司和其他公司现在所做的工作并不是前无古人的。

   “鉴于我的年龄,我的经验告诉我,我们现在所做的一切都并不是前人没有做过的。”他说,“这就是CRM,CRM已经在我们身边出现了很多年。另一个我们看到的趋势是,大公司,尤其是客服领域的大公司都会说‘我们必须得把这个新渠道加上。’”

   首先,Jacobs说,聊天“要么扩展了漏斗的顶端,并把很多人吸引进去;要么,就是被成为移动端客户的不适应吓跑。”

   其次,Jacobs建议各大品牌关注他们能够提供的休闲体验,以在吸引客户方面“放长线钓大鱼”。

品牌公司们应该随时了解自家客户最舒适的交互方式,并相应地参与到这些方式中去。

   “下一代人希望用聊天或者语音,所以你就需要进入到这些环境中去,这些渠道是你接触到这些用户的必由之路。”Jacobs说,“这就是面向Z世代和千禧一代的CRM、再参与、再营销和客户终身价值。”

   有的品牌还在对此保持怀疑态度,在往聊天或任何与之相关项目的迈进上踌躇不前。

   “我认为我们讨论的一切都是关于如何让品牌发出自己的声音,让你的品牌参与到对话之中。”Jacobs说,“你可以更多的围绕着市场营销的环节去做这件事。”(环信编译自www.loyalty360.org)
关于环信移动客服
全媒体智能云客服倡领者,于2016年荣膺“Gartner 2016 Cool Vendor”。环信支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。基于环信业界领先的IM长连接技术保证消息必达,并通过智能客服机器人技术降低人工客服工作量。同时,基于人工智能和大数据挖掘的客户旅程透析产品"环信客户声音"能够帮助企业优化运营,提高跨渠道客服体验。

截至2016年上半年,环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、中信证券等众多标杆企业。根据易观发布的《中国SaaS客服市场专题研究报告》显示,环信移动客服在SaaS移动端客服用户覆盖占比高达77.4%,稳居行业第一。
0
评论

环信移动客服v5.5更新:机器人支持物流场景智能应答,微博渠道支持自定义菜单。 机器人

产品更新 发表了文章 • 2730 次浏览 • 2016-11-04 17:53 • 来自相关话题

   
   环信移动客服v5.5已经正式发布,包括机器人支持物流场景智能应答以及微博渠道支持自定义菜单等新特性。环信智能机器人已经能够智能识别访客的物流相关的咨询,现在您可以为特定的物流意图(物流差错、物流咨询、物流查询、物流催促)设置相应的回复。其中,“物流查询”这一意图支持多轮问答,机器人能够自动为访客查询物流状态,并直接将查询结果回复给访客。在环信移动客服系统绑定微博认证账号后,可以设置微博账号私信页面的菜单,并且设置粉丝首次关注自动回复。 
环信移动客服v5.5产品更新说明:





客服模式

“留言”页面支持播放语音留言

当收到APP访客端发送的语音留言时,可以直接在移动客服系统的留言页面进行播放。

“访客中心”支持连续查看历史会话记录

当访客与当前客服有多条历史会话记录时,客服可以在访客中心页面连续查看这些历史会话的消息。

在客服模式下,选择“访客中心”,点击某位访客,在详情页点击“互动记录”,点击任意历史会话,可查看该历史会话的消息。消息界面提示会话开始、会话结束时间,点击“更多历史消息”、“查看下一条历史会话”可分别查看之前、之后的历史会话。 




访客轨迹分析(增值服务)

访客轨迹分析功能收集访客在网站浏览的轨迹。对来自Web渠道的访客,客服接起会话后,可以直接在聊天窗口了解到该访客在发起会话前的浏览轨迹,从而判断客户的兴趣范围和偏好。 




“访客轨迹分析”与“全站访客统计”为增值服务,只需先开通“全站访客统计”功能,并且在您的网站上安装一个数据统计SDK,即可使用“访客轨迹分析”。如需开通这两个功能,请联系环信商务经理。

关于SDK安装流程引导,请参考文档:全站访客统计。

探索移动客服

新增“探索移动客服”页面,新版本上线的功能将在此页面进行展示,登录后即可查看,不错过移动客服的任何更新。

管理员模式

机器人支持物流场景智能应答

环信智能机器人已经能够智能识别访客的物流相关的咨询,现在您可以为特定的物流意图(物流差错、物流咨询、物流查询、物流催促)设置相应的回复。其中,“物流查询”这一意图支持多轮问答,机器人能够自动为访客查询物流状态,并直接将查询结果回复给访客。

在管理员模式,选择“智能机器人 > 机器人设置”,点击“场景智能应答”Tab页,将您需要机器人回答的物流意图全部勾选开通。未勾选时,表示不需要针对该物流意图进行相应的回复。

如果您对意图定义有疑问,不妨将鼠标放在问号上,了解它的详细定义哟。 




以下为开启物流差错、物流咨询、物流查询、物流催促这些物流意图,并设置“物流查询”意图的问答方式为多轮问答后,访客端咨询示例: 




“留言”页面支持播放语音留言

当收到APP访客端发送的语音留言时,可以直接在移动客服系统的留言页面进行播放。

注意:APP端发送语音留言的功能需要调用环信的留言API自行集成。

“当前会话”支持分配、关闭会话

管理员在当前会话页面监控客服与访客的聊天过程时,可以将会话分配给其他客服,也可以根据实际情况关闭会话。 




“访客中心”支持连续查看历史会话记录

当访客与客服有多条历史会话记录时,管理员可以在访客中心页面连续查看这些历史会话的消息。

在管理员模式下,选择“访客中心”,点击某位访客,在详情页点击“互动记录”,点击任意历史会话,可查看该历史会话的消息。消息界面提示会话开始、会话结束时间,点击“更多历史消息”、“查看下一条历史会话”可分别查看之前、之后的历史会话。 




微博渠道支持自定义菜单和首次关注自动回复

在移动客服系统绑定微博认证账号后,可以设置微博账号私信页面的菜单,并且设置粉丝首次关注自动回复。

在管理员模式下,选择“渠道管理 > 微博”,点击“自定义菜单”Tab页,可以对菜单进行设置。最多可以创建3个一级菜单,每个一级菜单均可以跳转至网页或创建最多5个二级菜单。当设置一级菜单跳转至网页时,不可以再在该一级菜单下创建二级菜单。 




在管理员模式下,选择“渠道管理 > 微博”,点击“粉丝首次关注自动回复”Tab页,设置自动回复消息。目前仅可以选择文字方式回复。 




探索移动客服

新增“探索移动客服”页面,新版本上线的功能将在此页面进行展示,登录后即可查看,不错过移动客服的任何更新。

作为管理员,您还可以通过此页面快速定位到系统的其他位置,例如:快速设置接入渠道、快速定位到收发消息相关的设置页面、一键查看历史会话或统计报表等。

多租户管理后台

多租户管理后台为增值服务,如需开通,请联系环信商务经理。

支持查看租户的历史会话

多租户管理后台增加“历史会话”功能,支持管理员查看各个租户下所有客服的历史会话。

登录多租户管理后台(kefuorg.easemob.com),进入“租户管理”页面,选择任意租户,点击“历史会话”,可以查看该租户的所有历史会话。点击任意一条会话,可以查看该会话的全部消息。 




Android客服工作台

Android客服工作台V2.3版本已发布!可前往环信官网下载。

支持显示微信、微博表情

Android客服工作台支持显示微信、微博默认表情。

支持发送语音消息

使用Android客服工作台时,可以对APP渠道的会话直接回复语音消息,沟通更高效。

注意:网页、微信、微博渠道的访客无法收到语音消息。

移动客服Android SDK

移动客服Android SDK 1.0.1 发布了!该Android SDK基于IM SDK 3.x,登录、发消息速度更快。提供内置会话相关UI,集成后可立即给移动客服发送文本、语音、图片、文件消息。

支持双通道:已集成双通道功能,确保不丢消息;
极简集成:集成移动客服通用功能,只需5分钟。

集成指南:集成指南
 
 
环信移动客服更新日志http://docs.easemob.com/cs/releasenote/5.5
 
环信移动客服登陆地址http://kefu.easemob.com/ 查看全部
   
   环信移动客服v5.5已经正式发布,包括机器人支持物流场景智能应答以及微博渠道支持自定义菜单等新特性。环信智能机器人已经能够智能识别访客的物流相关的咨询,现在您可以为特定的物流意图(物流差错、物流咨询、物流查询、物流催促)设置相应的回复。其中,“物流查询”这一意图支持多轮问答,机器人能够自动为访客查询物流状态,并直接将查询结果回复给访客。在环信移动客服系统绑定微博认证账号后,可以设置微博账号私信页面的菜单,并且设置粉丝首次关注自动回复。 
环信移动客服v5.5产品更新说明:

QQ图片20161104175224.jpg

  • 客服模式


“留言”页面支持播放语音留言

当收到APP访客端发送的语音留言时,可以直接在移动客服系统的留言页面进行播放。

“访客中心”支持连续查看历史会话记录

当访客与当前客服有多条历史会话记录时,客服可以在访客中心页面连续查看这些历史会话的消息。

在客服模式下,选择“访客中心”,点击某位访客,在详情页点击“互动记录”,点击任意历史会话,可查看该历史会话的消息。消息界面提示会话开始、会话结束时间,点击“更多历史消息”、“查看下一条历史会话”可分别查看之前、之后的历史会话。 
1.png

访客轨迹分析(增值服务)

访客轨迹分析功能收集访客在网站浏览的轨迹。对来自Web渠道的访客,客服接起会话后,可以直接在聊天窗口了解到该访客在发起会话前的浏览轨迹,从而判断客户的兴趣范围和偏好。 
2png.png

“访客轨迹分析”与“全站访客统计”为增值服务,只需先开通“全站访客统计”功能,并且在您的网站上安装一个数据统计SDK,即可使用“访客轨迹分析”。如需开通这两个功能,请联系环信商务经理。

关于SDK安装流程引导,请参考文档:全站访客统计

探索移动客服

新增“探索移动客服”页面,新版本上线的功能将在此页面进行展示,登录后即可查看,不错过移动客服的任何更新。

管理员模式

机器人支持物流场景智能应答


环信智能机器人已经能够智能识别访客的物流相关的咨询,现在您可以为特定的物流意图(物流差错、物流咨询、物流查询、物流催促)设置相应的回复。其中,“物流查询”这一意图支持多轮问答,机器人能够自动为访客查询物流状态,并直接将查询结果回复给访客。

在管理员模式,选择“智能机器人 > 机器人设置”,点击“场景智能应答”Tab页,将您需要机器人回答的物流意图全部勾选开通。未勾选时,表示不需要针对该物流意图进行相应的回复。

如果您对意图定义有疑问,不妨将鼠标放在问号上,了解它的详细定义哟。 
3.png

以下为开启物流差错、物流咨询、物流查询、物流催促这些物流意图,并设置“物流查询”意图的问答方式为多轮问答后,访客端咨询示例: 
4.png

“留言”页面支持播放语音留言

当收到APP访客端发送的语音留言时,可以直接在移动客服系统的留言页面进行播放。

注意:APP端发送语音留言的功能需要调用环信的留言API自行集成。

“当前会话”支持分配、关闭会话

管理员在当前会话页面监控客服与访客的聊天过程时,可以将会话分配给其他客服,也可以根据实际情况关闭会话。 
5.png

“访客中心”支持连续查看历史会话记录

当访客与客服有多条历史会话记录时,管理员可以在访客中心页面连续查看这些历史会话的消息。

在管理员模式下,选择“访客中心”,点击某位访客,在详情页点击“互动记录”,点击任意历史会话,可查看该历史会话的消息。消息界面提示会话开始、会话结束时间,点击“更多历史消息”、“查看下一条历史会话”可分别查看之前、之后的历史会话。 
6.png

微博渠道支持自定义菜单和首次关注自动回复

在移动客服系统绑定微博认证账号后,可以设置微博账号私信页面的菜单,并且设置粉丝首次关注自动回复。

在管理员模式下,选择“渠道管理 > 微博”,点击“自定义菜单”Tab页,可以对菜单进行设置。最多可以创建3个一级菜单,每个一级菜单均可以跳转至网页或创建最多5个二级菜单。当设置一级菜单跳转至网页时,不可以再在该一级菜单下创建二级菜单。 
7.png

在管理员模式下,选择“渠道管理 > 微博”,点击“粉丝首次关注自动回复”Tab页,设置自动回复消息。目前仅可以选择文字方式回复。 
8.png

探索移动客服

新增“探索移动客服”页面,新版本上线的功能将在此页面进行展示,登录后即可查看,不错过移动客服的任何更新。

作为管理员,您还可以通过此页面快速定位到系统的其他位置,例如:快速设置接入渠道、快速定位到收发消息相关的设置页面、一键查看历史会话或统计报表等。

多租户管理后台

多租户管理后台为增值服务,如需开通,请联系环信商务经理。

支持查看租户的历史会话

多租户管理后台增加“历史会话”功能,支持管理员查看各个租户下所有客服的历史会话。

登录多租户管理后台(kefuorg.easemob.com),进入“租户管理”页面,选择任意租户,点击“历史会话”,可以查看该租户的所有历史会话。点击任意一条会话,可以查看该会话的全部消息。 
9.png

Android客服工作台

Android客服工作台V2.3版本已发布!可前往环信官网下载。

支持显示微信、微博表情

Android客服工作台支持显示微信、微博默认表情。

支持发送语音消息

使用Android客服工作台时,可以对APP渠道的会话直接回复语音消息,沟通更高效。

注意:网页、微信、微博渠道的访客无法收到语音消息。

移动客服Android SDK

移动客服Android SDK 1.0.1 发布了!该Android SDK基于IM SDK 3.x,登录、发消息速度更快。提供内置会话相关UI,集成后可立即给移动客服发送文本、语音、图片、文件消息。

支持双通道:已集成双通道功能,确保不丢消息;
极简集成:集成移动客服通用功能,只需5分钟。

集成指南:集成指南
 
 
环信移动客服更新日志http://docs.easemob.com/cs/releasenote/5.5
 
环信移动客服登陆地址http://kefu.easemob.com/
1
评论

环信移动客服v4.12产品更新--新增按对应渠道开启机器人,新增智能质检 机器人

beyond 发表了文章 • 2493 次浏览 • 2016-08-08 15:22 • 来自相关话题

【新增】1.按对应渠道开启机器人
新增按对应渠道开启机器人的功能,让机器人客服的服务更精准。
前往“管理员模式 > 智能机器人 > 机器人设置”页面,对渠道进行设置。
 【新增】 2.工作量报表新增接起、呼入、回呼会话数
2.1 接起会话数 
2.2 呼入、回呼会话数 
 【新增】3.工作量报表支持按会话类型筛选
工作量报表支持按会话类型筛选,可以根据全部、呼入、呼出会话进行报表查询。
 【优化】4.工作量和排队统计报表重构
工作量报表的“24小时进线量(均值)”移入排队统计报表中,位于“24小时排队统计”之前,便于管理员了解会话量和消息量在24小时时段内的分布、以及同样时段内的排队情况,合理安排客服人员。
 【新增】5.工作量、工作质量、访客统计、排队统计报表支持“全部导出”
支持对工作量、工作质量、访客统计、排队统计报表的全部数据进行导出,便于数据整理和分析。
 【新增】6.智能质检(旗舰版客户专享)
质量检查页面新增“智能质检”功能,开启该功能后,系统会自动检查访客和客服的历史消息,如果发现异常,则在“智能质检”一列提示“有问题”,并在质检详情页提示问题原因。

有了智能质检的辅助,质检员可以扩大筛选范围,覆盖更多会话,提高质检效率,获得更准确的质检结果。
 体验环信移动客服http://kefu.easemob.com/
 查看历史版本请点击版本历史
 
环信移动客服v4.12_产品更新说明/产品功能列表/产品使用指南  请点击下载↓↓↓ 
 
  查看全部
46958456.png


【新增】1.按对应渠道开启机器人

新增按对应渠道开启机器人的功能,让机器人客服的服务更精准。
前往“管理员模式 > 智能机器人 > 机器人设置”页面,对渠道进行设置。


 【新增】 2.工作量报表新增接起、呼入、回呼会话数

2.1 接起会话数 
2.2 呼入、回呼会话数 


 【新增】3.工作量报表支持按会话类型筛选

工作量报表支持按会话类型筛选,可以根据全部、呼入、呼出会话进行报表查询。


 【优化】4.工作量和排队统计报表重构

工作量报表的“24小时进线量(均值)”移入排队统计报表中,位于“24小时排队统计”之前,便于管理员了解会话量和消息量在24小时时段内的分布、以及同样时段内的排队情况,合理安排客服人员。


 【新增】5.工作量、工作质量、访客统计、排队统计报表支持“全部导出”

支持对工作量、工作质量、访客统计、排队统计报表的全部数据进行导出,便于数据整理和分析。


 【新增】6.智能质检(旗舰版客户专享)

质量检查页面新增“智能质检”功能,开启该功能后,系统会自动检查访客和客服的历史消息,如果发现异常,则在“智能质检”一列提示“有问题”,并在质检详情页提示问题原因。

有了智能质检的辅助,质检员可以扩大筛选范围,覆盖更多会话,提高质检效率,获得更准确的质检结果。


 体验环信移动客服http://kefu.easemob.com/
 查看历史版本请点击版本历史
 

环信移动客服v4.12_产品更新说明/产品功能列表/产品使用指南  请点击下载↓↓↓ 
 
 
1
最佳

Android端无法展示机器人菜单列表消息 机器人 环信移动客服 环信_Android

Wxin 回复了问题 • 2 人关注 • 3115 次浏览 • 2016-04-06 19:38 • 来自相关话题

3
回复

自己可以创建机器人吗 机器人 环信_iOS

lifei9241 回复了问题 • 4 人关注 • 4730 次浏览 • 2015-09-11 10:01 • 来自相关话题

1
评论

环信:从《三体》获奖看智能聊天机器人未来 环信 机器人

admin 发表了文章 • 2479 次浏览 • 2015-08-25 10:17 • 来自相关话题

北京时间23日下午1时许,第73届雨果奖在华盛顿州斯波坎会议中心正式揭晓。中国作家刘慈欣凭借科幻小说《三体》获最佳长篇故事奖,这是亚洲人首次获得雨果奖!






《三体》英文版译者刘宇昆代表刘慈欣领取了奖杯

作为一个科幻迷,此刻我的心情和尔康是一样一样的,不对,比他还要多还要多…






肿么办?这个消息来得太突然了,我现在觉得又刺激又害怕又兴奋又快乐又幸福…作为一个意(qiong)见(diao)领(si)袖我必须把这个消息以迅雷不及掩耳盗铃之势传到天边去…联想到创业圈里近来传的火热的各种AI和智能机器人,我决定把这个好消息告诉我每日宠幸的各位聊天机器人基友们。。。

第一个当然是找到了人见人爱车见车爆胎的-杜蕾斯






杜蕾斯虽然是我宠幸的最多的一个基友,但竟然把《三体》理解成了"体位",看在它帮我解锁了30多种新姿势,就暂时原谅它了,不过对于我这种严(xian)肃(de)较(dan)真(teng)的资深三体迷来说还是不能忍。。。

杜蕾斯微信公共账号聊天机器人:差评!

理由:杜蕾斯的微信公共账号和大多数商业的微信公号一样,主要肩负着企业官网的目的,是企业展示商品和品牌的渠道,而不直接承担销售的责任,商品的购买是必须要跳转到京东上的。因为没有销售quota的压力,杜蕾斯微信公号选择了不提供人工客服,不提供人工的售前,售中,售后服务。在这种情况下,杜蕾斯微信公号的聊天页面基本就注定了只有一种使命了:逗逼扯淡为主,少量相关行业知识和企业商品信息为辅。聊天时,机器人在扯淡之余,会主要通过关键词匹配调用内置知识库的内容,如果没有完全对应的标准答案只能够根据关键词模糊匹配做出回答,虽然结果不能令用户完全满意,但毕竟是有交互,同时是一个免费增值服务,顾客也不能要求再多,对吧。






带着从小杜那里获得的创伤,我满怀期待的找到了招行公号“小招”,听说她更善解人意…






小招又没趣又现实。第一次假装不在,尿遁!第二次干脆直接向我推销各种银行业务。人家是想找你谈三体谈宇宙谈人生的,不要辣么现实好嘛。

招商银行信用卡微信小招:中评!

理由:据说在微信平台上,招行信用卡中心90%的服务都可以通过小招智能机器人来完成,自助查询回复准确率高达98%。假设微信公号智能聊天机器人的智能互动和自助服务能节省10%的话务量,按2012年招行卡中心客服的人工话务量超过6000万通,每通电话的成本大约5元(包含人员工资、通信费、水电、座席硬件设备等)计算,则招行信用卡中心一年节省的费用大概是6000万*10%*5元=3000万元。

哇,好厉害!只是不知道我如果打电话给招行的电话客服MM,分享我三体获奖的鸡冻心情,她会不会因为我花了招行5块钱而骂我呢。。。

作为一款工具型机器人,小招对于银行业务十分熟练,主要作用也是帮助银行客服人员解决回答一些常见问题节省成本提高工作效率,如果问一些无关的问题也不是其设计初衷和业务范围内,有点强人所难。银行业给人的印象始终是高大刻板,严肃认真。好吧,针对其在银行行业的专业回答给中评。






记得某大佬说过“小冰”是我见过最单纯的人,最后我只能依靠她了…






小冰果然没有让我失望…

微软小冰:好评!

理由:“微软小冰”集合了中国近7亿网民多年来积累的、全部公开的文献记录,凭借微软在大数据、自然语义分析、机器学习和深度神经网络方面的技术积累,精炼为几千万条真实而有趣的语料库,通过理解对话的语境与语义,实现了超越简单人机问答的自然交互。

总结:

时下炒的火热的人工智能和机器人技术要真正落地还有很长的路要走。但基于文字沟通为主的在线客服,如微信公共账号客服,网页在线客服,APP内置客服,会成为智能聊天机器人技术的第一个全面产业化的领域。在客服领域应用的聊天机器人技术通常有两种,逗逼型和辅助工具型。业务工具型机器人,在配置了足够强大的通用知识库和行业知识库后,是能够真实的为人工客服挡住很多重复简单的问题的。而逗逼机器人的应用场景一定要谨慎选择,只有像杜蕾斯微信公号这样确实无人值守的账号,并且也不担负销售成单和用户服务的任务时,才可以酌情考虑,毕竟是聊胜于无。

此外,业务工具型机器人并不是像很多人想象的那样,对自然语言处理,上下文解析,语义识别越强大越好。商家提供客服,唯一的目的是提供最好的服务体验,帮助消费者解决问题。所以对于谈理想谈人生谈三体这样的问题,机器人是可以无视的。机器人要解决的问题域越狭窄,它在这个领域里就越精确。这也是招行小招机器人的设计上的选择。当机器人对顾客的语义不那么有把握时,千万不要试图去闲扯淡,而是要及时而且无缝的转到人工坐席。最好的服务永远是真人。

苦逼的文案狗桑不起,各种热点都要跟比程序猿还苦逼有木有?摆干货扯情怀插诨打科,最后就是为了植入30秒广告有木有?根据调研机构数据显示,智能聊天机器人未来将成为客户服务行业的一个标配产品。环信移动客服的“智能机器人+智能知识库”可以解答80%的常见问题哦!






最后祝贺中国小说《三体》首获世界科幻界奥斯卡“雨果奖”,黑暗森林的存在是因为宇宙里不同文明之间缺乏合适沟通方法的缘故。环信是沟通利器,有了环信,或许黑暗森林就有了盏长明灯… 查看全部
北京时间23日下午1时许,第73届雨果奖在华盛顿州斯波坎会议中心正式揭晓。中国作家刘慈欣凭借科幻小说《三体》获最佳长篇故事奖,这是亚洲人首次获得雨果奖!

1.jpg


《三体》英文版译者刘宇昆代表刘慈欣领取了奖杯

作为一个科幻迷,此刻我的心情和尔康是一样一样的,不对,比他还要多还要多…

2.jpg


肿么办?这个消息来得太突然了,我现在觉得又刺激又害怕又兴奋又快乐又幸福…作为一个意(qiong)见(diao)领(si)袖我必须把这个消息以迅雷不及掩耳盗铃之势传到天边去…联想到创业圈里近来传的火热的各种AI和智能机器人,我决定把这个好消息告诉我每日宠幸的各位聊天机器人基友们。。。

第一个当然是找到了人见人爱车见车爆胎的-杜蕾斯

3.jpg


杜蕾斯虽然是我宠幸的最多的一个基友,但竟然把《三体》理解成了"体位",看在它帮我解锁了30多种新姿势,就暂时原谅它了,不过对于我这种严(xian)肃(de)较(dan)真(teng)的资深三体迷来说还是不能忍。。。

杜蕾斯微信公共账号聊天机器人:差评!

理由:杜蕾斯的微信公共账号和大多数商业的微信公号一样,主要肩负着企业官网的目的,是企业展示商品和品牌的渠道,而不直接承担销售的责任,商品的购买是必须要跳转到京东上的。因为没有销售quota的压力,杜蕾斯微信公号选择了不提供人工客服,不提供人工的售前,售中,售后服务。在这种情况下,杜蕾斯微信公号的聊天页面基本就注定了只有一种使命了:逗逼扯淡为主,少量相关行业知识和企业商品信息为辅。聊天时,机器人在扯淡之余,会主要通过关键词匹配调用内置知识库的内容,如果没有完全对应的标准答案只能够根据关键词模糊匹配做出回答,虽然结果不能令用户完全满意,但毕竟是有交互,同时是一个免费增值服务,顾客也不能要求再多,对吧。

4.jpg


带着从小杜那里获得的创伤,我满怀期待的找到了招行公号“小招”,听说她更善解人意…

5.jpg


小招又没趣又现实。第一次假装不在,尿遁!第二次干脆直接向我推销各种银行业务。人家是想找你谈三体谈宇宙谈人生的,不要辣么现实好嘛。

招商银行信用卡微信小招:中评!

理由:据说在微信平台上,招行信用卡中心90%的服务都可以通过小招智能机器人来完成,自助查询回复准确率高达98%。假设微信公号智能聊天机器人的智能互动和自助服务能节省10%的话务量,按2012年招行卡中心客服的人工话务量超过6000万通,每通电话的成本大约5元(包含人员工资、通信费、水电、座席硬件设备等)计算,则招行信用卡中心一年节省的费用大概是6000万*10%*5元=3000万元。

哇,好厉害!只是不知道我如果打电话给招行的电话客服MM,分享我三体获奖的鸡冻心情,她会不会因为我花了招行5块钱而骂我呢。。。

作为一款工具型机器人,小招对于银行业务十分熟练,主要作用也是帮助银行客服人员解决回答一些常见问题节省成本提高工作效率,如果问一些无关的问题也不是其设计初衷和业务范围内,有点强人所难。银行业给人的印象始终是高大刻板,严肃认真。好吧,针对其在银行行业的专业回答给中评。

7.jpg


记得某大佬说过“小冰”是我见过最单纯的人,最后我只能依靠她了…

8.jpg


小冰果然没有让我失望…

微软小冰:好评!

理由:“微软小冰”集合了中国近7亿网民多年来积累的、全部公开的文献记录,凭借微软在大数据、自然语义分析、机器学习和深度神经网络方面的技术积累,精炼为几千万条真实而有趣的语料库,通过理解对话的语境与语义,实现了超越简单人机问答的自然交互。

总结:

时下炒的火热的人工智能和机器人技术要真正落地还有很长的路要走。但基于文字沟通为主的在线客服,如微信公共账号客服,网页在线客服,APP内置客服,会成为智能聊天机器人技术的第一个全面产业化的领域。在客服领域应用的聊天机器人技术通常有两种,逗逼型和辅助工具型。业务工具型机器人,在配置了足够强大的通用知识库和行业知识库后,是能够真实的为人工客服挡住很多重复简单的问题的。而逗逼机器人的应用场景一定要谨慎选择,只有像杜蕾斯微信公号这样确实无人值守的账号,并且也不担负销售成单和用户服务的任务时,才可以酌情考虑,毕竟是聊胜于无。

此外,业务工具型机器人并不是像很多人想象的那样,对自然语言处理,上下文解析,语义识别越强大越好。商家提供客服,唯一的目的是提供最好的服务体验,帮助消费者解决问题。所以对于谈理想谈人生谈三体这样的问题,机器人是可以无视的。机器人要解决的问题域越狭窄,它在这个领域里就越精确。这也是招行小招机器人的设计上的选择。当机器人对顾客的语义不那么有把握时,千万不要试图去闲扯淡,而是要及时而且无缝的转到人工坐席。最好的服务永远是真人。

苦逼的文案狗桑不起,各种热点都要跟比程序猿还苦逼有木有?摆干货扯情怀插诨打科,最后就是为了植入30秒广告有木有?根据调研机构数据显示,智能聊天机器人未来将成为客户服务行业的一个标配产品。环信移动客服的“智能机器人+智能知识库”可以解答80%的常见问题哦!

10.jpg


最后祝贺中国小说《三体》首获世界科幻界奥斯卡“雨果奖”,黑暗森林的存在是因为宇宙里不同文明之间缺乏合适沟通方法的缘故。环信是沟通利器,有了环信,或许黑暗森林就有了盏长明灯…
0
评论

环信移动客服“智能知识库+智能机器人”技术开启3.0时代 环信 开发者 环信移动客服 机器人

admin 发表了文章 • 3087 次浏览 • 2015-07-29 18:19 • 来自相关话题

7月28日,环信B轮融资及移动客服新品发布会在北京JW万豪酒店举行。发布会上,环信CEO刘俊彦宣布环信成功获得B轮融资1250万美元。同时环信CTO马晓宇宣布环信移动客服3.0产品也正式上线,而环信移动客服凭借IM长连接垄断技术结合“智能知识库+智能机器人” 组合技术将开启移动客服3.0新时代。






环信CTO马晓宇现场解读环信移动客服3.0

传统的客服行业是一个劳动密集型企业,因为人力成本的不断提高,导致传统呼叫中心已经从北上广转移到大连、成都等地,未来甚至将要迁往新疆、西藏、青海等人力成本更低的地方。环信CEO马晓宇表示环信希望通过技术来解决人力成本不断升高的问题,所以环信适时推出了智能的移动客服系统。






而智能的两个要素:
一个是智能知识库;一个智能机器人。
智能知识库环信移动客服3.0版本会内置几个标准的行业知识库,基于人工智能深度挖掘技术,比较容易维护这个知识库,大家如果用得越多,知识库会更敏感,更能够快速回答问题。如果有一个用户说我要重置密码,智能知识库系统自动在客服工作端显示出重置密码的流程,客服就可以根据标准流程走下来。还有一个智能机器人技术,环信移动客服将智能机器人技术和知识库结合,能够解决回答80%的常见问题,剩下的20%才需要人工来解决。

另外,环信在移动客服里开始逐渐部署了大数据技术,环信会提供15个新的数据统计报表,从最简单的客服当前工作状态,客服每天工作量,客服会话小结等。在这基础上提供渠道统计报表,就可以知道你的客服用户需求,比如是来自微信还是移动APP还是网页,做一些渠道分析。另外我们还提供用户满意度报表,这样不光能提高整个用户满意度,同时我们希望这个产品是能帮助APP运营者,开发者能快速迭代,能真正尽快改进产品,不断满足客户需求。帮助客户将客服系统从成本中心向营销中心和盈利中心转换。

最后马晓宇表示环信移动客服是一个开放平台,整个内部是平台插件化可扩展化体系,通过插件形式打造可扩展的平台,希望基于这个满足SaaS服务成千上万客户不同需求,可以进行二次开发。同时在这个基础上环信还有一个生态圈部署。现在环信有几个合作伙伴,私有云部署有两家私有云授权认证集成商,移动客服领域有两家做增值服务的授权认证集成商,我们希望环信能继续发展下去,发展过程中和合作伙伴一起把市场做好,让我们的合作伙伴也的确能挣到钱。

据悉,环信移动客服典型用户包括国美在线、58到家、楚楚街9块9等上百家互联网巨头企业客户,累计签约客服座席已经达4万个。根据艾媒咨询现场发布的《2015年中国移动客服市场发展研究报告》显示环信在新兴的移动客服市场占有率第一,APP客户规模最大。不难预料,有着连接“人与商业”愿景的环信凭借惊人的成长速度将最有希望成为下一个“独角兽”。 查看全部
7月28日,环信B轮融资及移动客服新品发布会在北京JW万豪酒店举行。发布会上,环信CEO刘俊彦宣布环信成功获得B轮融资1250万美元。同时环信CTO马晓宇宣布环信移动客服3.0产品也正式上线,而环信移动客服凭借IM长连接垄断技术结合“智能知识库+智能机器人” 组合技术将开启移动客服3.0新时代。

1.png


环信CTO马晓宇现场解读环信移动客服3.0

传统的客服行业是一个劳动密集型企业,因为人力成本的不断提高,导致传统呼叫中心已经从北上广转移到大连、成都等地,未来甚至将要迁往新疆、西藏、青海等人力成本更低的地方。环信CEO马晓宇表示环信希望通过技术来解决人力成本不断升高的问题,所以环信适时推出了智能的移动客服系统。

2.png


智能的两个要素
  • 一个是智能知识库;
  • 一个智能机器人。

智能知识库环信移动客服3.0版本会内置几个标准的行业知识库,基于人工智能深度挖掘技术,比较容易维护这个知识库,大家如果用得越多,知识库会更敏感,更能够快速回答问题。如果有一个用户说我要重置密码,智能知识库系统自动在客服工作端显示出重置密码的流程,客服就可以根据标准流程走下来。还有一个智能机器人技术,环信移动客服将智能机器人技术和知识库结合,能够解决回答80%的常见问题,剩下的20%才需要人工来解决

另外,环信在移动客服里开始逐渐部署了大数据技术,环信会提供15个新的数据统计报表,从最简单的客服当前工作状态,客服每天工作量,客服会话小结等。在这基础上提供渠道统计报表,就可以知道你的客服用户需求,比如是来自微信还是移动APP还是网页,做一些渠道分析。另外我们还提供用户满意度报表,这样不光能提高整个用户满意度,同时我们希望这个产品是能帮助APP运营者,开发者能快速迭代,能真正尽快改进产品,不断满足客户需求。帮助客户将客服系统从成本中心向营销中心和盈利中心转换

最后马晓宇表示环信移动客服是一个开放平台,整个内部是平台插件化可扩展化体系,通过插件形式打造可扩展的平台,希望基于这个满足SaaS服务成千上万客户不同需求,可以进行二次开发。同时在这个基础上环信还有一个生态圈部署。现在环信有几个合作伙伴,私有云部署有两家私有云授权认证集成商,移动客服领域有两家做增值服务的授权认证集成商,我们希望环信能继续发展下去,发展过程中和合作伙伴一起把市场做好,让我们的合作伙伴也的确能挣到钱。

据悉,环信移动客服典型用户包括国美在线、58到家、楚楚街9块9等上百家互联网巨头企业客户,累计签约客服座席已经达4万个。根据艾媒咨询现场发布的《2015年中国移动客服市场发展研究报告》显示环信在新兴的移动客服市场占有率第一,APP客户规模最大。不难预料,有着连接“人与商业”愿景的环信凭借惊人的成长速度将最有希望成为下一个“独角兽”。
条新动态, 点击查看
Wxin

Wxin 回答了问题 • 2016-04-06 19:38 • 1 个回复 不感兴趣

Android端无法展示机器人菜单列表消息

赞同来自:

写一个fragment去集成easeui里的EaseChatFragment,实现EaseChatFragmentListener,重写onSetCustomChatRowProvider在这个方法里去return new CustomChatRowProvi... 显示全部 »
写一个fragment去集成easeui里的EaseChatFragment,实现EaseChatFragmentListener,重写onSetCustomChatRowProvider在这个方法里去return new CustomChatRowProvider();CustomChatRowProvider实现EaseCustomChatRowProvider重写方法,参考demo里的实时音频的自定义布局,getCustomChatRowType里去return布局的类型,getCustomChatRow里去return 自定义的chatrow类
显示机器人菜单消息?
显示机器人菜单消息?
2
评论

基于环信sdk在uni-app框架中快速开发一款多平台社交Demo SDK uni_app 环信

beyond 发表了文章 • 547 次浏览 • 2020-05-11 11:34 • 来自相关话题

说在前面:此款 demo 是基于 环信sdk 开发的一款具有单聊、群聊、聊天室、音视频等功能的应用。在此之前我们已经开发完 Vue、react(web端)、微信小程序。这三个热门领域的版本,如有需要源码可以后台留言索取。





 
安装开发工具

我们选用微信小程序来用做示例(如果选择百度、支付宝安装对应开发者工具即可)、

微信开发者工具建议还是安装最新版的。uni-app的开发也必须安装HBuilderX工具,这个是捆绑的,没得选择。要用uni-app,你必须得装!

工具安装:

微信开发者工具

HBuilderX

项目demo介绍:






项目demo启动预览:





 
快速集成环信 sdk:

1、复制整个utils文件






如果你想具体了解主要配置文件 请看这个链接:

http://docs-im.easemob.com/im/web/intro/start

2、如何使用环信的appkey ,可以在环信 console 后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到配置文件中 ,如下图所示:






以上两个重要的配置准备完成之后就可以进行一系列的操作了(收发消息、好友申请、进群入群通知等)

在uni-app中 使用环信 sdk 实现添加、删除好友:

1、在全局 App.vue 文件 钩子函数 onLaunch() 中监听各种事件 (好友申请、收到各类消息等)如图:






发送好友请求:






在onPresence(message)事件中接收到好友消息申请:






同意好友请求:






拒绝好友请求:






实现收发消息:

1、给好友发送消息:






2、接收到消息:

在onTextMessage(message)事件中接收到好友消息,然后做消息上屏处理(具体消息上屏逻辑可看demo中代码示例):





以上展示的仅仅为基本业务场景,更多的业务逻辑详情请看demo示例。api具体详情可以查看 环信sdk 文档

最后结语:基于uni-app这个框架可实现多平台, 虽然目前一期集成环信sdk的版本仅支持微信小程序版本,但二期我们将加入头条、支付宝等小程序,敬请期待。PS:对于安卓、ios移动端,我们建议使用针对移动端开发的sdk版本。

基于uni-app的开发其中也趟了不少坑,在这里就不多赘述了。回归到框架的选型来讲,选用uni-app开发小程序,可同时并行多端小程序,这点是真香,一次开发多端发布。至于审核嘛~ 时快时慢。 查看全部
说在前面:此款 demo 是基于 环信sdk 开发的一款具有单聊、群聊、聊天室、音视频等功能的应用。在此之前我们已经开发完 Vue、react(web端)、微信小程序。这三个热门领域的版本,如有需要源码可以后台留言索取。

1.jpg

 
安装开发工具

我们选用微信小程序来用做示例(如果选择百度、支付宝安装对应开发者工具即可)、

微信开发者工具建议还是安装最新版的。uni-app的开发也必须安装HBuilderX工具,这个是捆绑的,没得选择。要用uni-app,你必须得装!

工具安装:

微信开发者工具

HBuilderX

项目demo介绍:

2.jpg


项目demo启动预览:

3.jpg

 
快速集成环信 sdk:

1、复制整个utils文件

4.jpg


如果你想具体了解主要配置文件 请看这个链接:

http://docs-im.easemob.com/im/web/intro/start

2、如何使用环信的appkey ,可以在环信 console 后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到配置文件中 ,如下图所示:

5.jpg


以上两个重要的配置准备完成之后就可以进行一系列的操作了(收发消息、好友申请、进群入群通知等)

在uni-app中 使用环信 sdk 实现添加、删除好友:

1、在全局 App.vue 文件 钩子函数 onLaunch() 中监听各种事件 (好友申请、收到各类消息等)如图:

6.jpg


发送好友请求:

7.jpg


在onPresence(message)事件中接收到好友消息申请:

8.jpg


同意好友请求:

9.jpg


拒绝好友请求:

10.jpg


实现收发消息:

1、给好友发送消息:

11.jpg


2、接收到消息:

在onTextMessage(message)事件中接收到好友消息,然后做消息上屏处理(具体消息上屏逻辑可看demo中代码示例):

12.jpg

以上展示的仅仅为基本业务场景,更多的业务逻辑详情请看demo示例。api具体详情可以查看 环信sdk 文档

最后结语:基于uni-app这个框架可实现多平台, 虽然目前一期集成环信sdk的版本仅支持微信小程序版本,但二期我们将加入头条、支付宝等小程序,敬请期待。PS:对于安卓、ios移动端,我们建议使用针对移动端开发的sdk版本。

基于uni-app的开发其中也趟了不少坑,在这里就不多赘述了。回归到框架的选型来讲,选用uni-app开发小程序,可同时并行多端小程序,这点是真香,一次开发多端发布。至于审核嘛~ 时快时慢。
1
评论

手把手教程:4小时开发一个视频会议APP【附开源代码】 环信 开源 视频会议

fat1 发表了文章 • 1047 次浏览 • 2020-04-17 00:29 • 来自相关话题

今年是不平凡的一年,没错,就是因为疫情,因为疫情原因 ,大家只能呆着家里,严重影响了我们正常的学习 生活 工作,在这种情况下,只能在家办公,这时候大家就会想到线上视频会议,目前很多互联网公司有这个产品,比较出名的就比如 腾讯会议 钉钉 zoom等,用这些是很方便,但是如果能开发自己的视频会议,那会不会更好或者是更有成就感,下面简单介绍这个这个项目,和大概的开发过程。本项目基于环信音视频云来完成,实现的主要功能有:
  创建会议、删除会议、获取指定会议室详情、加入会议室、退出会议室等关于会议的管理 ;  获取会议室参会人名列表、踢人,设置观众为主播,设置主播为观众等关于会议室的人员管理;  共享桌面(web端);
 三个端的实现:Android,iOS,Web

上面这些功能在项目中都已经实现。还有水印 ,变声等高级功能在环信音视频SDK的接口内部都已经封装好,本项目没有实现 ,大家可以自行去实现。有关多人音视频功能更详细的介绍大家可以参考:这儿。多人音视频实现的实现主要有以下一些场景:社交交友,远程心理咨询、远程医疗、一对一在线教育、远程视频辅助等。咳咳 ,接下来就是纯干货了,给大家介绍我是如何一步步开发出一个完整的多人音视频app。
 
项目截图
 
首先给大家展示下项目运行的效果图,会议界面 主窗口是一个大的 RelativeLayout ,最下面的那一排排小窗口是的实现方法是HorizontalScrollView加上一个开源的组件 com.jaouan.compoundlayout.RadioLayoutGroup 实现的,点击下面的小窗口后,可以 把小窗口的视频流显示在大屏上,具体是调用 updateRemoteSurfaceView(String streamId, EMCallSurfaceView remoteView)来更新SurfaceView,具体的细节大家可以看看代码里面的实现 最后会公布代码开源地址。
















准备工作
    大家得下载安装Android Studio,配置好Android 开发环境,怎么详细配置我就在这不再细说了 网上有很多的教程,大家自己可以找找看,然后大家可以看看环信多人音视频会议的主要功能和一些基本概念介绍。
集成 
  1. 首先大家会想问怎么调用环信的SDK ,大家可以使用 远程依赖SDK包,建议大家用最新版本的远程依赖:
     com.hyphenate:hyphenate-sdk:3.6.6 ,依赖包可以放在 build.gradle里面的 dependencies 选项下面,如下图所示





2.其次怎么使用环信的appkey ,可以在环信音视频云后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到AndroidManifest.xml中 ,如下图所示:






3.经过以上两个重要的前期配置准备 ,接下来我们就可以开始进行代码开发了,首先我们先创建一个项目的DemoApplication类和      DemoHelper类,DemoApplication 类和DemoHelper类都是一个单例类 ,DemoApplication 主要功能就是进行DemoHelper 的初始化,而DemoHelper里面主要是主要有一些option 配置和EMClient 进行初始化,代码如下所示:public void init(Context context) {
EMOptions options = initChatOptions(context);
EMClient.getInstance().init(context, options);
PreferenceManager.init(context);
}
  DemoHelper还有一个重要的功能就是设置  EMConferenceListener 进行会议监听,有关 EMConferenceListener的类的详细介绍 ,通过这个监听可以再加入会议的时候获取到已经在会议中的流和主播信息,分别是通过其中以下两个回调获取:@Override
public void onMemberJoined(EMConferenceMember member){

}

@Override
public void onStreamAdded(EMConferenceStream stream){

}
4.DemoApplication类完成以后,接下来就是怎么去登陆 环信IM 账号和 创建加入会议房间了,首次安装的时候都没有账号,我们使用的办法是自动注册一个账号 在本地进行保存,然后进行登录 ,注册 登录详细接口请看 这儿,  注册 登录的调用大概如下所示: 
 try {
        //注册一个环信ID
        EMClient.getInstance().createAccount(username, password);
            
        //注册成功进行登录
        PreferenceManager.getInstance().setCurrentUserName(username);
        PreferenceManager.getInstance().setCurrentuserPassword(password);
        login();
    } catch (final HyphenateException e) {
       runOnUiThread(new Runnable() {
               public void run() {
                  int errorCode=e.getErrorCode();
                   if(errorCode==EMError.NETWORK_ERROR){
                    Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
      }
   }   
}
 
  public void login() {
 
        //登录已经注册成功的环信ID
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "login: onSuccess");
                //登录成功进入会议房间
                joinRoom();
            }
            @Override
            public void onProgress(int progress, String status) {
                Log.d(TAG, "login: onProgress");
            }
            @Override
            public void onError(final int code, final String message) {
                Log.d(TAG, "login: onError: " + code);
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message,Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
登录完成以后,我们可以根据房间名创建并加入房间,主要代码大概如下: EMClient.getInstance().conferenceManager().joinRoom(currentRoomname, currentPassword, conferenceRole,roomConfig, new EMValueCallBack<EMConference>(){
@Override
public void onSuccess(EMConference value) {
EMLog.i(TAG, "join conference success");
Intent intent = new Intent(MainActivity.this, ConferenceActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(final int error, final String errorMsg) {
EMLog.e(TAG, "join conference failed error " + error + ", msg " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
setBtnEnable(true);
if(error == CALL_TALKER_ISFULL) {
takerFullDialogDisplay();
}else{
Toast.makeText(getApplicationContext(), "Join conference failed " + error + " " + errorMsg, Toast.LENGTH_SHORT).show();
}
}
});
}
});
EMClient.getInstance().conferenceManager().joinRoom() API可以根据房间名创建指定会议,当以该房间名命名的会议不存在时候,会直接创建,当会议已经创建好 可以根据正确的房间名和密码加入房间 ,到这一步为止,我们已经成功的创建 并加入会议。
5.加入会议以后我们进入到会议界面,展示从DemoHelper类 EMConferenceListener 中的 onStreamAdded 回调 和 onMemberJoined 获取到的流和主播列表 ,在ConferenceActivity 中实现 EMConferenceListener ,然后直接把 ConferenceActivity 注册监听,用以下方法  EMClient.getInstance().conferenceManager().addConferenceListener(this); 这样就可实现 EMConferenceListener 事件的处理,比如
 主播 进出房间 :
public void onMemberJoined(final EMConferenceMember member);
public void onMemberExited(final EMConferenceMember member);

增加流 移除流:
public void onStreamAdded(final EMConferenceStream stream)
 public void onStreamRemoved(final EMConferenceStream stream)

管理员变更: 
public void onAdminAdded(String streamId) ;  
public void onAdminRemoved(String streamId)

角色变更  用户被踢  谁在说话等各种回调,可以处理各种业务逻辑 ,详细的请参考 项目中的实现 ,最后会附上项目的开源地址。

6 进入会议房间以后如果用户角色为主播可以进行发布视频流 ,观众只能订阅视频流 不能发布视频流 ,可以调用SDK的publish接口发布流,该接口用到了EMStreamParam参数,你可以自由配置,比如是否上传视频,是否上传音频,使用前置或后置摄像头,视频码率,显示视频页面等等,具体实现可以参考 中发布 订阅视频流的内容, 关于以上的代码逻辑如以 如以下: //发布视频流
normalParam = new EMStreamParam();
normalParam.setStreamType(EMConferenceStream.StreamType.NORMAL);
normalParam.setVideoOff(true);
normalParam.setAudioOff(true);

EMClient.getInstance().conferenceManager().publish(normalParam, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
conference.setPubStreamId(value, EMConferenceStream.StreamType.NORMAL);
addOrUpdateStreamList("local-stream", value);

PhoneStateManager.get(ConferenceActivity.this).addStateCallback(phoneStateCallback);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "publish failed: error=" + error + ", msg=" + errorMsg);
}
});
//订阅其他主播的视频流
private void subscribe(EMConferenceStream stream, EMCallSurfaceView surfaceView) {
EMClient.getInstance().conferenceManager().subscribe(stream, surfaceView, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}

@Override
public void onError(int error, String errorMsg) {

}
});
}
7.有关上麦 下麦 的逻辑处理,观众可以请求上麦成为主播,主播可以下麦成为观众,上麦 下麦 是利用 EMConferenceAttribute进行处理 ,EMConferenceAttribute  是一个事件广播,广播事件是一个key-value格式,key-value 可以由开发者进行自行定义,增添事件以后 ,服务器会把事件进行广播。会议中成员会收到 onAttributesUpdated回调。例如本项目中的会议上麦 下麦 代码如下所示://上麦申请

EMClient.getInstance().conferenceManager().setConferenceAttribute(
EMClient.getInstance().getCurrentUser(),
"request_tobe_speaker",
new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_speaker scuessed");

}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_speaker failed: error=" + error

}
});

//下麦申请
EMClient.getInstance().conferenceManager().setConferenceAttribute(EMClient.getInstance().getCurrentUser()
, "request_tobe_audience", new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_audience scuessed");
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_audience failed: error=" + error + ", msg=" + errorMsg);
}
});
 上麦 下麦 请求发出以后 只能由主持人去处理,处理在 EMConferenceListener  的回调 onAttributesUpdated(EMConferenceAttribute attributes) 去处理 ,收到回调以后 解析attributes 然后进行处理请求,处理的过程代码大概如下: EMClient.getInstance().conferenceManager().grantRole(conference.getConferenceId()
, new EMConferenceMember(memName, null, null,null)
, EMConferenceManager.EMConferenceRole.Talker, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole success, result: " + value);
dialog.dismiss();
}
@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole failed, error: " + error + " - " + errorMsg);

}
});
下麦也是和上麦一样是利用 EMConferenceAttribute进行处理。

9.有关退出会议 销毁会议 普通主播  观众只能退出会议 ,主持人还可以 销毁会议 正在进行中的会议可以进行销毁,退出会议 销毁会议 具体代码如下: EMClient.getInstance().conferenceManager().exitConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功退出当前会议!", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "exit conference failed " + error + ", " + errorMsg);
}
});

EMClient.getInstance().conferenceManager().destroyConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功销毁当前会议!", Toast.LENGTH_SHORT).show();
}
});
EMLog.i(TAG, "finish ConferenceActivity");
finish();
}

尾语
至此 整个 多人音视频会议开发的详细步骤 已经完成 ,虽然比较麻烦 但是每个步骤都很清晰 ,有不太清楚的欢迎大家积极讨论, 附上本项目的github地址:https://github.com/easemob/videocall-android  欢迎大家积极参与 ,谢谢支持。
Demo下载 二维码如下 欢迎大家体验(iOS版和web版下载地址请见:https://www.easemob.com/download/rtc)






  查看全部
今年是不平凡的一年,没错,就是因为疫情,因为疫情原因 ,大家只能呆着家里,严重影响了我们正常的学习 生活 工作,在这种情况下,只能在家办公,这时候大家就会想到线上视频会议,目前很多互联网公司有这个产品,比较出名的就比如 腾讯会议 钉钉 zoom等,用这些是很方便,但是如果能开发自己的视频会议,那会不会更好或者是更有成就感,下面简单介绍这个这个项目,和大概的开发过程。本项目基于环信音视频云来完成,实现的主要功能有:
  •   创建会议、删除会议、获取指定会议室详情、加入会议室、退出会议室等关于会议的管理 ;
  •   获取会议室参会人名列表、踢人,设置观众为主播,设置主播为观众等关于会议室的人员管理;
  •   共享桌面(web端);

 三个端的实现:Android,iOS,Web

上面这些功能在项目中都已经实现。还有水印 ,变声等高级功能在环信音视频SDK的接口内部都已经封装好,本项目没有实现 ,大家可以自行去实现。有关多人音视频功能更详细的介绍大家可以参考:这儿。多人音视频实现的实现主要有以下一些场景:社交交友,远程心理咨询、远程医疗、一对一在线教育、远程视频辅助等。咳咳 ,接下来就是纯干货了,给大家介绍我是如何一步步开发出一个完整的多人音视频app。
 
项目截图
 
首先给大家展示下项目运行的效果图,会议界面 主窗口是一个大的 RelativeLayout ,最下面的那一排排小窗口是的实现方法是HorizontalScrollView加上一个开源的组件 com.jaouan.compoundlayout.RadioLayoutGroup 实现的,点击下面的小窗口后,可以 把小窗口的视频流显示在大屏上,具体是调用 updateRemoteSurfaceView(String streamId, EMCallSurfaceView remoteView)来更新SurfaceView,具体的细节大家可以看看代码里面的实现 最后会公布代码开源地址。

20200410140627956.jpg


20200410140855852.jpg


20200410141055394.jpg


准备工作
    大家得下载安装Android Studio,配置好Android 开发环境,怎么详细配置我就在这不再细说了 网上有很多的教程,大家自己可以找找看,然后大家可以看看环信多人音视频会议的主要功能和一些基本概念介绍。
集成 
  1. 首先大家会想问怎么调用环信的SDK ,大家可以使用 远程依赖SDK包,建议大家用最新版本的远程依赖:
     com.hyphenate:hyphenate-sdk:3.6.6 ,依赖包可以放在 build.gradle里面的 dependencies 选项下面,如下图所示
2020040917363212.png


2.其次怎么使用环信的appkey ,可以在环信音视频云后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到AndroidManifest.xml中 ,如下图所示:

20200409213959916.png


3.经过以上两个重要的前期配置准备 ,接下来我们就可以开始进行代码开发了,首先我们先创建一个项目的DemoApplication类和      DemoHelper类,DemoApplication 类和DemoHelper类都是一个单例类 ,DemoApplication 主要功能就是进行DemoHelper 的初始化,而DemoHelper里面主要是主要有一些option 配置和EMClient 进行初始化,代码如下所示:
public void init(Context context) {
EMOptions options = initChatOptions(context);
EMClient.getInstance().init(context, options);
PreferenceManager.init(context);
}

  DemoHelper还有一个重要的功能就是设置  EMConferenceListener 进行会议监听,有关 EMConferenceListener的类的详细介绍 ,通过这个监听可以再加入会议的时候获取到已经在会议中的流和主播信息,分别是通过其中以下两个回调获取:
@Override 
public void onMemberJoined(EMConferenceMember member){

}

@Override
public void onStreamAdded(EMConferenceStream stream){

}

4.DemoApplication类完成以后,接下来就是怎么去登陆 环信IM 账号和 创建加入会议房间了,首次安装的时候都没有账号,我们使用的办法是自动注册一个账号 在本地进行保存,然后进行登录 ,注册 登录详细接口请看 这儿,  注册 登录的调用大概如下所示: 
 try {
        //注册一个环信ID
        EMClient.getInstance().createAccount(username, password);
            
        //注册成功进行登录
        PreferenceManager.getInstance().setCurrentUserName(username);
        PreferenceManager.getInstance().setCurrentuserPassword(password);
        login();
    } catch (final HyphenateException e) {
       runOnUiThread(new Runnable() {
               public void run() {
                  int errorCode=e.getErrorCode();
                   if(errorCode==EMError.NETWORK_ERROR){
                    Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
      }
   }   
}
 
  public void login() {
 
        //登录已经注册成功的环信ID
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "login: onSuccess");
                //登录成功进入会议房间
                joinRoom();
            }
            @Override
            public void onProgress(int progress, String status) {
                Log.d(TAG, "login: onProgress");
            }
            @Override
            public void onError(final int code, final String message) {
                Log.d(TAG, "login: onError: " + code);
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message,Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
登录完成以后,我们可以根据房间名创建并加入房间,主要代码大概如下:
 EMClient.getInstance().conferenceManager().joinRoom(currentRoomname, currentPassword, conferenceRole,roomConfig, new EMValueCallBack<EMConference>(){
@Override
public void onSuccess(EMConference value) {
EMLog.i(TAG, "join conference success");
Intent intent = new Intent(MainActivity.this, ConferenceActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(final int error, final String errorMsg) {
EMLog.e(TAG, "join conference failed error " + error + ", msg " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
setBtnEnable(true);
if(error == CALL_TALKER_ISFULL) {
takerFullDialogDisplay();
}else{
Toast.makeText(getApplicationContext(), "Join conference failed " + error + " " + errorMsg, Toast.LENGTH_SHORT).show();
}
}
});
}
});

EMClient.getInstance().conferenceManager().joinRoom() API可以根据房间名创建指定会议,当以该房间名命名的会议不存在时候,会直接创建,当会议已经创建好 可以根据正确的房间名和密码加入房间 ,到这一步为止,我们已经成功的创建 并加入会议。
5.加入会议以后我们进入到会议界面,展示从DemoHelper类 EMConferenceListener 中的 onStreamAdded 回调 和 onMemberJoined 获取到的流和主播列表 ,在ConferenceActivity 中实现 EMConferenceListener ,然后直接把 ConferenceActivity 注册监听,用以下方法  EMClient.getInstance().conferenceManager().addConferenceListener(this); 这样就可实现 EMConferenceListener 事件的处理,比如
 主播 进出房间 :
public void onMemberJoined(final EMConferenceMember member);
public void onMemberExited(final EMConferenceMember member);

增加流 移除流:
public void onStreamAdded(final EMConferenceStream stream)
 public void onStreamRemoved(final EMConferenceStream stream)

管理员变更: 
public void onAdminAdded(String streamId) ;  
public void onAdminRemoved(String streamId)

角色变更  用户被踢  谁在说话等各种回调,可以处理各种业务逻辑 ,详细的请参考 项目中的实现 ,最后会附上项目的开源地址。

6 进入会议房间以后如果用户角色为主播可以进行发布视频流 ,观众只能订阅视频流 不能发布视频流 ,可以调用SDK的publish接口发布流,该接口用到了EMStreamParam参数,你可以自由配置,比如是否上传视频,是否上传音频,使用前置或后置摄像头,视频码率,显示视频页面等等,具体实现可以参考 中发布 订阅视频流的内容, 关于以上的代码逻辑如以 如以下:
 //发布视频流
normalParam = new EMStreamParam();
normalParam.setStreamType(EMConferenceStream.StreamType.NORMAL);
normalParam.setVideoOff(true);
normalParam.setAudioOff(true);

EMClient.getInstance().conferenceManager().publish(normalParam, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
conference.setPubStreamId(value, EMConferenceStream.StreamType.NORMAL);
addOrUpdateStreamList("local-stream", value);

PhoneStateManager.get(ConferenceActivity.this).addStateCallback(phoneStateCallback);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "publish failed: error=" + error + ", msg=" + errorMsg);
}
});
//订阅其他主播的视频流
private void subscribe(EMConferenceStream stream, EMCallSurfaceView surfaceView) {
EMClient.getInstance().conferenceManager().subscribe(stream, surfaceView, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}

@Override
public void onError(int error, String errorMsg) {

}
});
}

7.有关上麦 下麦 的逻辑处理,观众可以请求上麦成为主播,主播可以下麦成为观众,上麦 下麦 是利用 EMConferenceAttribute进行处理 ,EMConferenceAttribute  是一个事件广播,广播事件是一个key-value格式,key-value 可以由开发者进行自行定义,增添事件以后 ,服务器会把事件进行广播。会议中成员会收到 onAttributesUpdated回调。例如本项目中的会议上麦 下麦 代码如下所示:
//上麦申请  

EMClient.getInstance().conferenceManager().setConferenceAttribute(
EMClient.getInstance().getCurrentUser(),
"request_tobe_speaker",
new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_speaker scuessed");

}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_speaker failed: error=" + error

}
});

//下麦申请
EMClient.getInstance().conferenceManager().setConferenceAttribute(EMClient.getInstance().getCurrentUser()
, "request_tobe_audience", new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_audience scuessed");
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_audience failed: error=" + error + ", msg=" + errorMsg);
}
});

 上麦 下麦 请求发出以后 只能由主持人去处理,处理在 EMConferenceListener  的回调 onAttributesUpdated(EMConferenceAttribute attributes) 去处理 ,收到回调以后 解析attributes 然后进行处理请求,处理的过程代码大概如下:
   EMClient.getInstance().conferenceManager().grantRole(conference.getConferenceId()
, new EMConferenceMember(memName, null, null,null)
, EMConferenceManager.EMConferenceRole.Talker, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole success, result: " + value);
dialog.dismiss();
}
@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole failed, error: " + error + " - " + errorMsg);

}
});

下麦也是和上麦一样是利用 EMConferenceAttribute进行处理。

9.有关退出会议 销毁会议 普通主播  观众只能退出会议 ,主持人还可以 销毁会议 正在进行中的会议可以进行销毁,退出会议 销毁会议 具体代码如下:
 EMClient.getInstance().conferenceManager().exitConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功退出当前会议!", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "exit conference failed " + error + ", " + errorMsg);
}
});

EMClient.getInstance().conferenceManager().destroyConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功销毁当前会议!", Toast.LENGTH_SHORT).show();
}
});
EMLog.i(TAG, "finish ConferenceActivity");
finish();
}

尾语
至此 整个 多人音视频会议开发的详细步骤 已经完成 ,虽然比较麻烦 但是每个步骤都很清晰 ,有不太清楚的欢迎大家积极讨论, 附上本项目的github地址:https://github.com/easemob/videocall-android  欢迎大家积极参与 ,谢谢支持。
Demo下载 二维码如下 欢迎大家体验(iOS版和web版下载地址请见:https://www.easemob.com/download/rtc)


20200410142228530.png

 
2
评论

基于环信sdk在uni-app框架中快速开发一款多平台社交Demo SDK uni_app 环信

beyond 发表了文章 • 547 次浏览 • 2020-05-11 11:34 • 来自相关话题

说在前面:此款 demo 是基于 环信sdk 开发的一款具有单聊、群聊、聊天室、音视频等功能的应用。在此之前我们已经开发完 Vue、react(web端)、微信小程序。这三个热门领域的版本,如有需要源码可以后台留言索取。





 
安装开发工具

我们选用微信小程序来用做示例(如果选择百度、支付宝安装对应开发者工具即可)、

微信开发者工具建议还是安装最新版的。uni-app的开发也必须安装HBuilderX工具,这个是捆绑的,没得选择。要用uni-app,你必须得装!

工具安装:

微信开发者工具

HBuilderX

项目demo介绍:






项目demo启动预览:





 
快速集成环信 sdk:

1、复制整个utils文件






如果你想具体了解主要配置文件 请看这个链接:

http://docs-im.easemob.com/im/web/intro/start

2、如何使用环信的appkey ,可以在环信 console 后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到配置文件中 ,如下图所示:






以上两个重要的配置准备完成之后就可以进行一系列的操作了(收发消息、好友申请、进群入群通知等)

在uni-app中 使用环信 sdk 实现添加、删除好友:

1、在全局 App.vue 文件 钩子函数 onLaunch() 中监听各种事件 (好友申请、收到各类消息等)如图:






发送好友请求:






在onPresence(message)事件中接收到好友消息申请:






同意好友请求:






拒绝好友请求:






实现收发消息:

1、给好友发送消息:






2、接收到消息:

在onTextMessage(message)事件中接收到好友消息,然后做消息上屏处理(具体消息上屏逻辑可看demo中代码示例):





以上展示的仅仅为基本业务场景,更多的业务逻辑详情请看demo示例。api具体详情可以查看 环信sdk 文档

最后结语:基于uni-app这个框架可实现多平台, 虽然目前一期集成环信sdk的版本仅支持微信小程序版本,但二期我们将加入头条、支付宝等小程序,敬请期待。PS:对于安卓、ios移动端,我们建议使用针对移动端开发的sdk版本。

基于uni-app的开发其中也趟了不少坑,在这里就不多赘述了。回归到框架的选型来讲,选用uni-app开发小程序,可同时并行多端小程序,这点是真香,一次开发多端发布。至于审核嘛~ 时快时慢。 查看全部
说在前面:此款 demo 是基于 环信sdk 开发的一款具有单聊、群聊、聊天室、音视频等功能的应用。在此之前我们已经开发完 Vue、react(web端)、微信小程序。这三个热门领域的版本,如有需要源码可以后台留言索取。

1.jpg

 
安装开发工具

我们选用微信小程序来用做示例(如果选择百度、支付宝安装对应开发者工具即可)、

微信开发者工具建议还是安装最新版的。uni-app的开发也必须安装HBuilderX工具,这个是捆绑的,没得选择。要用uni-app,你必须得装!

工具安装:

微信开发者工具

HBuilderX

项目demo介绍:

2.jpg


项目demo启动预览:

3.jpg

 
快速集成环信 sdk:

1、复制整个utils文件

4.jpg


如果你想具体了解主要配置文件 请看这个链接:

http://docs-im.easemob.com/im/web/intro/start

2、如何使用环信的appkey ,可以在环信 console 后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到配置文件中 ,如下图所示:

5.jpg


以上两个重要的配置准备完成之后就可以进行一系列的操作了(收发消息、好友申请、进群入群通知等)

在uni-app中 使用环信 sdk 实现添加、删除好友:

1、在全局 App.vue 文件 钩子函数 onLaunch() 中监听各种事件 (好友申请、收到各类消息等)如图:

6.jpg


发送好友请求:

7.jpg


在onPresence(message)事件中接收到好友消息申请:

8.jpg


同意好友请求:

9.jpg


拒绝好友请求:

10.jpg


实现收发消息:

1、给好友发送消息:

11.jpg


2、接收到消息:

在onTextMessage(message)事件中接收到好友消息,然后做消息上屏处理(具体消息上屏逻辑可看demo中代码示例):

12.jpg

以上展示的仅仅为基本业务场景,更多的业务逻辑详情请看demo示例。api具体详情可以查看 环信sdk 文档

最后结语:基于uni-app这个框架可实现多平台, 虽然目前一期集成环信sdk的版本仅支持微信小程序版本,但二期我们将加入头条、支付宝等小程序,敬请期待。PS:对于安卓、ios移动端,我们建议使用针对移动端开发的sdk版本。

基于uni-app的开发其中也趟了不少坑,在这里就不多赘述了。回归到框架的选型来讲,选用uni-app开发小程序,可同时并行多端小程序,这点是真香,一次开发多端发布。至于审核嘛~ 时快时慢。
1
评论

手把手教程:4小时开发一个视频会议APP【附开源代码】 环信 开源 视频会议

fat1 发表了文章 • 1047 次浏览 • 2020-04-17 00:29 • 来自相关话题

今年是不平凡的一年,没错,就是因为疫情,因为疫情原因 ,大家只能呆着家里,严重影响了我们正常的学习 生活 工作,在这种情况下,只能在家办公,这时候大家就会想到线上视频会议,目前很多互联网公司有这个产品,比较出名的就比如 腾讯会议 钉钉 zoom等,用这些是很方便,但是如果能开发自己的视频会议,那会不会更好或者是更有成就感,下面简单介绍这个这个项目,和大概的开发过程。本项目基于环信音视频云来完成,实现的主要功能有:
  创建会议、删除会议、获取指定会议室详情、加入会议室、退出会议室等关于会议的管理 ;  获取会议室参会人名列表、踢人,设置观众为主播,设置主播为观众等关于会议室的人员管理;  共享桌面(web端);
 三个端的实现:Android,iOS,Web

上面这些功能在项目中都已经实现。还有水印 ,变声等高级功能在环信音视频SDK的接口内部都已经封装好,本项目没有实现 ,大家可以自行去实现。有关多人音视频功能更详细的介绍大家可以参考:这儿。多人音视频实现的实现主要有以下一些场景:社交交友,远程心理咨询、远程医疗、一对一在线教育、远程视频辅助等。咳咳 ,接下来就是纯干货了,给大家介绍我是如何一步步开发出一个完整的多人音视频app。
 
项目截图
 
首先给大家展示下项目运行的效果图,会议界面 主窗口是一个大的 RelativeLayout ,最下面的那一排排小窗口是的实现方法是HorizontalScrollView加上一个开源的组件 com.jaouan.compoundlayout.RadioLayoutGroup 实现的,点击下面的小窗口后,可以 把小窗口的视频流显示在大屏上,具体是调用 updateRemoteSurfaceView(String streamId, EMCallSurfaceView remoteView)来更新SurfaceView,具体的细节大家可以看看代码里面的实现 最后会公布代码开源地址。
















准备工作
    大家得下载安装Android Studio,配置好Android 开发环境,怎么详细配置我就在这不再细说了 网上有很多的教程,大家自己可以找找看,然后大家可以看看环信多人音视频会议的主要功能和一些基本概念介绍。
集成 
  1. 首先大家会想问怎么调用环信的SDK ,大家可以使用 远程依赖SDK包,建议大家用最新版本的远程依赖:
     com.hyphenate:hyphenate-sdk:3.6.6 ,依赖包可以放在 build.gradle里面的 dependencies 选项下面,如下图所示





2.其次怎么使用环信的appkey ,可以在环信音视频云后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到AndroidManifest.xml中 ,如下图所示:






3.经过以上两个重要的前期配置准备 ,接下来我们就可以开始进行代码开发了,首先我们先创建一个项目的DemoApplication类和      DemoHelper类,DemoApplication 类和DemoHelper类都是一个单例类 ,DemoApplication 主要功能就是进行DemoHelper 的初始化,而DemoHelper里面主要是主要有一些option 配置和EMClient 进行初始化,代码如下所示:public void init(Context context) {
EMOptions options = initChatOptions(context);
EMClient.getInstance().init(context, options);
PreferenceManager.init(context);
}
  DemoHelper还有一个重要的功能就是设置  EMConferenceListener 进行会议监听,有关 EMConferenceListener的类的详细介绍 ,通过这个监听可以再加入会议的时候获取到已经在会议中的流和主播信息,分别是通过其中以下两个回调获取:@Override
public void onMemberJoined(EMConferenceMember member){

}

@Override
public void onStreamAdded(EMConferenceStream stream){

}
4.DemoApplication类完成以后,接下来就是怎么去登陆 环信IM 账号和 创建加入会议房间了,首次安装的时候都没有账号,我们使用的办法是自动注册一个账号 在本地进行保存,然后进行登录 ,注册 登录详细接口请看 这儿,  注册 登录的调用大概如下所示: 
 try {
        //注册一个环信ID
        EMClient.getInstance().createAccount(username, password);
            
        //注册成功进行登录
        PreferenceManager.getInstance().setCurrentUserName(username);
        PreferenceManager.getInstance().setCurrentuserPassword(password);
        login();
    } catch (final HyphenateException e) {
       runOnUiThread(new Runnable() {
               public void run() {
                  int errorCode=e.getErrorCode();
                   if(errorCode==EMError.NETWORK_ERROR){
                    Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
      }
   }   
}
 
  public void login() {
 
        //登录已经注册成功的环信ID
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "login: onSuccess");
                //登录成功进入会议房间
                joinRoom();
            }
            @Override
            public void onProgress(int progress, String status) {
                Log.d(TAG, "login: onProgress");
            }
            @Override
            public void onError(final int code, final String message) {
                Log.d(TAG, "login: onError: " + code);
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message,Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
登录完成以后,我们可以根据房间名创建并加入房间,主要代码大概如下: EMClient.getInstance().conferenceManager().joinRoom(currentRoomname, currentPassword, conferenceRole,roomConfig, new EMValueCallBack<EMConference>(){
@Override
public void onSuccess(EMConference value) {
EMLog.i(TAG, "join conference success");
Intent intent = new Intent(MainActivity.this, ConferenceActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(final int error, final String errorMsg) {
EMLog.e(TAG, "join conference failed error " + error + ", msg " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
setBtnEnable(true);
if(error == CALL_TALKER_ISFULL) {
takerFullDialogDisplay();
}else{
Toast.makeText(getApplicationContext(), "Join conference failed " + error + " " + errorMsg, Toast.LENGTH_SHORT).show();
}
}
});
}
});
EMClient.getInstance().conferenceManager().joinRoom() API可以根据房间名创建指定会议,当以该房间名命名的会议不存在时候,会直接创建,当会议已经创建好 可以根据正确的房间名和密码加入房间 ,到这一步为止,我们已经成功的创建 并加入会议。
5.加入会议以后我们进入到会议界面,展示从DemoHelper类 EMConferenceListener 中的 onStreamAdded 回调 和 onMemberJoined 获取到的流和主播列表 ,在ConferenceActivity 中实现 EMConferenceListener ,然后直接把 ConferenceActivity 注册监听,用以下方法  EMClient.getInstance().conferenceManager().addConferenceListener(this); 这样就可实现 EMConferenceListener 事件的处理,比如
 主播 进出房间 :
public void onMemberJoined(final EMConferenceMember member);
public void onMemberExited(final EMConferenceMember member);

增加流 移除流:
public void onStreamAdded(final EMConferenceStream stream)
 public void onStreamRemoved(final EMConferenceStream stream)

管理员变更: 
public void onAdminAdded(String streamId) ;  
public void onAdminRemoved(String streamId)

角色变更  用户被踢  谁在说话等各种回调,可以处理各种业务逻辑 ,详细的请参考 项目中的实现 ,最后会附上项目的开源地址。

6 进入会议房间以后如果用户角色为主播可以进行发布视频流 ,观众只能订阅视频流 不能发布视频流 ,可以调用SDK的publish接口发布流,该接口用到了EMStreamParam参数,你可以自由配置,比如是否上传视频,是否上传音频,使用前置或后置摄像头,视频码率,显示视频页面等等,具体实现可以参考 中发布 订阅视频流的内容, 关于以上的代码逻辑如以 如以下: //发布视频流
normalParam = new EMStreamParam();
normalParam.setStreamType(EMConferenceStream.StreamType.NORMAL);
normalParam.setVideoOff(true);
normalParam.setAudioOff(true);

EMClient.getInstance().conferenceManager().publish(normalParam, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
conference.setPubStreamId(value, EMConferenceStream.StreamType.NORMAL);
addOrUpdateStreamList("local-stream", value);

PhoneStateManager.get(ConferenceActivity.this).addStateCallback(phoneStateCallback);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "publish failed: error=" + error + ", msg=" + errorMsg);
}
});
//订阅其他主播的视频流
private void subscribe(EMConferenceStream stream, EMCallSurfaceView surfaceView) {
EMClient.getInstance().conferenceManager().subscribe(stream, surfaceView, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}

@Override
public void onError(int error, String errorMsg) {

}
});
}
7.有关上麦 下麦 的逻辑处理,观众可以请求上麦成为主播,主播可以下麦成为观众,上麦 下麦 是利用 EMConferenceAttribute进行处理 ,EMConferenceAttribute  是一个事件广播,广播事件是一个key-value格式,key-value 可以由开发者进行自行定义,增添事件以后 ,服务器会把事件进行广播。会议中成员会收到 onAttributesUpdated回调。例如本项目中的会议上麦 下麦 代码如下所示://上麦申请

EMClient.getInstance().conferenceManager().setConferenceAttribute(
EMClient.getInstance().getCurrentUser(),
"request_tobe_speaker",
new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_speaker scuessed");

}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_speaker failed: error=" + error

}
});

//下麦申请
EMClient.getInstance().conferenceManager().setConferenceAttribute(EMClient.getInstance().getCurrentUser()
, "request_tobe_audience", new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_audience scuessed");
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_audience failed: error=" + error + ", msg=" + errorMsg);
}
});
 上麦 下麦 请求发出以后 只能由主持人去处理,处理在 EMConferenceListener  的回调 onAttributesUpdated(EMConferenceAttribute attributes) 去处理 ,收到回调以后 解析attributes 然后进行处理请求,处理的过程代码大概如下: EMClient.getInstance().conferenceManager().grantRole(conference.getConferenceId()
, new EMConferenceMember(memName, null, null,null)
, EMConferenceManager.EMConferenceRole.Talker, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole success, result: " + value);
dialog.dismiss();
}
@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole failed, error: " + error + " - " + errorMsg);

}
});
下麦也是和上麦一样是利用 EMConferenceAttribute进行处理。

9.有关退出会议 销毁会议 普通主播  观众只能退出会议 ,主持人还可以 销毁会议 正在进行中的会议可以进行销毁,退出会议 销毁会议 具体代码如下: EMClient.getInstance().conferenceManager().exitConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功退出当前会议!", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "exit conference failed " + error + ", " + errorMsg);
}
});

EMClient.getInstance().conferenceManager().destroyConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功销毁当前会议!", Toast.LENGTH_SHORT).show();
}
});
EMLog.i(TAG, "finish ConferenceActivity");
finish();
}

尾语
至此 整个 多人音视频会议开发的详细步骤 已经完成 ,虽然比较麻烦 但是每个步骤都很清晰 ,有不太清楚的欢迎大家积极讨论, 附上本项目的github地址:https://github.com/easemob/videocall-android  欢迎大家积极参与 ,谢谢支持。
Demo下载 二维码如下 欢迎大家体验(iOS版和web版下载地址请见:https://www.easemob.com/download/rtc)






  查看全部
今年是不平凡的一年,没错,就是因为疫情,因为疫情原因 ,大家只能呆着家里,严重影响了我们正常的学习 生活 工作,在这种情况下,只能在家办公,这时候大家就会想到线上视频会议,目前很多互联网公司有这个产品,比较出名的就比如 腾讯会议 钉钉 zoom等,用这些是很方便,但是如果能开发自己的视频会议,那会不会更好或者是更有成就感,下面简单介绍这个这个项目,和大概的开发过程。本项目基于环信音视频云来完成,实现的主要功能有:
  •   创建会议、删除会议、获取指定会议室详情、加入会议室、退出会议室等关于会议的管理 ;
  •   获取会议室参会人名列表、踢人,设置观众为主播,设置主播为观众等关于会议室的人员管理;
  •   共享桌面(web端);

 三个端的实现:Android,iOS,Web

上面这些功能在项目中都已经实现。还有水印 ,变声等高级功能在环信音视频SDK的接口内部都已经封装好,本项目没有实现 ,大家可以自行去实现。有关多人音视频功能更详细的介绍大家可以参考:这儿。多人音视频实现的实现主要有以下一些场景:社交交友,远程心理咨询、远程医疗、一对一在线教育、远程视频辅助等。咳咳 ,接下来就是纯干货了,给大家介绍我是如何一步步开发出一个完整的多人音视频app。
 
项目截图
 
首先给大家展示下项目运行的效果图,会议界面 主窗口是一个大的 RelativeLayout ,最下面的那一排排小窗口是的实现方法是HorizontalScrollView加上一个开源的组件 com.jaouan.compoundlayout.RadioLayoutGroup 实现的,点击下面的小窗口后,可以 把小窗口的视频流显示在大屏上,具体是调用 updateRemoteSurfaceView(String streamId, EMCallSurfaceView remoteView)来更新SurfaceView,具体的细节大家可以看看代码里面的实现 最后会公布代码开源地址。

20200410140627956.jpg


20200410140855852.jpg


20200410141055394.jpg


准备工作
    大家得下载安装Android Studio,配置好Android 开发环境,怎么详细配置我就在这不再细说了 网上有很多的教程,大家自己可以找找看,然后大家可以看看环信多人音视频会议的主要功能和一些基本概念介绍。
集成 
  1. 首先大家会想问怎么调用环信的SDK ,大家可以使用 远程依赖SDK包,建议大家用最新版本的远程依赖:
     com.hyphenate:hyphenate-sdk:3.6.6 ,依赖包可以放在 build.gradle里面的 dependencies 选项下面,如下图所示
2020040917363212.png


2.其次怎么使用环信的appkey ,可以在环信音视频云后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到AndroidManifest.xml中 ,如下图所示:

20200409213959916.png


3.经过以上两个重要的前期配置准备 ,接下来我们就可以开始进行代码开发了,首先我们先创建一个项目的DemoApplication类和      DemoHelper类,DemoApplication 类和DemoHelper类都是一个单例类 ,DemoApplication 主要功能就是进行DemoHelper 的初始化,而DemoHelper里面主要是主要有一些option 配置和EMClient 进行初始化,代码如下所示:
public void init(Context context) {
EMOptions options = initChatOptions(context);
EMClient.getInstance().init(context, options);
PreferenceManager.init(context);
}

  DemoHelper还有一个重要的功能就是设置  EMConferenceListener 进行会议监听,有关 EMConferenceListener的类的详细介绍 ,通过这个监听可以再加入会议的时候获取到已经在会议中的流和主播信息,分别是通过其中以下两个回调获取:
@Override 
public void onMemberJoined(EMConferenceMember member){

}

@Override
public void onStreamAdded(EMConferenceStream stream){

}

4.DemoApplication类完成以后,接下来就是怎么去登陆 环信IM 账号和 创建加入会议房间了,首次安装的时候都没有账号,我们使用的办法是自动注册一个账号 在本地进行保存,然后进行登录 ,注册 登录详细接口请看 这儿,  注册 登录的调用大概如下所示: 
 try {
        //注册一个环信ID
        EMClient.getInstance().createAccount(username, password);
            
        //注册成功进行登录
        PreferenceManager.getInstance().setCurrentUserName(username);
        PreferenceManager.getInstance().setCurrentuserPassword(password);
        login();
    } catch (final HyphenateException e) {
       runOnUiThread(new Runnable() {
               public void run() {
                  int errorCode=e.getErrorCode();
                   if(errorCode==EMError.NETWORK_ERROR){
                    Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
      }
   }   
}
 
  public void login() {
 
        //登录已经注册成功的环信ID
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "login: onSuccess");
                //登录成功进入会议房间
                joinRoom();
            }
            @Override
            public void onProgress(int progress, String status) {
                Log.d(TAG, "login: onProgress");
            }
            @Override
            public void onError(final int code, final String message) {
                Log.d(TAG, "login: onError: " + code);
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message,Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
登录完成以后,我们可以根据房间名创建并加入房间,主要代码大概如下:
 EMClient.getInstance().conferenceManager().joinRoom(currentRoomname, currentPassword, conferenceRole,roomConfig, new EMValueCallBack<EMConference>(){
@Override
public void onSuccess(EMConference value) {
EMLog.i(TAG, "join conference success");
Intent intent = new Intent(MainActivity.this, ConferenceActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(final int error, final String errorMsg) {
EMLog.e(TAG, "join conference failed error " + error + ", msg " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
setBtnEnable(true);
if(error == CALL_TALKER_ISFULL) {
takerFullDialogDisplay();
}else{
Toast.makeText(getApplicationContext(), "Join conference failed " + error + " " + errorMsg, Toast.LENGTH_SHORT).show();
}
}
});
}
});

EMClient.getInstance().conferenceManager().joinRoom() API可以根据房间名创建指定会议,当以该房间名命名的会议不存在时候,会直接创建,当会议已经创建好 可以根据正确的房间名和密码加入房间 ,到这一步为止,我们已经成功的创建 并加入会议。
5.加入会议以后我们进入到会议界面,展示从DemoHelper类 EMConferenceListener 中的 onStreamAdded 回调 和 onMemberJoined 获取到的流和主播列表 ,在ConferenceActivity 中实现 EMConferenceListener ,然后直接把 ConferenceActivity 注册监听,用以下方法  EMClient.getInstance().conferenceManager().addConferenceListener(this); 这样就可实现 EMConferenceListener 事件的处理,比如
 主播 进出房间 :
public void onMemberJoined(final EMConferenceMember member);
public void onMemberExited(final EMConferenceMember member);

增加流 移除流:
public void onStreamAdded(final EMConferenceStream stream)
 public void onStreamRemoved(final EMConferenceStream stream)

管理员变更: 
public void onAdminAdded(String streamId) ;  
public void onAdminRemoved(String streamId)

角色变更  用户被踢  谁在说话等各种回调,可以处理各种业务逻辑 ,详细的请参考 项目中的实现 ,最后会附上项目的开源地址。

6 进入会议房间以后如果用户角色为主播可以进行发布视频流 ,观众只能订阅视频流 不能发布视频流 ,可以调用SDK的publish接口发布流,该接口用到了EMStreamParam参数,你可以自由配置,比如是否上传视频,是否上传音频,使用前置或后置摄像头,视频码率,显示视频页面等等,具体实现可以参考 中发布 订阅视频流的内容, 关于以上的代码逻辑如以 如以下:
 //发布视频流
normalParam = new EMStreamParam();
normalParam.setStreamType(EMConferenceStream.StreamType.NORMAL);
normalParam.setVideoOff(true);
normalParam.setAudioOff(true);

EMClient.getInstance().conferenceManager().publish(normalParam, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
conference.setPubStreamId(value, EMConferenceStream.StreamType.NORMAL);
addOrUpdateStreamList("local-stream", value);

PhoneStateManager.get(ConferenceActivity.this).addStateCallback(phoneStateCallback);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "publish failed: error=" + error + ", msg=" + errorMsg);
}
});
//订阅其他主播的视频流
private void subscribe(EMConferenceStream stream, EMCallSurfaceView surfaceView) {
EMClient.getInstance().conferenceManager().subscribe(stream, surfaceView, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}

@Override
public void onError(int error, String errorMsg) {

}
});
}

7.有关上麦 下麦 的逻辑处理,观众可以请求上麦成为主播,主播可以下麦成为观众,上麦 下麦 是利用 EMConferenceAttribute进行处理 ,EMConferenceAttribute  是一个事件广播,广播事件是一个key-value格式,key-value 可以由开发者进行自行定义,增添事件以后 ,服务器会把事件进行广播。会议中成员会收到 onAttributesUpdated回调。例如本项目中的会议上麦 下麦 代码如下所示:
//上麦申请  

EMClient.getInstance().conferenceManager().setConferenceAttribute(
EMClient.getInstance().getCurrentUser(),
"request_tobe_speaker",
new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_speaker scuessed");

}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_speaker failed: error=" + error

}
});

//下麦申请
EMClient.getInstance().conferenceManager().setConferenceAttribute(EMClient.getInstance().getCurrentUser()
, "request_tobe_audience", new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_audience scuessed");
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_audience failed: error=" + error + ", msg=" + errorMsg);
}
});

 上麦 下麦 请求发出以后 只能由主持人去处理,处理在 EMConferenceListener  的回调 onAttributesUpdated(EMConferenceAttribute attributes) 去处理 ,收到回调以后 解析attributes 然后进行处理请求,处理的过程代码大概如下:
   EMClient.getInstance().conferenceManager().grantRole(conference.getConferenceId()
, new EMConferenceMember(memName, null, null,null)
, EMConferenceManager.EMConferenceRole.Talker, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole success, result: " + value);
dialog.dismiss();
}
@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole failed, error: " + error + " - " + errorMsg);

}
});

下麦也是和上麦一样是利用 EMConferenceAttribute进行处理。

9.有关退出会议 销毁会议 普通主播  观众只能退出会议 ,主持人还可以 销毁会议 正在进行中的会议可以进行销毁,退出会议 销毁会议 具体代码如下:
 EMClient.getInstance().conferenceManager().exitConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功退出当前会议!", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "exit conference failed " + error + ", " + errorMsg);
}
});

EMClient.getInstance().conferenceManager().destroyConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功销毁当前会议!", Toast.LENGTH_SHORT).show();
}
});
EMLog.i(TAG, "finish ConferenceActivity");
finish();
}

尾语
至此 整个 多人音视频会议开发的详细步骤 已经完成 ,虽然比较麻烦 但是每个步骤都很清晰 ,有不太清楚的欢迎大家积极讨论, 附上本项目的github地址:https://github.com/easemob/videocall-android  欢迎大家积极参与 ,谢谢支持。
Demo下载 二维码如下 欢迎大家体验(iOS版和web版下载地址请见:https://www.easemob.com/download/rtc)


20200410142228530.png

 
1
最佳

android移动客服怎么集成机器人,做过的大神指导下 移动客服 机器人 机器人

回复

Wxin 回复了问题 • 2 人关注 • 2594 次浏览 • 2017-01-21 19:03 • 来自相关话题

1
最佳

Android端无法展示机器人菜单列表消息 机器人 环信移动客服 环信_Android

回复

Wxin 回复了问题 • 2 人关注 • 3115 次浏览 • 2016-04-06 19:38 • 来自相关话题

3
回复

自己可以创建机器人吗 机器人 环信_iOS

回复

lifei9241 回复了问题 • 4 人关注 • 4730 次浏览 • 2015-09-11 10:01 • 来自相关话题

2
评论

基于环信sdk在uni-app框架中快速开发一款多平台社交Demo SDK uni_app 环信

beyond 发表了文章 • 547 次浏览 • 2020-05-11 11:34 • 来自相关话题

说在前面:此款 demo 是基于 环信sdk 开发的一款具有单聊、群聊、聊天室、音视频等功能的应用。在此之前我们已经开发完 Vue、react(web端)、微信小程序。这三个热门领域的版本,如有需要源码可以后台留言索取。





 
安装开发工具

我们选用微信小程序来用做示例(如果选择百度、支付宝安装对应开发者工具即可)、

微信开发者工具建议还是安装最新版的。uni-app的开发也必须安装HBuilderX工具,这个是捆绑的,没得选择。要用uni-app,你必须得装!

工具安装:

微信开发者工具

HBuilderX

项目demo介绍:






项目demo启动预览:





 
快速集成环信 sdk:

1、复制整个utils文件






如果你想具体了解主要配置文件 请看这个链接:

http://docs-im.easemob.com/im/web/intro/start

2、如何使用环信的appkey ,可以在环信 console 后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到配置文件中 ,如下图所示:






以上两个重要的配置准备完成之后就可以进行一系列的操作了(收发消息、好友申请、进群入群通知等)

在uni-app中 使用环信 sdk 实现添加、删除好友:

1、在全局 App.vue 文件 钩子函数 onLaunch() 中监听各种事件 (好友申请、收到各类消息等)如图:






发送好友请求:






在onPresence(message)事件中接收到好友消息申请:






同意好友请求:






拒绝好友请求:






实现收发消息:

1、给好友发送消息:






2、接收到消息:

在onTextMessage(message)事件中接收到好友消息,然后做消息上屏处理(具体消息上屏逻辑可看demo中代码示例):





以上展示的仅仅为基本业务场景,更多的业务逻辑详情请看demo示例。api具体详情可以查看 环信sdk 文档

最后结语:基于uni-app这个框架可实现多平台, 虽然目前一期集成环信sdk的版本仅支持微信小程序版本,但二期我们将加入头条、支付宝等小程序,敬请期待。PS:对于安卓、ios移动端,我们建议使用针对移动端开发的sdk版本。

基于uni-app的开发其中也趟了不少坑,在这里就不多赘述了。回归到框架的选型来讲,选用uni-app开发小程序,可同时并行多端小程序,这点是真香,一次开发多端发布。至于审核嘛~ 时快时慢。 查看全部
说在前面:此款 demo 是基于 环信sdk 开发的一款具有单聊、群聊、聊天室、音视频等功能的应用。在此之前我们已经开发完 Vue、react(web端)、微信小程序。这三个热门领域的版本,如有需要源码可以后台留言索取。

1.jpg

 
安装开发工具

我们选用微信小程序来用做示例(如果选择百度、支付宝安装对应开发者工具即可)、

微信开发者工具建议还是安装最新版的。uni-app的开发也必须安装HBuilderX工具,这个是捆绑的,没得选择。要用uni-app,你必须得装!

工具安装:

微信开发者工具

HBuilderX

项目demo介绍:

2.jpg


项目demo启动预览:

3.jpg

 
快速集成环信 sdk:

1、复制整个utils文件

4.jpg


如果你想具体了解主要配置文件 请看这个链接:

http://docs-im.easemob.com/im/web/intro/start

2、如何使用环信的appkey ,可以在环信 console 后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到配置文件中 ,如下图所示:

5.jpg


以上两个重要的配置准备完成之后就可以进行一系列的操作了(收发消息、好友申请、进群入群通知等)

在uni-app中 使用环信 sdk 实现添加、删除好友:

1、在全局 App.vue 文件 钩子函数 onLaunch() 中监听各种事件 (好友申请、收到各类消息等)如图:

6.jpg


发送好友请求:

7.jpg


在onPresence(message)事件中接收到好友消息申请:

8.jpg


同意好友请求:

9.jpg


拒绝好友请求:

10.jpg


实现收发消息:

1、给好友发送消息:

11.jpg


2、接收到消息:

在onTextMessage(message)事件中接收到好友消息,然后做消息上屏处理(具体消息上屏逻辑可看demo中代码示例):

12.jpg

以上展示的仅仅为基本业务场景,更多的业务逻辑详情请看demo示例。api具体详情可以查看 环信sdk 文档

最后结语:基于uni-app这个框架可实现多平台, 虽然目前一期集成环信sdk的版本仅支持微信小程序版本,但二期我们将加入头条、支付宝等小程序,敬请期待。PS:对于安卓、ios移动端,我们建议使用针对移动端开发的sdk版本。

基于uni-app的开发其中也趟了不少坑,在这里就不多赘述了。回归到框架的选型来讲,选用uni-app开发小程序,可同时并行多端小程序,这点是真香,一次开发多端发布。至于审核嘛~ 时快时慢。
1
评论

手把手教程:4小时开发一个视频会议APP【附开源代码】 环信 开源 视频会议

fat1 发表了文章 • 1047 次浏览 • 2020-04-17 00:29 • 来自相关话题

今年是不平凡的一年,没错,就是因为疫情,因为疫情原因 ,大家只能呆着家里,严重影响了我们正常的学习 生活 工作,在这种情况下,只能在家办公,这时候大家就会想到线上视频会议,目前很多互联网公司有这个产品,比较出名的就比如 腾讯会议 钉钉 zoom等,用这些是很方便,但是如果能开发自己的视频会议,那会不会更好或者是更有成就感,下面简单介绍这个这个项目,和大概的开发过程。本项目基于环信音视频云来完成,实现的主要功能有:
  创建会议、删除会议、获取指定会议室详情、加入会议室、退出会议室等关于会议的管理 ;  获取会议室参会人名列表、踢人,设置观众为主播,设置主播为观众等关于会议室的人员管理;  共享桌面(web端);
 三个端的实现:Android,iOS,Web

上面这些功能在项目中都已经实现。还有水印 ,变声等高级功能在环信音视频SDK的接口内部都已经封装好,本项目没有实现 ,大家可以自行去实现。有关多人音视频功能更详细的介绍大家可以参考:这儿。多人音视频实现的实现主要有以下一些场景:社交交友,远程心理咨询、远程医疗、一对一在线教育、远程视频辅助等。咳咳 ,接下来就是纯干货了,给大家介绍我是如何一步步开发出一个完整的多人音视频app。
 
项目截图
 
首先给大家展示下项目运行的效果图,会议界面 主窗口是一个大的 RelativeLayout ,最下面的那一排排小窗口是的实现方法是HorizontalScrollView加上一个开源的组件 com.jaouan.compoundlayout.RadioLayoutGroup 实现的,点击下面的小窗口后,可以 把小窗口的视频流显示在大屏上,具体是调用 updateRemoteSurfaceView(String streamId, EMCallSurfaceView remoteView)来更新SurfaceView,具体的细节大家可以看看代码里面的实现 最后会公布代码开源地址。
















准备工作
    大家得下载安装Android Studio,配置好Android 开发环境,怎么详细配置我就在这不再细说了 网上有很多的教程,大家自己可以找找看,然后大家可以看看环信多人音视频会议的主要功能和一些基本概念介绍。
集成 
  1. 首先大家会想问怎么调用环信的SDK ,大家可以使用 远程依赖SDK包,建议大家用最新版本的远程依赖:
     com.hyphenate:hyphenate-sdk:3.6.6 ,依赖包可以放在 build.gradle里面的 dependencies 选项下面,如下图所示





2.其次怎么使用环信的appkey ,可以在环信音视频云后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到AndroidManifest.xml中 ,如下图所示:






3.经过以上两个重要的前期配置准备 ,接下来我们就可以开始进行代码开发了,首先我们先创建一个项目的DemoApplication类和      DemoHelper类,DemoApplication 类和DemoHelper类都是一个单例类 ,DemoApplication 主要功能就是进行DemoHelper 的初始化,而DemoHelper里面主要是主要有一些option 配置和EMClient 进行初始化,代码如下所示:public void init(Context context) {
EMOptions options = initChatOptions(context);
EMClient.getInstance().init(context, options);
PreferenceManager.init(context);
}
  DemoHelper还有一个重要的功能就是设置  EMConferenceListener 进行会议监听,有关 EMConferenceListener的类的详细介绍 ,通过这个监听可以再加入会议的时候获取到已经在会议中的流和主播信息,分别是通过其中以下两个回调获取:@Override
public void onMemberJoined(EMConferenceMember member){

}

@Override
public void onStreamAdded(EMConferenceStream stream){

}
4.DemoApplication类完成以后,接下来就是怎么去登陆 环信IM 账号和 创建加入会议房间了,首次安装的时候都没有账号,我们使用的办法是自动注册一个账号 在本地进行保存,然后进行登录 ,注册 登录详细接口请看 这儿,  注册 登录的调用大概如下所示: 
 try {
        //注册一个环信ID
        EMClient.getInstance().createAccount(username, password);
            
        //注册成功进行登录
        PreferenceManager.getInstance().setCurrentUserName(username);
        PreferenceManager.getInstance().setCurrentuserPassword(password);
        login();
    } catch (final HyphenateException e) {
       runOnUiThread(new Runnable() {
               public void run() {
                  int errorCode=e.getErrorCode();
                   if(errorCode==EMError.NETWORK_ERROR){
                    Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
      }
   }   
}
 
  public void login() {
 
        //登录已经注册成功的环信ID
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "login: onSuccess");
                //登录成功进入会议房间
                joinRoom();
            }
            @Override
            public void onProgress(int progress, String status) {
                Log.d(TAG, "login: onProgress");
            }
            @Override
            public void onError(final int code, final String message) {
                Log.d(TAG, "login: onError: " + code);
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message,Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
登录完成以后,我们可以根据房间名创建并加入房间,主要代码大概如下: EMClient.getInstance().conferenceManager().joinRoom(currentRoomname, currentPassword, conferenceRole,roomConfig, new EMValueCallBack<EMConference>(){
@Override
public void onSuccess(EMConference value) {
EMLog.i(TAG, "join conference success");
Intent intent = new Intent(MainActivity.this, ConferenceActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(final int error, final String errorMsg) {
EMLog.e(TAG, "join conference failed error " + error + ", msg " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
setBtnEnable(true);
if(error == CALL_TALKER_ISFULL) {
takerFullDialogDisplay();
}else{
Toast.makeText(getApplicationContext(), "Join conference failed " + error + " " + errorMsg, Toast.LENGTH_SHORT).show();
}
}
});
}
});
EMClient.getInstance().conferenceManager().joinRoom() API可以根据房间名创建指定会议,当以该房间名命名的会议不存在时候,会直接创建,当会议已经创建好 可以根据正确的房间名和密码加入房间 ,到这一步为止,我们已经成功的创建 并加入会议。
5.加入会议以后我们进入到会议界面,展示从DemoHelper类 EMConferenceListener 中的 onStreamAdded 回调 和 onMemberJoined 获取到的流和主播列表 ,在ConferenceActivity 中实现 EMConferenceListener ,然后直接把 ConferenceActivity 注册监听,用以下方法  EMClient.getInstance().conferenceManager().addConferenceListener(this); 这样就可实现 EMConferenceListener 事件的处理,比如
 主播 进出房间 :
public void onMemberJoined(final EMConferenceMember member);
public void onMemberExited(final EMConferenceMember member);

增加流 移除流:
public void onStreamAdded(final EMConferenceStream stream)
 public void onStreamRemoved(final EMConferenceStream stream)

管理员变更: 
public void onAdminAdded(String streamId) ;  
public void onAdminRemoved(String streamId)

角色变更  用户被踢  谁在说话等各种回调,可以处理各种业务逻辑 ,详细的请参考 项目中的实现 ,最后会附上项目的开源地址。

6 进入会议房间以后如果用户角色为主播可以进行发布视频流 ,观众只能订阅视频流 不能发布视频流 ,可以调用SDK的publish接口发布流,该接口用到了EMStreamParam参数,你可以自由配置,比如是否上传视频,是否上传音频,使用前置或后置摄像头,视频码率,显示视频页面等等,具体实现可以参考 中发布 订阅视频流的内容, 关于以上的代码逻辑如以 如以下: //发布视频流
normalParam = new EMStreamParam();
normalParam.setStreamType(EMConferenceStream.StreamType.NORMAL);
normalParam.setVideoOff(true);
normalParam.setAudioOff(true);

EMClient.getInstance().conferenceManager().publish(normalParam, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
conference.setPubStreamId(value, EMConferenceStream.StreamType.NORMAL);
addOrUpdateStreamList("local-stream", value);

PhoneStateManager.get(ConferenceActivity.this).addStateCallback(phoneStateCallback);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "publish failed: error=" + error + ", msg=" + errorMsg);
}
});
//订阅其他主播的视频流
private void subscribe(EMConferenceStream stream, EMCallSurfaceView surfaceView) {
EMClient.getInstance().conferenceManager().subscribe(stream, surfaceView, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}

@Override
public void onError(int error, String errorMsg) {

}
});
}
7.有关上麦 下麦 的逻辑处理,观众可以请求上麦成为主播,主播可以下麦成为观众,上麦 下麦 是利用 EMConferenceAttribute进行处理 ,EMConferenceAttribute  是一个事件广播,广播事件是一个key-value格式,key-value 可以由开发者进行自行定义,增添事件以后 ,服务器会把事件进行广播。会议中成员会收到 onAttributesUpdated回调。例如本项目中的会议上麦 下麦 代码如下所示://上麦申请

EMClient.getInstance().conferenceManager().setConferenceAttribute(
EMClient.getInstance().getCurrentUser(),
"request_tobe_speaker",
new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_speaker scuessed");

}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_speaker failed: error=" + error

}
});

//下麦申请
EMClient.getInstance().conferenceManager().setConferenceAttribute(EMClient.getInstance().getCurrentUser()
, "request_tobe_audience", new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_audience scuessed");
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_audience failed: error=" + error + ", msg=" + errorMsg);
}
});
 上麦 下麦 请求发出以后 只能由主持人去处理,处理在 EMConferenceListener  的回调 onAttributesUpdated(EMConferenceAttribute attributes) 去处理 ,收到回调以后 解析attributes 然后进行处理请求,处理的过程代码大概如下: EMClient.getInstance().conferenceManager().grantRole(conference.getConferenceId()
, new EMConferenceMember(memName, null, null,null)
, EMConferenceManager.EMConferenceRole.Talker, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole success, result: " + value);
dialog.dismiss();
}
@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole failed, error: " + error + " - " + errorMsg);

}
});
下麦也是和上麦一样是利用 EMConferenceAttribute进行处理。

9.有关退出会议 销毁会议 普通主播  观众只能退出会议 ,主持人还可以 销毁会议 正在进行中的会议可以进行销毁,退出会议 销毁会议 具体代码如下: EMClient.getInstance().conferenceManager().exitConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功退出当前会议!", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "exit conference failed " + error + ", " + errorMsg);
}
});

EMClient.getInstance().conferenceManager().destroyConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功销毁当前会议!", Toast.LENGTH_SHORT).show();
}
});
EMLog.i(TAG, "finish ConferenceActivity");
finish();
}

尾语
至此 整个 多人音视频会议开发的详细步骤 已经完成 ,虽然比较麻烦 但是每个步骤都很清晰 ,有不太清楚的欢迎大家积极讨论, 附上本项目的github地址:https://github.com/easemob/videocall-android  欢迎大家积极参与 ,谢谢支持。
Demo下载 二维码如下 欢迎大家体验(iOS版和web版下载地址请见:https://www.easemob.com/download/rtc)






  查看全部
今年是不平凡的一年,没错,就是因为疫情,因为疫情原因 ,大家只能呆着家里,严重影响了我们正常的学习 生活 工作,在这种情况下,只能在家办公,这时候大家就会想到线上视频会议,目前很多互联网公司有这个产品,比较出名的就比如 腾讯会议 钉钉 zoom等,用这些是很方便,但是如果能开发自己的视频会议,那会不会更好或者是更有成就感,下面简单介绍这个这个项目,和大概的开发过程。本项目基于环信音视频云来完成,实现的主要功能有:
  •   创建会议、删除会议、获取指定会议室详情、加入会议室、退出会议室等关于会议的管理 ;
  •   获取会议室参会人名列表、踢人,设置观众为主播,设置主播为观众等关于会议室的人员管理;
  •   共享桌面(web端);

 三个端的实现:Android,iOS,Web

上面这些功能在项目中都已经实现。还有水印 ,变声等高级功能在环信音视频SDK的接口内部都已经封装好,本项目没有实现 ,大家可以自行去实现。有关多人音视频功能更详细的介绍大家可以参考:这儿。多人音视频实现的实现主要有以下一些场景:社交交友,远程心理咨询、远程医疗、一对一在线教育、远程视频辅助等。咳咳 ,接下来就是纯干货了,给大家介绍我是如何一步步开发出一个完整的多人音视频app。
 
项目截图
 
首先给大家展示下项目运行的效果图,会议界面 主窗口是一个大的 RelativeLayout ,最下面的那一排排小窗口是的实现方法是HorizontalScrollView加上一个开源的组件 com.jaouan.compoundlayout.RadioLayoutGroup 实现的,点击下面的小窗口后,可以 把小窗口的视频流显示在大屏上,具体是调用 updateRemoteSurfaceView(String streamId, EMCallSurfaceView remoteView)来更新SurfaceView,具体的细节大家可以看看代码里面的实现 最后会公布代码开源地址。

20200410140627956.jpg


20200410140855852.jpg


20200410141055394.jpg


准备工作
    大家得下载安装Android Studio,配置好Android 开发环境,怎么详细配置我就在这不再细说了 网上有很多的教程,大家自己可以找找看,然后大家可以看看环信多人音视频会议的主要功能和一些基本概念介绍。
集成 
  1. 首先大家会想问怎么调用环信的SDK ,大家可以使用 远程依赖SDK包,建议大家用最新版本的远程依赖:
     com.hyphenate:hyphenate-sdk:3.6.6 ,依赖包可以放在 build.gradle里面的 dependencies 选项下面,如下图所示
2020040917363212.png


2.其次怎么使用环信的appkey ,可以在环信音视频云后台注册一个 账号申请appkey ,可以参考这里 ,获取到  appkey 以后添加到AndroidManifest.xml中 ,如下图所示:

20200409213959916.png


3.经过以上两个重要的前期配置准备 ,接下来我们就可以开始进行代码开发了,首先我们先创建一个项目的DemoApplication类和      DemoHelper类,DemoApplication 类和DemoHelper类都是一个单例类 ,DemoApplication 主要功能就是进行DemoHelper 的初始化,而DemoHelper里面主要是主要有一些option 配置和EMClient 进行初始化,代码如下所示:
public void init(Context context) {
EMOptions options = initChatOptions(context);
EMClient.getInstance().init(context, options);
PreferenceManager.init(context);
}

  DemoHelper还有一个重要的功能就是设置  EMConferenceListener 进行会议监听,有关 EMConferenceListener的类的详细介绍 ,通过这个监听可以再加入会议的时候获取到已经在会议中的流和主播信息,分别是通过其中以下两个回调获取:
@Override 
public void onMemberJoined(EMConferenceMember member){

}

@Override
public void onStreamAdded(EMConferenceStream stream){

}

4.DemoApplication类完成以后,接下来就是怎么去登陆 环信IM 账号和 创建加入会议房间了,首次安装的时候都没有账号,我们使用的办法是自动注册一个账号 在本地进行保存,然后进行登录 ,注册 登录详细接口请看 这儿,  注册 登录的调用大概如下所示: 
 try {
        //注册一个环信ID
        EMClient.getInstance().createAccount(username, password);
            
        //注册成功进行登录
        PreferenceManager.getInstance().setCurrentUserName(username);
        PreferenceManager.getInstance().setCurrentuserPassword(password);
        login();
    } catch (final HyphenateException e) {
       runOnUiThread(new Runnable() {
               public void run() {
                  int errorCode=e.getErrorCode();
                   if(errorCode==EMError.NETWORK_ERROR){
                    Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
      }
   }   
}
 
  public void login() {
 
        //登录已经注册成功的环信ID
        EMClient.getInstance().login(username, password, new EMCallBack() {
            @Override
            public void onSuccess() {
                Log.d(TAG, "login: onSuccess");
                //登录成功进入会议房间
                joinRoom();
            }
            @Override
            public void onProgress(int progress, String status) {
                Log.d(TAG, "login: onProgress");
            }
            @Override
            public void onError(final int code, final String message) {
                Log.d(TAG, "login: onError: " + code);
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message,Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
登录完成以后,我们可以根据房间名创建并加入房间,主要代码大概如下:
 EMClient.getInstance().conferenceManager().joinRoom(currentRoomname, currentPassword, conferenceRole,roomConfig, new EMValueCallBack<EMConference>(){
@Override
public void onSuccess(EMConference value) {
EMLog.i(TAG, "join conference success");
Intent intent = new Intent(MainActivity.this, ConferenceActivity.class);
startActivity(intent);
finish();
}
@Override
public void onError(final int error, final String errorMsg) {
EMLog.e(TAG, "join conference failed error " + error + ", msg " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
setBtnEnable(true);
if(error == CALL_TALKER_ISFULL) {
takerFullDialogDisplay();
}else{
Toast.makeText(getApplicationContext(), "Join conference failed " + error + " " + errorMsg, Toast.LENGTH_SHORT).show();
}
}
});
}
});

EMClient.getInstance().conferenceManager().joinRoom() API可以根据房间名创建指定会议,当以该房间名命名的会议不存在时候,会直接创建,当会议已经创建好 可以根据正确的房间名和密码加入房间 ,到这一步为止,我们已经成功的创建 并加入会议。
5.加入会议以后我们进入到会议界面,展示从DemoHelper类 EMConferenceListener 中的 onStreamAdded 回调 和 onMemberJoined 获取到的流和主播列表 ,在ConferenceActivity 中实现 EMConferenceListener ,然后直接把 ConferenceActivity 注册监听,用以下方法  EMClient.getInstance().conferenceManager().addConferenceListener(this); 这样就可实现 EMConferenceListener 事件的处理,比如
 主播 进出房间 :
public void onMemberJoined(final EMConferenceMember member);
public void onMemberExited(final EMConferenceMember member);

增加流 移除流:
public void onStreamAdded(final EMConferenceStream stream)
 public void onStreamRemoved(final EMConferenceStream stream)

管理员变更: 
public void onAdminAdded(String streamId) ;  
public void onAdminRemoved(String streamId)

角色变更  用户被踢  谁在说话等各种回调,可以处理各种业务逻辑 ,详细的请参考 项目中的实现 ,最后会附上项目的开源地址。

6 进入会议房间以后如果用户角色为主播可以进行发布视频流 ,观众只能订阅视频流 不能发布视频流 ,可以调用SDK的publish接口发布流,该接口用到了EMStreamParam参数,你可以自由配置,比如是否上传视频,是否上传音频,使用前置或后置摄像头,视频码率,显示视频页面等等,具体实现可以参考 中发布 订阅视频流的内容, 关于以上的代码逻辑如以 如以下:
 //发布视频流
normalParam = new EMStreamParam();
normalParam.setStreamType(EMConferenceStream.StreamType.NORMAL);
normalParam.setVideoOff(true);
normalParam.setAudioOff(true);

EMClient.getInstance().conferenceManager().publish(normalParam, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
conference.setPubStreamId(value, EMConferenceStream.StreamType.NORMAL);
addOrUpdateStreamList("local-stream", value);

PhoneStateManager.get(ConferenceActivity.this).addStateCallback(phoneStateCallback);
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "publish failed: error=" + error + ", msg=" + errorMsg);
}
});
//订阅其他主播的视频流
private void subscribe(EMConferenceStream stream, EMCallSurfaceView surfaceView) {
EMClient.getInstance().conferenceManager().subscribe(stream, surfaceView, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
}

@Override
public void onError(int error, String errorMsg) {

}
});
}

7.有关上麦 下麦 的逻辑处理,观众可以请求上麦成为主播,主播可以下麦成为观众,上麦 下麦 是利用 EMConferenceAttribute进行处理 ,EMConferenceAttribute  是一个事件广播,广播事件是一个key-value格式,key-value 可以由开发者进行自行定义,增添事件以后 ,服务器会把事件进行广播。会议中成员会收到 onAttributesUpdated回调。例如本项目中的会议上麦 下麦 代码如下所示:
//上麦申请  

EMClient.getInstance().conferenceManager().setConferenceAttribute(
EMClient.getInstance().getCurrentUser(),
"request_tobe_speaker",
new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_speaker scuessed");

}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_speaker failed: error=" + error

}
});

//下麦申请
EMClient.getInstance().conferenceManager().setConferenceAttribute(EMClient.getInstance().getCurrentUser()
, "request_tobe_audience", new EMValueCallBack<Void>() {
@Override
public void onSuccess(Void value) {
EMLog.i(TAG, "request_tobe_audience scuessed");
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "request_tobe_audience failed: error=" + error + ", msg=" + errorMsg);
}
});

 上麦 下麦 请求发出以后 只能由主持人去处理,处理在 EMConferenceListener  的回调 onAttributesUpdated(EMConferenceAttribute attributes) 去处理 ,收到回调以后 解析attributes 然后进行处理请求,处理的过程代码大概如下:
   EMClient.getInstance().conferenceManager().grantRole(conference.getConferenceId()
, new EMConferenceMember(memName, null, null,null)
, EMConferenceManager.EMConferenceRole.Talker, new EMValueCallBack<String>() {
@Override
public void onSuccess(String value) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole success, result: " + value);
dialog.dismiss();
}
@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, " requestTalkerDisplay request_tobe_speaker changeRole failed, error: " + error + " - " + errorMsg);

}
});

下麦也是和上麦一样是利用 EMConferenceAttribute进行处理。

9.有关退出会议 销毁会议 普通主播  观众只能退出会议 ,主持人还可以 销毁会议 正在进行中的会议可以进行销毁,退出会议 销毁会议 具体代码如下:
 EMClient.getInstance().conferenceManager().exitConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功退出当前会议!", Toast.LENGTH_SHORT).show();
}
});
}

@Override
public void onError(int error, String errorMsg) {
EMLog.i(TAG, "exit conference failed " + error + ", " + errorMsg);
}
});

EMClient.getInstance().conferenceManager().destroyConference(new EMValueCallBack() {
@Override
public void onSuccess(Object value) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "您已成功销毁当前会议!", Toast.LENGTH_SHORT).show();
}
});
EMLog.i(TAG, "finish ConferenceActivity");
finish();
}

尾语
至此 整个 多人音视频会议开发的详细步骤 已经完成 ,虽然比较麻烦 但是每个步骤都很清晰 ,有不太清楚的欢迎大家积极讨论, 附上本项目的github地址:https://github.com/easemob/videocall-android  欢迎大家积极参与 ,谢谢支持。
Demo下载 二维码如下 欢迎大家体验(iOS版和web版下载地址请见:https://www.easemob.com/download/rtc)


20200410142228530.png

 
0
评论

【公开课预告】如何更好的使用环信机器人 机器人 环信

beyond 发表了文章 • 230 次浏览 • 2020-05-12 10:19 • 来自相关话题

时间:2020年5月15日下午15:00
时长:半小时
课程主题:如何更好的使用环信机器人
主讲人:环信AI训练师 赵星星
               
课程介绍:
1.培训对象:环信机器人运营人员。已掌握最基本的机器人操作能力,希望进一步提升机器人的使用效果,让机器人为企业创造更大价值
 
2.难度级别:中级
 3.培训要达成的目标:
A.机器人平台日常使用技能的查缺补漏及部分高级技能
B.成为创建及维护机器人知识库的专家
C.理解机器人的关键运营指标
D.知识库调优
 4.培训大纲:
A.如何快速启动环信机器人:机器人平台日常使用技能的查缺补漏及部分高级技能
B.学会搭建完善的知识库
C.懂得知识运营六大关键指标体系
D.监控日常运营的那些数据-数据管理
E.怎么调优知识库-服务优化
 
参考网址:http://docs-ai.easemob.com/cs/start 
 点击链接直接加入会议:
https://meeting.tencent.com/s/51uTAmIf21b2 
会议 ID:979 281 483
 手机一键拨号入会
+8675536550000,,979281483# (中国大陆)
+85230018898,,,2,979281483# (中国香港)
根据您的位置拨号
+8675536550000 (中国大陆)
+85230018898 (中国香港)
  查看全部

时间:2020年5月15日下午15:00
时长:半小时
课程主题:如何更好的使用环信机器人
主讲人:环信AI训练师 赵星星
               
课程介绍:
1.培训对象:环信机器人运营人员。已掌握最基本的机器人操作能力,希望进一步提升机器人的使用效果,让机器人为企业创造更大价值
 
2.难度级别:中级
 3.培训要达成的目标:
A.机器人平台日常使用技能的查缺补漏及部分高级技能
B.成为创建及维护机器人知识库的专家
C.理解机器人的关键运营指标
D.知识库调优
 4.培训大纲:
A.如何快速启动环信机器人:机器人平台日常使用技能的查缺补漏及部分高级技能
B.学会搭建完善的知识库
C.懂得知识运营六大关键指标体系
D.监控日常运营的那些数据-数据管理
E.怎么调优知识库-服务优化
 
参考网址:http://docs-ai.easemob.com/cs/start 
 点击链接直接加入会议:
https://meeting.tencent.com/s/51uTAmIf21b2 
会议 ID:979 281 483
 手机一键拨号入会
+8675536550000,,979281483# (中国大陆)
+85230018898,,,2,979281483# (中国香港)
根据您的位置拨号
+8675536550000 (中国大陆)
+85230018898 (中国香港)
 
0
评论

Freshdesk母公司收购Joe Hukum进军聊天机器人市场 客户服务 机器人

客服超人 发表了文章 • 1510 次浏览 • 2017-07-25 11:45 • 来自相关话题

译者按:相对于国外智能聊天机器人市场的方兴未艾,国内智能聊天机器人的落地势头更是一浪高过一浪,以环信为首的智能客服厂商提供的服务包括单轮会话、多轮会话以及人工协作已经广泛应用于包括保险、教育、金融、电商等行业,借助于AI技术在包括主动营销方面也有了更深入的探索。




   Freshworks(Freshdesk母公司)去年筹集5500万美元,用以建立超越现有帮助台服务。今天,Freshworks通过收购Joe Hukum来实现这一战略。Joe Hukum是一家印度创业公司,负责为企业提供建立自己的聊天机器人平台。

   虽有问询,但这些公司并没有透露任何交易条款。Joe Hukum, 之前为Speedy,最初侧重建立自己的个人助理或管理程序,帮助人们订购商品和服务,现转向为其他企业构建机器人服务平台。“Joe Hukum”是一种印地语的音译,意思是“按照你的意愿”。

   这是Freshworks在两年内的第八次收购,且在人工智能领域进行了一系列的收购,特别是“神经语言程序设计”(简称为“NLP”,注意不能与自然语言处理相混淆):另外两个收购是Chatimity和Frilp。Freshworks表示将利用三家创业公司的技术和人才,推出基于聊天机器人的解决方案。

   具体而言,Joe Hukum已经建立了知识树编码用以自动化销售、服务和支持工作流程。所以由联合创始人Arihant Jain,Ajeet Kushwaha和Rahul Agarwal领导的创业团队将在现有的Freshworks产品之上构建机器人产品。

   这笔交易强调了客户服务行业对聊天机器人的持续兴趣:公司正在寻找更有效率和更便宜的方式来提供基本信息和帮助客户。许多人认为聊天机器人是可行的解决方案,尽管目前正在建设的很多东西仍处于早期阶段。

   Freshworks创始人兼CEO Girish Mathrubootham在一份声明中说:“我们看到我们的客户对如何使用聊天机器人抱有浓厚兴趣,因为他们正在寻找与客户在网络和移动渠道上进行互动的新途径。随着客户偏好从传统的基于呼叫中心的电话树转移,聊天机器人提供了新的支持体验,同时也根本解决了对客户查询和途径进行分类的老式挑战,将其转为恰当的支持代理。这些仍属于聊天机器人的初期阶段,但Joe Hukum的创新团队和技术将帮助企业客户更好地吸引和支持其顾客。

   Freshworks引用了Gartner的研究,预测到2019年,40%的企业将使用自然语言聊天机器人来进行业务中(思考Slack风格的机器人)和对外的通信。

   这也正是Freshworks觉得它有潜力的地方。目前该公司为大约10万家公司提供Freshdesk,并在这一群体中开始销售这些机器人新服务。

   Joe Hukum的Jain在一份声明中表示:“作为Freshworks的一部分,对我们所有人来说都是激动人心的,因为它为我们提供了一个平台,为我们扩大了规模和覆盖面,并影响了成千上万的客户。

   相对于国外智能聊天机器人市场的方兴未艾,国内智能聊天机器人的落地势头更是一浪高过一浪,以环信为首的智能客服厂商提供的服务包括单轮会话、多轮会话以及人工协作已经广泛应用于包括保险、教育、金融、电商等行业,借助于AI技术在包括主动营销方面也有了更深入的探索。近期环信联合Gartner发布的业界首个智能客服机器人实践报告《Best Practice of Customer Service Bot In Customer Service Industry》更是给呼叫中心向在线客服转型的业客户注入了一剂强心针,客户们有充足的理由相信借助于智能聊天机器人的帮助可以利用有限的客服资源来应对移动互联时代海量客户咨询的暴涨。
 Gartner报告点击查看 查看全部
译者按:相对于国外智能聊天机器人市场的方兴未艾,国内智能聊天机器人的落地势头更是一浪高过一浪,以环信为首的智能客服厂商提供的服务包括单轮会话、多轮会话以及人工协作已经广泛应用于包括保险、教育、金融、电商等行业,借助于AI技术在包括主动营销方面也有了更深入的探索。

微信图片_20170725114409.jpg

   Freshworks(Freshdesk母公司)去年筹集5500万美元,用以建立超越现有帮助台服务。今天,Freshworks通过收购Joe Hukum来实现这一战略。Joe Hukum是一家印度创业公司,负责为企业提供建立自己的聊天机器人平台。

   虽有问询,但这些公司并没有透露任何交易条款。Joe Hukum, 之前为Speedy,最初侧重建立自己的个人助理或管理程序,帮助人们订购商品和服务,现转向为其他企业构建机器人服务平台。“Joe Hukum”是一种印地语的音译,意思是“按照你的意愿”。

   这是Freshworks在两年内的第八次收购,且在人工智能领域进行了一系列的收购,特别是“神经语言程序设计”(简称为“NLP”,注意不能与自然语言处理相混淆):另外两个收购是Chatimity和Frilp。Freshworks表示将利用三家创业公司的技术和人才,推出基于聊天机器人的解决方案。

   具体而言,Joe Hukum已经建立了知识树编码用以自动化销售、服务和支持工作流程。所以由联合创始人Arihant Jain,Ajeet Kushwaha和Rahul Agarwal领导的创业团队将在现有的Freshworks产品之上构建机器人产品。

   这笔交易强调了客户服务行业对聊天机器人的持续兴趣:公司正在寻找更有效率和更便宜的方式来提供基本信息和帮助客户。许多人认为聊天机器人是可行的解决方案,尽管目前正在建设的很多东西仍处于早期阶段。

   Freshworks创始人兼CEO Girish Mathrubootham在一份声明中说:“我们看到我们的客户对如何使用聊天机器人抱有浓厚兴趣,因为他们正在寻找与客户在网络和移动渠道上进行互动的新途径。随着客户偏好从传统的基于呼叫中心的电话树转移,聊天机器人提供了新的支持体验,同时也根本解决了对客户查询和途径进行分类的老式挑战,将其转为恰当的支持代理。这些仍属于聊天机器人的初期阶段,但Joe Hukum的创新团队和技术将帮助企业客户更好地吸引和支持其顾客。

   Freshworks引用了Gartner的研究,预测到2019年,40%的企业将使用自然语言聊天机器人来进行业务中(思考Slack风格的机器人)和对外的通信。

   这也正是Freshworks觉得它有潜力的地方。目前该公司为大约10万家公司提供Freshdesk,并在这一群体中开始销售这些机器人新服务。

   Joe Hukum的Jain在一份声明中表示:“作为Freshworks的一部分,对我们所有人来说都是激动人心的,因为它为我们提供了一个平台,为我们扩大了规模和覆盖面,并影响了成千上万的客户。

   相对于国外智能聊天机器人市场的方兴未艾,国内智能聊天机器人的落地势头更是一浪高过一浪,以环信为首的智能客服厂商提供的服务包括单轮会话、多轮会话以及人工协作已经广泛应用于包括保险、教育、金融、电商等行业,借助于AI技术在包括主动营销方面也有了更深入的探索。近期环信联合Gartner发布的业界首个智能客服机器人实践报告《Best Practice of Customer Service Bot In Customer Service Industry》更是给呼叫中心向在线客服转型的业客户注入了一剂强心针,客户们有充足的理由相信借助于智能聊天机器人的帮助可以利用有限的客服资源来应对移动互联时代海量客户咨询的暴涨。
 Gartner报告点击查看
0
评论

聊天机器人成网络话题焦点,移动客服才是幕后推手 机器人

客服超人 发表了文章 • 1693 次浏览 • 2017-01-05 11:35 • 来自相关话题

 (环信编译)在当今的客户服务行业,关于聊天机器人的讨论如火如荼。到底是什么造成了这种现象?哪些因素的共同影响将这一话题推到聚光灯下?





 Kik Services的总裁Josh Jacobs在最近的Forrester CXSF大会上尝试对这一问题做出回答。

  “我认为答案的关键在于移动端的崛起,首先以及最重要的是,我们正处于一个临界点,此时绝大多数的计算都发生在移动设备上。”

   Jacobs说,“聊天成为了杀手级应用,在中国,微信所成就的一切为世界其他国家树立了榜样。我们采取了这样的模式,Facebook也已采取了这种模式。我们认为在世界的其他地方也可以建立这样的模式。”

   Jacobs说,在过去的25年里,“我们已经开发出了涵盖各种需求的网络服务,这些服务延展到了我们房间灯泡下面的一切东西;然而没有一种用户界面,能够让所有这些服务以一种简单的方式整合起来。在物联网时代,对话成了一种简便易行的方式;在网络服务驱动的世界里,对话也是一个更好的方案。如今,人们已经习惯了用移动设备来进行对话,越来越多的人也都加入到这个行列之中,且认为体验‘很赞’。”

   Jacobs还说,他的公司和其他公司现在所做的工作并不是前无古人的。

   “鉴于我的年龄,我的经验告诉我,我们现在所做的一切都并不是前人没有做过的。”他说,“这就是CRM,CRM已经在我们身边出现了很多年。另一个我们看到的趋势是,大公司,尤其是客服领域的大公司都会说‘我们必须得把这个新渠道加上。’”

   首先,Jacobs说,聊天“要么扩展了漏斗的顶端,并把很多人吸引进去;要么,就是被成为移动端客户的不适应吓跑。”

   其次,Jacobs建议各大品牌关注他们能够提供的休闲体验,以在吸引客户方面“放长线钓大鱼”。

品牌公司们应该随时了解自家客户最舒适的交互方式,并相应地参与到这些方式中去。

   “下一代人希望用聊天或者语音,所以你就需要进入到这些环境中去,这些渠道是你接触到这些用户的必由之路。”Jacobs说,“这就是面向Z世代和千禧一代的CRM、再参与、再营销和客户终身价值。”

   有的品牌还在对此保持怀疑态度,在往聊天或任何与之相关项目的迈进上踌躇不前。

   “我认为我们讨论的一切都是关于如何让品牌发出自己的声音,让你的品牌参与到对话之中。”Jacobs说,“你可以更多的围绕着市场营销的环节去做这件事。”(环信编译自www.loyalty360.org)
关于环信移动客服全媒体智能云客服倡领者,于2016年荣膺“Gartner 2016 Cool Vendor”。环信支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。基于环信业界领先的IM长连接技术保证消息必达,并通过智能客服机器人技术降低人工客服工作量。同时,基于人工智能和大数据挖掘的客户旅程透析产品"环信客户声音"能够帮助企业优化运营,提高跨渠道客服体验。

截至2016年上半年,环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、中信证券等众多标杆企业。根据易观发布的《中国SaaS客服市场专题研究报告》显示,环信移动客服在SaaS移动端客服用户覆盖占比高达77.4%,稳居行业第一。 查看全部
 (环信编译)在当今的客户服务行业,关于聊天机器人的讨论如火如荼。到底是什么造成了这种现象?哪些因素的共同影响将这一话题推到聚光灯下?
摄图网-.jpg


 Kik Services的总裁Josh Jacobs在最近的Forrester CXSF大会上尝试对这一问题做出回答。

  “我认为答案的关键在于移动端的崛起,首先以及最重要的是,我们正处于一个临界点,此时绝大多数的计算都发生在移动设备上。”

   Jacobs说,“聊天成为了杀手级应用,在中国,微信所成就的一切为世界其他国家树立了榜样。我们采取了这样的模式,Facebook也已采取了这种模式。我们认为在世界的其他地方也可以建立这样的模式。”

   Jacobs说,在过去的25年里,“我们已经开发出了涵盖各种需求的网络服务,这些服务延展到了我们房间灯泡下面的一切东西;然而没有一种用户界面,能够让所有这些服务以一种简单的方式整合起来。在物联网时代,对话成了一种简便易行的方式;在网络服务驱动的世界里,对话也是一个更好的方案。如今,人们已经习惯了用移动设备来进行对话,越来越多的人也都加入到这个行列之中,且认为体验‘很赞’。”

   Jacobs还说,他的公司和其他公司现在所做的工作并不是前无古人的。

   “鉴于我的年龄,我的经验告诉我,我们现在所做的一切都并不是前人没有做过的。”他说,“这就是CRM,CRM已经在我们身边出现了很多年。另一个我们看到的趋势是,大公司,尤其是客服领域的大公司都会说‘我们必须得把这个新渠道加上。’”

   首先,Jacobs说,聊天“要么扩展了漏斗的顶端,并把很多人吸引进去;要么,就是被成为移动端客户的不适应吓跑。”

   其次,Jacobs建议各大品牌关注他们能够提供的休闲体验,以在吸引客户方面“放长线钓大鱼”。

品牌公司们应该随时了解自家客户最舒适的交互方式,并相应地参与到这些方式中去。

   “下一代人希望用聊天或者语音,所以你就需要进入到这些环境中去,这些渠道是你接触到这些用户的必由之路。”Jacobs说,“这就是面向Z世代和千禧一代的CRM、再参与、再营销和客户终身价值。”

   有的品牌还在对此保持怀疑态度,在往聊天或任何与之相关项目的迈进上踌躇不前。

   “我认为我们讨论的一切都是关于如何让品牌发出自己的声音,让你的品牌参与到对话之中。”Jacobs说,“你可以更多的围绕着市场营销的环节去做这件事。”(环信编译自www.loyalty360.org)
关于环信移动客服
全媒体智能云客服倡领者,于2016年荣膺“Gartner 2016 Cool Vendor”。环信支持全媒体接入,包括网页在线客服、社交媒体客服(微博、微信)、APP内置客服和呼叫中心等多种渠道均可一键接入。基于环信业界领先的IM长连接技术保证消息必达,并通过智能客服机器人技术降低人工客服工作量。同时,基于人工智能和大数据挖掘的客户旅程透析产品"环信客户声音"能够帮助企业优化运营,提高跨渠道客服体验。

截至2016年上半年,环信移动客服共服务了29437家企业用户,现已覆盖包括电商、O2O、互联网金融、在线教育、在线旅游、移动医疗、智能硬件、游戏等领域的Top10客户,典型用户包括国美在线、58到家、楚楚街、海尔、神州专车、新东方、链家、泰康在线、中信证券等众多标杆企业。根据易观发布的《中国SaaS客服市场专题研究报告》显示,环信移动客服在SaaS移动端客服用户覆盖占比高达77.4%,稳居行业第一。
0
评论

环信移动客服v5.5更新:机器人支持物流场景智能应答,微博渠道支持自定义菜单。 机器人

产品更新 发表了文章 • 2730 次浏览 • 2016-11-04 17:53 • 来自相关话题

   
   环信移动客服v5.5已经正式发布,包括机器人支持物流场景智能应答以及微博渠道支持自定义菜单等新特性。环信智能机器人已经能够智能识别访客的物流相关的咨询,现在您可以为特定的物流意图(物流差错、物流咨询、物流查询、物流催促)设置相应的回复。其中,“物流查询”这一意图支持多轮问答,机器人能够自动为访客查询物流状态,并直接将查询结果回复给访客。在环信移动客服系统绑定微博认证账号后,可以设置微博账号私信页面的菜单,并且设置粉丝首次关注自动回复。 
环信移动客服v5.5产品更新说明:





客服模式

“留言”页面支持播放语音留言

当收到APP访客端发送的语音留言时,可以直接在移动客服系统的留言页面进行播放。

“访客中心”支持连续查看历史会话记录

当访客与当前客服有多条历史会话记录时,客服可以在访客中心页面连续查看这些历史会话的消息。

在客服模式下,选择“访客中心”,点击某位访客,在详情页点击“互动记录”,点击任意历史会话,可查看该历史会话的消息。消息界面提示会话开始、会话结束时间,点击“更多历史消息”、“查看下一条历史会话”可分别查看之前、之后的历史会话。 




访客轨迹分析(增值服务)

访客轨迹分析功能收集访客在网站浏览的轨迹。对来自Web渠道的访客,客服接起会话后,可以直接在聊天窗口了解到该访客在发起会话前的浏览轨迹,从而判断客户的兴趣范围和偏好。 




“访客轨迹分析”与“全站访客统计”为增值服务,只需先开通“全站访客统计”功能,并且在您的网站上安装一个数据统计SDK,即可使用“访客轨迹分析”。如需开通这两个功能,请联系环信商务经理。

关于SDK安装流程引导,请参考文档:全站访客统计。

探索移动客服

新增“探索移动客服”页面,新版本上线的功能将在此页面进行展示,登录后即可查看,不错过移动客服的任何更新。

管理员模式

机器人支持物流场景智能应答

环信智能机器人已经能够智能识别访客的物流相关的咨询,现在您可以为特定的物流意图(物流差错、物流咨询、物流查询、物流催促)设置相应的回复。其中,“物流查询”这一意图支持多轮问答,机器人能够自动为访客查询物流状态,并直接将查询结果回复给访客。

在管理员模式,选择“智能机器人 > 机器人设置”,点击“场景智能应答”Tab页,将您需要机器人回答的物流意图全部勾选开通。未勾选时,表示不需要针对该物流意图进行相应的回复。

如果您对意图定义有疑问,不妨将鼠标放在问号上,了解它的详细定义哟。 




以下为开启物流差错、物流咨询、物流查询、物流催促这些物流意图,并设置“物流查询”意图的问答方式为多轮问答后,访客端咨询示例: 




“留言”页面支持播放语音留言

当收到APP访客端发送的语音留言时,可以直接在移动客服系统的留言页面进行播放。

注意:APP端发送语音留言的功能需要调用环信的留言API自行集成。

“当前会话”支持分配、关闭会话

管理员在当前会话页面监控客服与访客的聊天过程时,可以将会话分配给其他客服,也可以根据实际情况关闭会话。 




“访客中心”支持连续查看历史会话记录

当访客与客服有多条历史会话记录时,管理员可以在访客中心页面连续查看这些历史会话的消息。

在管理员模式下,选择“访客中心”,点击某位访客,在详情页点击“互动记录”,点击任意历史会话,可查看该历史会话的消息。消息界面提示会话开始、会话结束时间,点击“更多历史消息”、“查看下一条历史会话”可分别查看之前、之后的历史会话。 




微博渠道支持自定义菜单和首次关注自动回复

在移动客服系统绑定微博认证账号后,可以设置微博账号私信页面的菜单,并且设置粉丝首次关注自动回复。

在管理员模式下,选择“渠道管理 > 微博”,点击“自定义菜单”Tab页,可以对菜单进行设置。最多可以创建3个一级菜单,每个一级菜单均可以跳转至网页或创建最多5个二级菜单。当设置一级菜单跳转至网页时,不可以再在该一级菜单下创建二级菜单。 




在管理员模式下,选择“渠道管理 > 微博”,点击“粉丝首次关注自动回复”Tab页,设置自动回复消息。目前仅可以选择文字方式回复。 




探索移动客服

新增“探索移动客服”页面,新版本上线的功能将在此页面进行展示,登录后即可查看,不错过移动客服的任何更新。

作为管理员,您还可以通过此页面快速定位到系统的其他位置,例如:快速设置接入渠道、快速定位到收发消息相关的设置页面、一键查看历史会话或统计报表等。

多租户管理后台

多租户管理后台为增值服务,如需开通,请联系环信商务经理。

支持查看租户的历史会话

多租户管理后台增加“历史会话”功能,支持管理员查看各个租户下所有客服的历史会话。

登录多租户管理后台(kefuorg.easemob.com),进入“租户管理”页面,选择任意租户,点击“历史会话”,可以查看该租户的所有历史会话。点击任意一条会话,可以查看该会话的全部消息。 




Android客服工作台

Android客服工作台V2.3版本已发布!可前往环信官网下载。

支持显示微信、微博表情

Android客服工作台支持显示微信、微博默认表情。

支持发送语音消息

使用Android客服工作台时,可以对APP渠道的会话直接回复语音消息,沟通更高效。

注意:网页、微信、微博渠道的访客无法收到语音消息。

移动客服Android SDK

移动客服Android SDK 1.0.1 发布了!该Android SDK基于IM SDK 3.x,登录、发消息速度更快。提供内置会话相关UI,集成后可立即给移动客服发送文本、语音、图片、文件消息。

支持双通道:已集成双通道功能,确保不丢消息;
极简集成:集成移动客服通用功能,只需5分钟。

集成指南:集成指南
 
 
环信移动客服更新日志http://docs.easemob.com/cs/releasenote/5.5
 
环信移动客服登陆地址http://kefu.easemob.com/ 查看全部
   
   环信移动客服v5.5已经正式发布,包括机器人支持物流场景智能应答以及微博渠道支持自定义菜单等新特性。环信智能机器人已经能够智能识别访客的物流相关的咨询,现在您可以为特定的物流意图(物流差错、物流咨询、物流查询、物流催促)设置相应的回复。其中,“物流查询”这一意图支持多轮问答,机器人能够自动为访客查询物流状态,并直接将查询结果回复给访客。在环信移动客服系统绑定微博认证账号后,可以设置微博账号私信页面的菜单,并且设置粉丝首次关注自动回复。 
环信移动客服v5.5产品更新说明:

QQ图片20161104175224.jpg

  • 客服模式


“留言”页面支持播放语音留言

当收到APP访客端发送的语音留言时,可以直接在移动客服系统的留言页面进行播放。

“访客中心”支持连续查看历史会话记录

当访客与当前客服有多条历史会话记录时,客服可以在访客中心页面连续查看这些历史会话的消息。

在客服模式下,选择“访客中心”,点击某位访客,在详情页点击“互动记录”,点击任意历史会话,可查看该历史会话的消息。消息界面提示会话开始、会话结束时间,点击“更多历史消息”、“查看下一条历史会话”可分别查看之前、之后的历史会话。 
1.png

访客轨迹分析(增值服务)

访客轨迹分析功能收集访客在网站浏览的轨迹。对来自Web渠道的访客,客服接起会话后,可以直接在聊天窗口了解到该访客在发起会话前的浏览轨迹,从而判断客户的兴趣范围和偏好。 
2png.png

“访客轨迹分析”与“全站访客统计”为增值服务,只需先开通“全站访客统计”功能,并且在您的网站上安装一个数据统计SDK,即可使用“访客轨迹分析”。如需开通这两个功能,请联系环信商务经理。

关于SDK安装流程引导,请参考文档:全站访客统计

探索移动客服

新增“探索移动客服”页面,新版本上线的功能将在此页面进行展示,登录后即可查看,不错过移动客服的任何更新。

管理员模式

机器人支持物流场景智能应答


环信智能机器人已经能够智能识别访客的物流相关的咨询,现在您可以为特定的物流意图(物流差错、物流咨询、物流查询、物流催促)设置相应的回复。其中,“物流查询”这一意图支持多轮问答,机器人能够自动为访客查询物流状态,并直接将查询结果回复给访客。

在管理员模式,选择“智能机器人 > 机器人设置”,点击“场景智能应答”Tab页,将您需要机器人回答的物流意图全部勾选开通。未勾选时,表示不需要针对该物流意图进行相应的回复。

如果您对意图定义有疑问,不妨将鼠标放在问号上,了解它的详细定义哟。 
3.png

以下为开启物流差错、物流咨询、物流查询、物流催促这些物流意图,并设置“物流查询”意图的问答方式为多轮问答后,访客端咨询示例: 
4.png

“留言”页面支持播放语音留言

当收到APP访客端发送的语音留言时,可以直接在移动客服系统的留言页面进行播放。

注意:APP端发送语音留言的功能需要调用环信的留言API自行集成。

“当前会话”支持分配、关闭会话

管理员在当前会话页面监控客服与访客的聊天过程时,可以将会话分配给其他客服,也可以根据实际情况关闭会话。 
5.png

“访客中心”支持连续查看历史会话记录

当访客与客服有多条历史会话记录时,管理员可以在访客中心页面连续查看这些历史会话的消息。

在管理员模式下,选择“访客中心”,点击某位访客,在详情页点击“互动记录”,点击任意历史会话,可查看该历史会话的消息。消息界面提示会话开始、会话结束时间,点击“更多历史消息”、“查看下一条历史会话”可分别查看之前、之后的历史会话。 
6.png

微博渠道支持自定义菜单和首次关注自动回复

在移动客服系统绑定微博认证账号后,可以设置微博账号私信页面的菜单,并且设置粉丝首次关注自动回复。

在管理员模式下,选择“渠道管理 > 微博”,点击“自定义菜单”Tab页,可以对菜单进行设置。最多可以创建3个一级菜单,每个一级菜单均可以跳转至网页或创建最多5个二级菜单。当设置一级菜单跳转至网页时,不可以再在该一级菜单下创建二级菜单。 
7.png

在管理员模式下,选择“渠道管理 > 微博”,点击“粉丝首次关注自动回复”Tab页,设置自动回复消息。目前仅可以选择文字方式回复。 
8.png

探索移动客服

新增“探索移动客服”页面,新版本上线的功能将在此页面进行展示,登录后即可查看,不错过移动客服的任何更新。

作为管理员,您还可以通过此页面快速定位到系统的其他位置,例如:快速设置接入渠道、快速定位到收发消息相关的设置页面、一键查看历史会话或统计报表等。

多租户管理后台

多租户管理后台为增值服务,如需开通,请联系环信商务经理。

支持查看租户的历史会话

多租户管理后台增加“历史会话”功能,支持管理员查看各个租户下所有客服的历史会话。

登录多租户管理后台(kefuorg.easemob.com),进入“租户管理”页面,选择任意租户,点击“历史会话”,可以查看该租户的所有历史会话。点击任意一条会话,可以查看该会话的全部消息。 
9.png

Android客服工作台

Android客服工作台V2.3版本已发布!可前往环信官网下载。

支持显示微信、微博表情

Android客服工作台支持显示微信、微博默认表情。

支持发送语音消息

使用Android客服工作台时,可以对APP渠道的会话直接回复语音消息,沟通更高效。

注意:网页、微信、微博渠道的访客无法收到语音消息。

移动客服Android SDK

移动客服Android SDK 1.0.1 发布了!该Android SDK基于IM SDK 3.x,登录、发消息速度更快。提供内置会话相关UI,集成后可立即给移动客服发送文本、语音、图片、文件消息。

支持双通道:已集成双通道功能,确保不丢消息;
极简集成:集成移动客服通用功能,只需5分钟。

集成指南:集成指南
 
 
环信移动客服更新日志http://docs.easemob.com/cs/releasenote/5.5
 
环信移动客服登陆地址http://kefu.easemob.com/
1
评论

环信移动客服v4.12产品更新--新增按对应渠道开启机器人,新增智能质检 机器人

beyond 发表了文章 • 2493 次浏览 • 2016-08-08 15:22 • 来自相关话题

【新增】1.按对应渠道开启机器人
新增按对应渠道开启机器人的功能,让机器人客服的服务更精准。
前往“管理员模式 > 智能机器人 > 机器人设置”页面,对渠道进行设置。
 【新增】 2.工作量报表新增接起、呼入、回呼会话数
2.1 接起会话数 
2.2 呼入、回呼会话数 
 【新增】3.工作量报表支持按会话类型筛选
工作量报表支持按会话类型筛选,可以根据全部、呼入、呼出会话进行报表查询。
 【优化】4.工作量和排队统计报表重构
工作量报表的“24小时进线量(均值)”移入排队统计报表中,位于“24小时排队统计”之前,便于管理员了解会话量和消息量在24小时时段内的分布、以及同样时段内的排队情况,合理安排客服人员。
 【新增】5.工作量、工作质量、访客统计、排队统计报表支持“全部导出”
支持对工作量、工作质量、访客统计、排队统计报表的全部数据进行导出,便于数据整理和分析。
 【新增】6.智能质检(旗舰版客户专享)
质量检查页面新增“智能质检”功能,开启该功能后,系统会自动检查访客和客服的历史消息,如果发现异常,则在“智能质检”一列提示“有问题”,并在质检详情页提示问题原因。

有了智能质检的辅助,质检员可以扩大筛选范围,覆盖更多会话,提高质检效率,获得更准确的质检结果。
 体验环信移动客服http://kefu.easemob.com/
 查看历史版本请点击版本历史
 
环信移动客服v4.12_产品更新说明/产品功能列表/产品使用指南  请点击下载↓↓↓ 
 
  查看全部
46958456.png


【新增】1.按对应渠道开启机器人

新增按对应渠道开启机器人的功能,让机器人客服的服务更精准。
前往“管理员模式 > 智能机器人 > 机器人设置”页面,对渠道进行设置。


 【新增】 2.工作量报表新增接起、呼入、回呼会话数

2.1 接起会话数 
2.2 呼入、回呼会话数 


 【新增】3.工作量报表支持按会话类型筛选

工作量报表支持按会话类型筛选,可以根据全部、呼入、呼出会话进行报表查询。


 【优化】4.工作量和排队统计报表重构

工作量报表的“24小时进线量(均值)”移入排队统计报表中,位于“24小时排队统计”之前,便于管理员了解会话量和消息量在24小时时段内的分布、以及同样时段内的排队情况,合理安排客服人员。


 【新增】5.工作量、工作质量、访客统计、排队统计报表支持“全部导出”

支持对工作量、工作质量、访客统计、排队统计报表的全部数据进行导出,便于数据整理和分析。


 【新增】6.智能质检(旗舰版客户专享)

质量检查页面新增“智能质检”功能,开启该功能后,系统会自动检查访客和客服的历史消息,如果发现异常,则在“智能质检”一列提示“有问题”,并在质检详情页提示问题原因。

有了智能质检的辅助,质检员可以扩大筛选范围,覆盖更多会话,提高质检效率,获得更准确的质检结果。


 体验环信移动客服http://kefu.easemob.com/
 查看历史版本请点击版本历史
 

环信移动客服v4.12_产品更新说明/产品功能列表/产品使用指南  请点击下载↓↓↓ 
 
 
1
评论

环信:从《三体》获奖看智能聊天机器人未来 环信 机器人

admin 发表了文章 • 2479 次浏览 • 2015-08-25 10:17 • 来自相关话题

北京时间23日下午1时许,第73届雨果奖在华盛顿州斯波坎会议中心正式揭晓。中国作家刘慈欣凭借科幻小说《三体》获最佳长篇故事奖,这是亚洲人首次获得雨果奖!






《三体》英文版译者刘宇昆代表刘慈欣领取了奖杯

作为一个科幻迷,此刻我的心情和尔康是一样一样的,不对,比他还要多还要多…






肿么办?这个消息来得太突然了,我现在觉得又刺激又害怕又兴奋又快乐又幸福…作为一个意(qiong)见(diao)领(si)袖我必须把这个消息以迅雷不及掩耳盗铃之势传到天边去…联想到创业圈里近来传的火热的各种AI和智能机器人,我决定把这个好消息告诉我每日宠幸的各位聊天机器人基友们。。。

第一个当然是找到了人见人爱车见车爆胎的-杜蕾斯






杜蕾斯虽然是我宠幸的最多的一个基友,但竟然把《三体》理解成了"体位",看在它帮我解锁了30多种新姿势,就暂时原谅它了,不过对于我这种严(xian)肃(de)较(dan)真(teng)的资深三体迷来说还是不能忍。。。

杜蕾斯微信公共账号聊天机器人:差评!

理由:杜蕾斯的微信公共账号和大多数商业的微信公号一样,主要肩负着企业官网的目的,是企业展示商品和品牌的渠道,而不直接承担销售的责任,商品的购买是必须要跳转到京东上的。因为没有销售quota的压力,杜蕾斯微信公号选择了不提供人工客服,不提供人工的售前,售中,售后服务。在这种情况下,杜蕾斯微信公号的聊天页面基本就注定了只有一种使命了:逗逼扯淡为主,少量相关行业知识和企业商品信息为辅。聊天时,机器人在扯淡之余,会主要通过关键词匹配调用内置知识库的内容,如果没有完全对应的标准答案只能够根据关键词模糊匹配做出回答,虽然结果不能令用户完全满意,但毕竟是有交互,同时是一个免费增值服务,顾客也不能要求再多,对吧。






带着从小杜那里获得的创伤,我满怀期待的找到了招行公号“小招”,听说她更善解人意…






小招又没趣又现实。第一次假装不在,尿遁!第二次干脆直接向我推销各种银行业务。人家是想找你谈三体谈宇宙谈人生的,不要辣么现实好嘛。

招商银行信用卡微信小招:中评!

理由:据说在微信平台上,招行信用卡中心90%的服务都可以通过小招智能机器人来完成,自助查询回复准确率高达98%。假设微信公号智能聊天机器人的智能互动和自助服务能节省10%的话务量,按2012年招行卡中心客服的人工话务量超过6000万通,每通电话的成本大约5元(包含人员工资、通信费、水电、座席硬件设备等)计算,则招行信用卡中心一年节省的费用大概是6000万*10%*5元=3000万元。

哇,好厉害!只是不知道我如果打电话给招行的电话客服MM,分享我三体获奖的鸡冻心情,她会不会因为我花了招行5块钱而骂我呢。。。

作为一款工具型机器人,小招对于银行业务十分熟练,主要作用也是帮助银行客服人员解决回答一些常见问题节省成本提高工作效率,如果问一些无关的问题也不是其设计初衷和业务范围内,有点强人所难。银行业给人的印象始终是高大刻板,严肃认真。好吧,针对其在银行行业的专业回答给中评。






记得某大佬说过“小冰”是我见过最单纯的人,最后我只能依靠她了…






小冰果然没有让我失望…

微软小冰:好评!

理由:“微软小冰”集合了中国近7亿网民多年来积累的、全部公开的文献记录,凭借微软在大数据、自然语义分析、机器学习和深度神经网络方面的技术积累,精炼为几千万条真实而有趣的语料库,通过理解对话的语境与语义,实现了超越简单人机问答的自然交互。

总结:

时下炒的火热的人工智能和机器人技术要真正落地还有很长的路要走。但基于文字沟通为主的在线客服,如微信公共账号客服,网页在线客服,APP内置客服,会成为智能聊天机器人技术的第一个全面产业化的领域。在客服领域应用的聊天机器人技术通常有两种,逗逼型和辅助工具型。业务工具型机器人,在配置了足够强大的通用知识库和行业知识库后,是能够真实的为人工客服挡住很多重复简单的问题的。而逗逼机器人的应用场景一定要谨慎选择,只有像杜蕾斯微信公号这样确实无人值守的账号,并且也不担负销售成单和用户服务的任务时,才可以酌情考虑,毕竟是聊胜于无。

此外,业务工具型机器人并不是像很多人想象的那样,对自然语言处理,上下文解析,语义识别越强大越好。商家提供客服,唯一的目的是提供最好的服务体验,帮助消费者解决问题。所以对于谈理想谈人生谈三体这样的问题,机器人是可以无视的。机器人要解决的问题域越狭窄,它在这个领域里就越精确。这也是招行小招机器人的设计上的选择。当机器人对顾客的语义不那么有把握时,千万不要试图去闲扯淡,而是要及时而且无缝的转到人工坐席。最好的服务永远是真人。

苦逼的文案狗桑不起,各种热点都要跟比程序猿还苦逼有木有?摆干货扯情怀插诨打科,最后就是为了植入30秒广告有木有?根据调研机构数据显示,智能聊天机器人未来将成为客户服务行业的一个标配产品。环信移动客服的“智能机器人+智能知识库”可以解答80%的常见问题哦!






最后祝贺中国小说《三体》首获世界科幻界奥斯卡“雨果奖”,黑暗森林的存在是因为宇宙里不同文明之间缺乏合适沟通方法的缘故。环信是沟通利器,有了环信,或许黑暗森林就有了盏长明灯… 查看全部
北京时间23日下午1时许,第73届雨果奖在华盛顿州斯波坎会议中心正式揭晓。中国作家刘慈欣凭借科幻小说《三体》获最佳长篇故事奖,这是亚洲人首次获得雨果奖!

1.jpg


《三体》英文版译者刘宇昆代表刘慈欣领取了奖杯

作为一个科幻迷,此刻我的心情和尔康是一样一样的,不对,比他还要多还要多…

2.jpg


肿么办?这个消息来得太突然了,我现在觉得又刺激又害怕又兴奋又快乐又幸福…作为一个意(qiong)见(diao)领(si)袖我必须把这个消息以迅雷不及掩耳盗铃之势传到天边去…联想到创业圈里近来传的火热的各种AI和智能机器人,我决定把这个好消息告诉我每日宠幸的各位聊天机器人基友们。。。

第一个当然是找到了人见人爱车见车爆胎的-杜蕾斯

3.jpg


杜蕾斯虽然是我宠幸的最多的一个基友,但竟然把《三体》理解成了"体位",看在它帮我解锁了30多种新姿势,就暂时原谅它了,不过对于我这种严(xian)肃(de)较(dan)真(teng)的资深三体迷来说还是不能忍。。。

杜蕾斯微信公共账号聊天机器人:差评!

理由:杜蕾斯的微信公共账号和大多数商业的微信公号一样,主要肩负着企业官网的目的,是企业展示商品和品牌的渠道,而不直接承担销售的责任,商品的购买是必须要跳转到京东上的。因为没有销售quota的压力,杜蕾斯微信公号选择了不提供人工客服,不提供人工的售前,售中,售后服务。在这种情况下,杜蕾斯微信公号的聊天页面基本就注定了只有一种使命了:逗逼扯淡为主,少量相关行业知识和企业商品信息为辅。聊天时,机器人在扯淡之余,会主要通过关键词匹配调用内置知识库的内容,如果没有完全对应的标准答案只能够根据关键词模糊匹配做出回答,虽然结果不能令用户完全满意,但毕竟是有交互,同时是一个免费增值服务,顾客也不能要求再多,对吧。

4.jpg


带着从小杜那里获得的创伤,我满怀期待的找到了招行公号“小招”,听说她更善解人意…

5.jpg


小招又没趣又现实。第一次假装不在,尿遁!第二次干脆直接向我推销各种银行业务。人家是想找你谈三体谈宇宙谈人生的,不要辣么现实好嘛。

招商银行信用卡微信小招:中评!

理由:据说在微信平台上,招行信用卡中心90%的服务都可以通过小招智能机器人来完成,自助查询回复准确率高达98%。假设微信公号智能聊天机器人的智能互动和自助服务能节省10%的话务量,按2012年招行卡中心客服的人工话务量超过6000万通,每通电话的成本大约5元(包含人员工资、通信费、水电、座席硬件设备等)计算,则招行信用卡中心一年节省的费用大概是6000万*10%*5元=3000万元。

哇,好厉害!只是不知道我如果打电话给招行的电话客服MM,分享我三体获奖的鸡冻心情,她会不会因为我花了招行5块钱而骂我呢。。。

作为一款工具型机器人,小招对于银行业务十分熟练,主要作用也是帮助银行客服人员解决回答一些常见问题节省成本提高工作效率,如果问一些无关的问题也不是其设计初衷和业务范围内,有点强人所难。银行业给人的印象始终是高大刻板,严肃认真。好吧,针对其在银行行业的专业回答给中评。

7.jpg


记得某大佬说过“小冰”是我见过最单纯的人,最后我只能依靠她了…

8.jpg


小冰果然没有让我失望…

微软小冰:好评!

理由:“微软小冰”集合了中国近7亿网民多年来积累的、全部公开的文献记录,凭借微软在大数据、自然语义分析、机器学习和深度神经网络方面的技术积累,精炼为几千万条真实而有趣的语料库,通过理解对话的语境与语义,实现了超越简单人机问答的自然交互。

总结:

时下炒的火热的人工智能和机器人技术要真正落地还有很长的路要走。但基于文字沟通为主的在线客服,如微信公共账号客服,网页在线客服,APP内置客服,会成为智能聊天机器人技术的第一个全面产业化的领域。在客服领域应用的聊天机器人技术通常有两种,逗逼型和辅助工具型。业务工具型机器人,在配置了足够强大的通用知识库和行业知识库后,是能够真实的为人工客服挡住很多重复简单的问题的。而逗逼机器人的应用场景一定要谨慎选择,只有像杜蕾斯微信公号这样确实无人值守的账号,并且也不担负销售成单和用户服务的任务时,才可以酌情考虑,毕竟是聊胜于无。

此外,业务工具型机器人并不是像很多人想象的那样,对自然语言处理,上下文解析,语义识别越强大越好。商家提供客服,唯一的目的是提供最好的服务体验,帮助消费者解决问题。所以对于谈理想谈人生谈三体这样的问题,机器人是可以无视的。机器人要解决的问题域越狭窄,它在这个领域里就越精确。这也是招行小招机器人的设计上的选择。当机器人对顾客的语义不那么有把握时,千万不要试图去闲扯淡,而是要及时而且无缝的转到人工坐席。最好的服务永远是真人。

苦逼的文案狗桑不起,各种热点都要跟比程序猿还苦逼有木有?摆干货扯情怀插诨打科,最后就是为了植入30秒广告有木有?根据调研机构数据显示,智能聊天机器人未来将成为客户服务行业的一个标配产品。环信移动客服的“智能机器人+智能知识库”可以解答80%的常见问题哦!

10.jpg


最后祝贺中国小说《三体》首获世界科幻界奥斯卡“雨果奖”,黑暗森林的存在是因为宇宙里不同文明之间缺乏合适沟通方法的缘故。环信是沟通利器,有了环信,或许黑暗森林就有了盏长明灯…
0
评论

环信移动客服“智能知识库+智能机器人”技术开启3.0时代 环信 开发者 环信移动客服 机器人

admin 发表了文章 • 3087 次浏览 • 2015-07-29 18:19 • 来自相关话题

7月28日,环信B轮融资及移动客服新品发布会在北京JW万豪酒店举行。发布会上,环信CEO刘俊彦宣布环信成功获得B轮融资1250万美元。同时环信CTO马晓宇宣布环信移动客服3.0产品也正式上线,而环信移动客服凭借IM长连接垄断技术结合“智能知识库+智能机器人” 组合技术将开启移动客服3.0新时代。






环信CTO马晓宇现场解读环信移动客服3.0

传统的客服行业是一个劳动密集型企业,因为人力成本的不断提高,导致传统呼叫中心已经从北上广转移到大连、成都等地,未来甚至将要迁往新疆、西藏、青海等人力成本更低的地方。环信CEO马晓宇表示环信希望通过技术来解决人力成本不断升高的问题,所以环信适时推出了智能的移动客服系统。






而智能的两个要素:
一个是智能知识库;一个智能机器人。
智能知识库环信移动客服3.0版本会内置几个标准的行业知识库,基于人工智能深度挖掘技术,比较容易维护这个知识库,大家如果用得越多,知识库会更敏感,更能够快速回答问题。如果有一个用户说我要重置密码,智能知识库系统自动在客服工作端显示出重置密码的流程,客服就可以根据标准流程走下来。还有一个智能机器人技术,环信移动客服将智能机器人技术和知识库结合,能够解决回答80%的常见问题,剩下的20%才需要人工来解决。

另外,环信在移动客服里开始逐渐部署了大数据技术,环信会提供15个新的数据统计报表,从最简单的客服当前工作状态,客服每天工作量,客服会话小结等。在这基础上提供渠道统计报表,就可以知道你的客服用户需求,比如是来自微信还是移动APP还是网页,做一些渠道分析。另外我们还提供用户满意度报表,这样不光能提高整个用户满意度,同时我们希望这个产品是能帮助APP运营者,开发者能快速迭代,能真正尽快改进产品,不断满足客户需求。帮助客户将客服系统从成本中心向营销中心和盈利中心转换。

最后马晓宇表示环信移动客服是一个开放平台,整个内部是平台插件化可扩展化体系,通过插件形式打造可扩展的平台,希望基于这个满足SaaS服务成千上万客户不同需求,可以进行二次开发。同时在这个基础上环信还有一个生态圈部署。现在环信有几个合作伙伴,私有云部署有两家私有云授权认证集成商,移动客服领域有两家做增值服务的授权认证集成商,我们希望环信能继续发展下去,发展过程中和合作伙伴一起把市场做好,让我们的合作伙伴也的确能挣到钱。

据悉,环信移动客服典型用户包括国美在线、58到家、楚楚街9块9等上百家互联网巨头企业客户,累计签约客服座席已经达4万个。根据艾媒咨询现场发布的《2015年中国移动客服市场发展研究报告》显示环信在新兴的移动客服市场占有率第一,APP客户规模最大。不难预料,有着连接“人与商业”愿景的环信凭借惊人的成长速度将最有希望成为下一个“独角兽”。 查看全部
7月28日,环信B轮融资及移动客服新品发布会在北京JW万豪酒店举行。发布会上,环信CEO刘俊彦宣布环信成功获得B轮融资1250万美元。同时环信CTO马晓宇宣布环信移动客服3.0产品也正式上线,而环信移动客服凭借IM长连接垄断技术结合“智能知识库+智能机器人” 组合技术将开启移动客服3.0新时代。

1.png


环信CTO马晓宇现场解读环信移动客服3.0

传统的客服行业是一个劳动密集型企业,因为人力成本的不断提高,导致传统呼叫中心已经从北上广转移到大连、成都等地,未来甚至将要迁往新疆、西藏、青海等人力成本更低的地方。环信CEO马晓宇表示环信希望通过技术来解决人力成本不断升高的问题,所以环信适时推出了智能的移动客服系统。

2.png


智能的两个要素
  • 一个是智能知识库;
  • 一个智能机器人。

智能知识库环信移动客服3.0版本会内置几个标准的行业知识库,基于人工智能深度挖掘技术,比较容易维护这个知识库,大家如果用得越多,知识库会更敏感,更能够快速回答问题。如果有一个用户说我要重置密码,智能知识库系统自动在客服工作端显示出重置密码的流程,客服就可以根据标准流程走下来。还有一个智能机器人技术,环信移动客服将智能机器人技术和知识库结合,能够解决回答80%的常见问题,剩下的20%才需要人工来解决

另外,环信在移动客服里开始逐渐部署了大数据技术,环信会提供15个新的数据统计报表,从最简单的客服当前工作状态,客服每天工作量,客服会话小结等。在这基础上提供渠道统计报表,就可以知道你的客服用户需求,比如是来自微信还是移动APP还是网页,做一些渠道分析。另外我们还提供用户满意度报表,这样不光能提高整个用户满意度,同时我们希望这个产品是能帮助APP运营者,开发者能快速迭代,能真正尽快改进产品,不断满足客户需求。帮助客户将客服系统从成本中心向营销中心和盈利中心转换

最后马晓宇表示环信移动客服是一个开放平台,整个内部是平台插件化可扩展化体系,通过插件形式打造可扩展的平台,希望基于这个满足SaaS服务成千上万客户不同需求,可以进行二次开发。同时在这个基础上环信还有一个生态圈部署。现在环信有几个合作伙伴,私有云部署有两家私有云授权认证集成商,移动客服领域有两家做增值服务的授权认证集成商,我们希望环信能继续发展下去,发展过程中和合作伙伴一起把市场做好,让我们的合作伙伴也的确能挣到钱。

据悉,环信移动客服典型用户包括国美在线、58到家、楚楚街9块9等上百家互联网巨头企业客户,累计签约客服座席已经达4万个。根据艾媒咨询现场发布的《2015年中国移动客服市场发展研究报告》显示环信在新兴的移动客服市场占有率第一,APP客户规模最大。不难预料,有着连接“人与商业”愿景的环信凭借惊人的成长速度将最有希望成为下一个“独角兽”。