优化实时聊天:稳定 WS、按 seq 增量同步,并修复访客评价推送
- 客服/访客 WebSocket 不再因切换会话反复重连,断线自动恢复 - 新增 after_seq 增量拉取,重连与消息空洞时 catch-up - 结束会话同时推送给访客,预览页可弹出评价并支持兜底状态同步
This commit is contained in:
+23
-1
@@ -125,7 +125,29 @@ export const getSessions = (params?: {
|
||||
if (params?.pageSize) search.set('pageSize', String(params.pageSize))
|
||||
return getList<Session>(`/sessions?${search}`)
|
||||
}
|
||||
export const getSession = (id: number) => get<{ session: Session; messages: Message[]; events: SessionEvent[]; pending_count: number }>(`/sessions/${id}`)
|
||||
export const getSession = (id: number) => get<{
|
||||
session: Session
|
||||
messages: Message[]
|
||||
events: SessionEvent[]
|
||||
pending_count: number
|
||||
max_seq?: number
|
||||
}>(`/sessions/${id}`)
|
||||
|
||||
/** 按 seq 增量拉取消息(重连 catch-up):seq > after_seq */
|
||||
export interface SessionMessagesSync {
|
||||
messages: Message[]
|
||||
after_seq: number
|
||||
max_seq: number
|
||||
has_more: boolean
|
||||
}
|
||||
export const getSessionMessages = (id: number, afterSeq = 0, limit = 200) => {
|
||||
const search = new URLSearchParams()
|
||||
if (afterSeq > 0) search.set('after_seq', String(afterSeq))
|
||||
if (limit > 0) search.set('limit', String(limit))
|
||||
const qs = search.toString()
|
||||
return get<SessionMessagesSync>(`/sessions/${id}/messages${qs ? `?${qs}` : ''}`)
|
||||
}
|
||||
|
||||
export const assignSession = (id: number, agentId: number) => post(`/sessions/${id}/assign`, { agent_id: agentId })
|
||||
export const claimSession = (id: number) => post(`/sessions/${id}/assign`, {})
|
||||
export const transferSession = (id: number, agentId: number) => post(`/sessions/${id}/transfer`, { agent_id: agentId })
|
||||
|
||||
Reference in New Issue
Block a user