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;
    }
});

results matching ""

    No results matching ""

    results matching ""

      No results matching ""