自定义事件

为了让用户在使用七鱼 SDK 时拥有更大的灵活性,我们将持续添加更多的事件自定义响应接口。

URL链接点击响应

如果用户或者客服发送的文本消息中带有 URL 链接,SDK 将会解析出该链接。用户点击这个链接后,SDK 默认会打开系统的浏览器,并访问这个 URL。同时 SDK 提供了一个配置选项,允许应用自己处理这个点击事件,用于在应用的内置浏览器中打开链接,以及做钓鱼网址过滤等等场景。

设置自定义的链接点击响应需要在初始化 SDK 时,为 YSFOptionsonMessageItemClickListener 赋值:

// 初始化代码
// YSFOptions options = new YSFOptions();
OnMessageItemClickListener messageItemClickListener = new OnMessageItemClickListener() {
    // 响应 url 点击事件
    public void onURLClicked(Context context, String url) {
        // 打开内置浏览器等动作
    }
}
options.onMessageItemClickListener = messageItemClickListener;

// ... 其他初始化代码
// Unicorn.init(this, "你的appid", options, new UILImageLoader());

咨询界面退出事件监听(只适用于 Activity 接入方式)

SDK 在 V5.4.0 版本开放了咨询界面返回事件的监听,当用户从咨询界面退出的时候会回调相关方法通知 APP ,具体请查看如下代码:

//当我们在设置 YSFOption 的时候,设置方式如下
YSFOptions ysfOptions = new YSFOptions();
	options.sdkEvents = new SDKEvents();
	options.sdkEvents.eventProcessFactory = new EventProcessFactory() {
    	@Override
    	public UnicornEventBase eventOf(int eventType) {
        	if (eventType == 3) {
           	 return new DemoLeaveActivityEvent();
        	}
       		return null;
    	}
};

//DemoLeaveActivityEvent 实现方式
public class DemoLeaveActivityEvent implements UnicornEventBase<String> {

    @Override
    public void onEvent(String s, final Context context, EventCallback<String> callback) {
        AlertDialog dialog = new AlertDialog.Builder(context)
                .setMessage("是否退出会话界面?")
                .setPositiveButton("是", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if (context instanceof Activity) {
                            ((Activity) context).finish();
                        }
                    }
                })
                .setNegativeButton("否", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                }).create();
        dialog.show();
    }
}

从上面的代码中我们可以看到,我们首先在设置 YSFOption 的时候,监听 SDKEvent 中的 eventType = 3 的回调,当用户离开咨询界面的时候 SDK 会回调 eventOf 方法且 eventType = 3。所以我们在 eventType = 3 的时候返回了 DemoLeaveActivityEvent ,然后 SDK 会调用 DemoLeaveActivityEvent 中的 onEvent 方法,这样我们就可以在 onEvent 方法中去处理用户离开咨询界面的逻辑,上面的代码中可以看到,我们在用户离开咨询界面的时候进行了弹框。