客服可以给会话设置个人备注, 设置 快捷回复

建群自动话术
This commit is contained in:
yml2213
2026-05-27 06:43:24 +08:00
parent a002987784
commit 138f0514a9
15 changed files with 1462 additions and 34 deletions
+69 -2
View File
@@ -7,6 +7,7 @@ export interface ChatParticipant {
participant_type: 'user' | 'admin'
participant_id: number
role: 'renter' | 'owner' | 'support'
remark: string
display_name: string
avatar_url: string
last_read_at?: string
@@ -78,9 +79,9 @@ export async function markChatRead(id: number) {
return data.data
}
export async function fetchAdminChats(page = 1, pageSize = 50) {
export async function fetchAdminChats(page = 1, pageSize = 50, filter = 'all') {
const { data } = await apiClient.get<ApiResponse<PaginatedResult<ChatConversation>>>('/admin/chats', {
params: { page, page_size: pageSize },
params: { page, page_size: pageSize, filter },
})
return data.data
}
@@ -106,3 +107,69 @@ export async function markAdminChatRead(id: number) {
const { data } = await apiClient.post<ApiResponse<{ read: boolean }>>(`/admin/chats/${id}/read`)
return data.data
}
export interface SupportAdmin {
id: number
nickname: string
chat_count: number
}
export async function fetchSupportAdmins() {
const { data } = await apiClient.get<ApiResponse<SupportAdmin[]>>('/admin/chats/support-admins')
return data.data
}
export async function transferChat(id: number, toAdminId: number) {
const { data } = await apiClient.post<ApiResponse<{ transferred: boolean }>>(`/admin/chats/${id}/transfer`, {
to_admin_id: toAdminId,
})
return data.data
}
export async function updateChatRemark(id: number, remark: string) {
const { data } = await apiClient.put<ApiResponse<{ updated: boolean }>>(`/admin/chats/${id}/remark`, { remark })
return data.data
}
export interface QuickReply {
id: number
admin_user_id: number
title: string
content: string
sort_order: number
is_global: boolean
}
export async function fetchQuickReplies() {
const { data } = await apiClient.get<ApiResponse<QuickReply[]>>('/admin/chats/quick-replies')
return data.data
}
export async function createQuickReply(title: string, content: string, sortOrder = 0) {
const { data } = await apiClient.post<ApiResponse<QuickReply>>('/admin/chats/quick-replies', {
title,
content,
sort_order: sortOrder,
})
return data.data
}
export async function updateQuickReply(id: number, updates: { title?: string; content?: string; sort_order?: number }) {
const { data } = await apiClient.put<ApiResponse<{ updated: boolean }>>(`/admin/chats/quick-replies/${id}`, updates)
return data.data
}
export async function deleteQuickReply(id: number) {
const { data } = await apiClient.delete<ApiResponse<{ deleted: boolean }>>(`/admin/chats/quick-replies/${id}`)
return data.data
}
export async function fetchAutoWelcomeMessage() {
const { data } = await apiClient.get<ApiResponse<{ message: string }>>('/admin/chats/auto-welcome')
return data.data.message
}
export async function updateAutoWelcomeMessage(message: string) {
const { data } = await apiClient.put<ApiResponse<{ updated: boolean }>>('/admin/chats/auto-welcome', { message })
return data.data
}