conversationApi.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { API_BASE_URL } from "@/lib/config";
  2. export interface InitVisitorConversationPayload {
  3. visitorId: number;
  4. website?: string;
  5. referrer?: string;
  6. browser?: string;
  7. os?: string;
  8. language?: string;
  9. ipAddress?: string;
  10. chatMode?: string; // 对话模式:human(人工客服)、ai(AI客服)
  11. aiConfigId?: number; // AI 配置 ID(访客选择的模型配置,AI 模式时必需)
  12. }
  13. export interface InitVisitorConversationResult {
  14. conversation_id: number;
  15. status: string;
  16. }
  17. export async function initVisitorConversation(
  18. payload: InitVisitorConversationPayload
  19. ): Promise<InitVisitorConversationResult> {
  20. const res = await fetch(`${API_BASE_URL}/conversation/init`, {
  21. method: "POST",
  22. headers: { "Content-Type": "application/json" },
  23. body: JSON.stringify({
  24. visitor_id: payload.visitorId,
  25. website: payload.website,
  26. referrer: payload.referrer,
  27. browser: payload.browser,
  28. os: payload.os,
  29. language: payload.language,
  30. ip_address: payload.ipAddress,
  31. chat_mode: payload.chatMode,
  32. ai_config_id: payload.aiConfigId,
  33. }),
  34. });
  35. if (!res.ok) {
  36. throw new Error("初始化对话失败");
  37. }
  38. const data = await res.json();
  39. return {
  40. conversation_id: data.conversation_id ?? 0,
  41. status: data.status ?? "open",
  42. };
  43. }