# 未读消息
当客服人员回复了用户的消息后,用户可以收到未读消息的提醒,即使当前并没有展示 AIHelp 的页面。
你可以通过主动拉取或者第三方推送实现这个功能。
# 主动拉取
# API
# fetchUnreadMessageCount / fetchUnreadTaskCount
调用以上方法可分别拉取当前用户的未读客诉消息或未读工单的数量。
AIHelpSupport.fetchUnreadMessageCount();
AIHelpSupport.fetchUnreadTaskCount();
你可以在任意时间调用该 API 查询当前用户的未读信息,但请注意:
- 上述方法内部都有默认的频率限制:
在限制期内的重复调用,会返回上一次的查询结果;在开发阶段,可以通过日志查看距离下一次有效调用的时间。
- 该方法会在以下情况返回 0,以通知调用者当前用户没有未读消息:
- 用户没有进行中客诉或进行中工单时;
- 用户打开客服会话窗口或已读所有工单信息时;
# 事件
通过监听 MESSAGE_ARRIVAL
以及 UNREAD_TASK_COUNT
事件,你可以收到当前用户的未读消息情况:
AsyncEventListener eventListener = (jsonEventData, ack) -> {
// `jsonData`: { "eventType": 5, "msgCount": 1 }
// `jsonData`: { "eventType": 8, "taskCount": 1 }
};
AIHelpSupport.registerAsyncEventListener(EventType.MESSAGE_ARRIVAL, eventListener);
AIHelpSupport.registerAsyncEventListener(EventType.UNREAD_TASK_COUNT, eventListener);
# 推送方案
下面以 Firebase 平台为例,说明如何利用第三方推送平台实现应用内未读消息的回调。
1、按照 Google 官方文档 (opens new window) 接入 Firebase;
2、在代码中调用推送相关的方法,将用户的推送标识以及推送平台告知 AIHelp:
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":"..."
}
}