未读消息数回调

未读消息数回调 #

当客服人员回复了用户的消息后,用户可以收到未读消息的提醒,即使当前并没有展示 AIHelp 的页面。

你可以通过每五分钟一次的轮询作业或者第三方推送实现这个功能。

注意:

未读消息数回调功能在 AIHelp 后台有开关配置,在具体接入之前,请先联系 AIHelp 运营人员。

实现方案 #

调用此方法可以启动未读消息数量的轮询作业,请确保初始化成功之后再调用此方法

方法内部每 5 分钟主动拉取一次当前用户的未读消息数量,并在以下两种情况时将结果返回给调用者:

1、有进行中客诉的用户收到新消息时,返回该用户累计未读的消息数量;

2、用户打开客服会话窗口时,返回数字 0 以标记用户已读当前消息。

需要注意的是,AIHelp 默认会使用设备 ID 作为用户唯一标识,你可以通过 updateUserInfo 将用户 ID 同步给 AIHelp,以保证未读消息数量的准确性。该方法的调用与 startUnreadMessageCountPolling 没有先后顺序。

该 API 仅接收一个参数:

  • OnMessageCountArrivedCallback

    必传参数。未读消息数量变化的回调接口。

// Android 代码示例如下
AIHelpSupport.setOnAIHelpInitializedCallback(new OnAIHelpInitializedCallback() {
    @Override
    public void onAIHelpInitialized() {

        // Sync userId info to AIHelp via updateUserInfo API
        AIHelpSupport.updateUserInfo(new UserConfig.Builder().setUserId("uid").build());
        
        // Start polling
        AIHelpSupport.startUnreadMessageCountPolling(new OnMessageCountArrivedCallback() {
            @Override
            public void onMessageCountArrived(int msgCount) {
                // write your code here
            }
        });
        
    }
});

下面以 Android 平台为例,说明如何利用第三方推送平台实现应用内未读消息的回调。

1、按照 Google 官方文档 接入 Firebase;

2、在代码中调用推送相关的方法,将用户的推送标识以及推送平台告知 AIHelp:

AIHelpSupport.updateUserInfo(new UserConfig.Builder().setUserId('uid').build());
AIHelpSupport.setPushTokenAndPlatform("PUSH_TOKEN", PushPlatform.FIREBASE);

3、在自定义 FirebaseMessagingService.java 中重写 onMessageReceived 方法,并在应用处于前台时解析 AIHelp 的推送:

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    // Check if current application is foreground and visible to users
    if (isAppForeground()) {
        if (remoteMessage.getData() != null) {
            if ("yes".equals(remoteMessage.getData().get("elva"))) {
                // alert your users that he/she has received a new message
            }
        }
    }
}

4、AIHelp 推送数据格式如下:

{
    "to":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
        "body":"This is your new message content",
        "title":"customer service sends you a message.",
        "sound":"Enabled",
        "priority":"high",
        "uid":"..."
    },
    "data":{
        "body":"This is your new message content",
        "title":"customer service sends you a message.",
        "uid":"...",
        "elva":"yes",
        "entry_tag":"..."
    }
}