5.5 会话界面回调
对 SDK 中界面上面的内容操作可以设置自定义的处理方式,以实现更多自定义功能,接口如下(详细使用方法参考 Demo)。
会话界面的生命周期监听
// 界面生命周期监听[非必须]
V5ClientAgent.getInstance().setChatActivityListener(OnChatActivityListener listener);
其中 OnChatActivityListener
接口如下:
/**
* 使用UI直接开发可监听此接口
* (针对有较高自定义开发需求的接口,无特殊需求不建议使用,以免使用不当带来不可预知的问题)
*/
public interface OnChatActivityListener {
/* Activity的生命周期 */
public void onChatActivityCreate(ClientChatActivity activity);
public void onChatActivityStart(ClientChatActivity activity);
public void onChatActivityStop(ClientChatActivity activity);
public void onChatActivityDestroy(ClientChatActivity activity);
/**
* Activity连接成功
*/
public void onChatActivityConnect(ClientChatActivity activity);
/**
* Activity收到消息
* @param message
*/
public void onChatActivityReceiveMessage(ClientChatActivity activity, V5Message message);
/**
* Activity客户服务状态改变
* @param activity
* @param status ClientServingStatus,当前服务状态,值定义如下
* clientServingStatusRobot, // 机器人服务
* clientServingStatusQueue, // 排队中(等待人工客服,当前机器人服务)
* clientServingStatusWorker, // 人工服务
* clientServingStatusInTrust; // 人工交给机器人托管
*/
public void onChatActivityServingStatusChange(ClientChatActivity activity, ClientServingStatus status);
}
消息发送监听:
// 消息发送监听[非必须],可在此处向坐席透传来自APP客户的相关信息
V5ClientAgent.getInstance().setUserWillSendMessageListener(new UserWillSendMessageListener() {
@Override
public V5Message onUserWillSendMessage(V5Message message) {
// 可在此处添加消息参数(JSONObject键值对均为字符串),采集信息透传到坐席端(v1.2.0版本开始不建议使用此方式,除非有实时更新需求的自定义信息)
// 【注意】v1.2.0以上版本建议使用V5ClientConfig的setUserInfo方法传递客户信息,可不必依附于消息,更加安全便捷,详见[5.3](5.3_用户信息和参数设置.html#53-用户信息和参数设置)
// if (flag_userBrowseSomething) {
// JSONObject customContent = new JSONObject();
// try {
// customContent.put("用户级别", "VIP");
// customContent.put("用户积分", "300");
// customContent.put("来自应用", "ClientDemo");
// } catch (JSONException e) {
// e.printStackTrace();
// }
// message.setCustom_content(customContent);
// }
return message; // 注:必须将消息对象以返回值返回
}
});
设置 URL 链接点击监听:
V5ClientAgent.getInstance().setURLClickListener(new OnURLClickListener() {
@Override
public boolean onURLClick(Context context, V5ClientAgent.ClientLinkType type, String url) {
// TODO Auto-generated method stub
switch (type) {
case clientLinkTypeArticle: // 点击图文
break;
case clientLinkTypeURL: // 点击URL链接
break;
case clientLinkTypeEmail: // 点击电子邮件
break;
case clientLinkTypePhoneNumber: // 点击电话号码
break;
}
return false; // 是否消费了此点击事件
}
});
ClientLinkType
链接的类型包括:
public enum ClientLinkType {
clientLinkTypeURL, //网页链接
clientLinkTypeArticle, //图文链接
clientLinkTypeEmail, //电子邮箱
clientLinkTypePhoneNumber //电话
}
设置地图位置消息点击监听:
V5ClientAgent.getInstance().setLocationMapClickListener(OnLocationMapClickListener listener);
设置输入框底部功能按钮点击监听:
/**
* 点击对话输入框底部功能按钮
*/
V5ClientAgent.getInstance().setChatActivityFuncIconClickListener(new ChatActivityFuncIconClickListener() {
/**
* Activity点击底部功能按钮事件,icon参数值及含义如下:
* v5_icon_ques //常见问题
* v5_icon_relative_ques //相关问题
* v5_icon_photo //图片
* v5_icon_camera //拍照
* v5_icon_worker //人工客服
* 返回值代表是否消费了此事件
* @param icon 点击的图标名称(对应SDK目录下res/values/v5_arrays中v5_chat_func_icon的值)
* @return boolean 是否消费事件(返回true则不响应默认点击效果,由此回调处理)
*/
@Override
public boolean onChatActivityFuncIconClick(String icon) {
// 在这里可以实现点击事件的自定义处理,如下示例点击“人工客服”转指定客服
if (icon.equals("v5_icon_worker")) {
// 转到指定客服,参数:(组id, 客服id),参数为0则不指定客服组或者客服
V5ClientAgent.getInstance().transferHumanService(0, 0);
// 返回true来拦截SDK内默认的实现
return true;
}
return false;
}
});