# 未读消息数回调
当客服人员回复了用户的消息后,用户可以收到未读消息的提醒,即使当前并没有展示 AIHelp 的页面。
你可以通过每五分钟一次的轮询作业或者第三方推送实现这个功能。
提示
此功能默认为关闭状态,如有需要,请联系 AIHelp 运营人员开启此功能。
# 轮询方案
# API
# startUnreadMessageCountPolling
调用此方法可以启动未读消息数量的轮询作业,请确保初始化成功之后再调用此方法。
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
}
});
}
});
方法内部每 5 分钟主动拉取一次当前用户的未读消息数量,并在以下两种情况时将结果返回给调用者:
1、有进行中客诉的用户收到新消息时,返回该用户累计未读的消息数量;
2、用户打开客服会话窗口时,返回数字 0 以标记用户已读当前消息。
# 参数释义
# onUnreadMessageCountCallback
- 类型:
OnMessageCountArrivedCallback
- 详情:必传参数。 未读消息数量的回调。
# 推送方案
下面以 Firebase 平台为例,说明如何利用第三方推送平台实现应用内未读消息的回调。
1、按照 Google 官方文档 (opens new window) 接入 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":"..."
}
}