聯絡人 (Contact) 介紹及串接
聯絡人(Contact)介紹及串接:以 sourceId 把自家系統使用者對應到終端使用者,建立與同步聯絡人的四種方式、Excel 批次匯入與實作建議。
聯絡人是什麼?
聯絡人(Contact)代表「跟 Agent 對話的終端使用者」,不需要 MaiAgent 帳號。企業把自家系統的使用者以 sourceId 對應到聯絡人後,AI 就能認得「誰在問」,正確回溯這個人的對話歷史與權限設定。聯絡人的概念、匿名與非匿名聯絡人的差別,以及後台操作,見使用者手冊聯絡人;和成員/角色的差別見角色和聯絡人的差異。本頁只寫 API 串接。
聯絡人上可以掛什麼
基本資料(name、email、avatar)
顯示在後台聯絡人列表與對話記錄
本頁下方 API 說明
對話歷史
跨裝置延續對話
前端帶 contactId 即生效
建立與同步聯絡人的四條路
身分同步 API(setup-contact-credentials)
使用者登入時同步、要綁工具憑證、既有系統批次補建
冪等(同 sourceId 不重複建立)、免 API Key。含 Web Chat 前端 auth 自動呼叫的版本。多數串接場景建議走這條,詳見聯絡人身分同步與 Token 更新
聯絡人 API(POST /api/v1/contacts/)
後端完全掌控聯絡人生命週期、需要建立時就設定 query_metadata
需要 API Key;更新用 PATCH /api/v1/contacts/{contact_id}/(只更新有傳入的欄位)。schema 見 API 文件-聯絡人
四條路建立的是同一種聯絡人,可混用(例如首次串接用批次匯入、日常登入走身分同步)。
聯絡人 API 的請求欄位
POST /api/v1/contacts/ 的請求內容(camelCase 與 snake_case 都接受):
name
是
顯示名稱,最長 255 字元
inboxes
是(二擇一)
[{"id": "<對話平台 ID>"}],聯絡人所屬的對話平台,必須屬於金鑰所在的組織;舊欄位 inbox(單一 {"id": …})仍接受,兩者都帶時以 inboxes 為準,都沒帶回 400
sourceId
否
您系統中的使用者 ID,最長 255 字元。同一個對話平台內不可重複,重複回 400;沒帶時這位聯絡人只能用 contactId 識別
email、phoneNumber、avatar
否
基本資料;avatar 可填完整網址或平台相對路徑
最小的有效請求是 {"name": "王小明", "inboxes": [{"id": "<對話平台 ID>"}]}。回應 201 帶完整聯絡人物件,其中 mcpCredentials、apiCredentials、contactConnectors、tags 是唯讀欄位,憑證要用各自的端點寫入。
聯絡人的歸屬與可見範圍
聯絡人屬於組織,不屬於建立它的 API 金鑰:同一組織內任何一把金鑰,只要綁定的成員具備聯絡人權限,都能讀取、更新與刪除同一位聯絡人;輪替金鑰後 contactId 與 sourceId 都照常可用。跨組織則完全看不到(回 404)。
成員登入後會不會變成聯絡人?
會,但不是在登入時:成員(含 SSO 登入的成員)在 MaiGPT、後台測試對話等以平台帳號發起對話時,平台會在該對話平台上為這位成員建立(或沿用)一位 sourceId 等於其使用者 ID、並連結到該帳號的聯絡人;用 API 金鑰呼叫 completions 而不帶 sender 時也是同一條規則(見省略 message.sender 時的身分)。因此掛在這位聯絡人上的 MCP/API 工具憑證與 queryMetadata,在成員自己的對話中同樣生效;聯絡人是依對話平台建立的,同一位成員在不同對話平台會有不同的聯絡人。成員的角色權限與聯絡人設定各自獨立,見角色(Role) 和 聯絡人(Contact) 的差異。
串接流程
三個步驟:
檢查對應:以企業系統的 user ID 查會員資料,確認是否已有 MaiAgent
contact_id建立或更新:沒有就建立(存回
contact_id);使用者改了姓名/Email、或權限異動時,同步更新聯絡人(PATCH /api/v1/contacts/{contact_id}/),確保後續對話的個人化內容與權限正確初始化 Web Chat:前端 config 帶
contactId,見 Web Chat 嵌入與 SDK
聯絡人批次匯入(Excel)
既有系統首次串接時,用 Excel 一次補建(或更新)大量聯絡人:
上傳匯入
POST /api/v1/contacts/bulk-import/(multipart/form-data,Authorization: Api-Key 認證,與聯絡人 API 相同):
file:填好的.xlsx(上限 10 MB、10,000 列)inboxes:收件匣 UUID 清單(至少一個);之後要走 Web Chat 登入同步,請確認包含對應的 Web Chat 收件匣inboxMode(選填,預設replace):replace時,每個匯入的聯絡人的收件匣集合會被整份取代為inboxes;merge時只加入inboxes,保留聯絡人既有的收件匣dryRun(選填,預設false):true時只解析與驗證檔案、回報將新增與更新的筆數,不寫入任何資料(回200;正式匯入回201)
回應:{ "created": N, "updated": M, "dryRun": false }
建議先以 dryRun=true 送一次,確認筆數符合預期再正式匯入。
匯入的比對與更新規則:
以(
Source ID、Email)為鍵做 upsert:命中既有聯絡人時更新姓名/電話/Query Metadata(空白儲存格不動),未命中則建立API Credentials以(聯絡人、工具)為鍵 upsert;檔案中未提及的工具憑證不會被動到整批在同一交易內完成:任一列格式錯誤(如欄位名不符、JSON 不合法)整批不寫入,錯誤訊息會標明列號
圖形化介面建立聯絡人
少量聯絡人可以在後台手動新增或以 Excel 批次匯入(含預覽),步驟見使用者手冊新增聯絡人與批次匯入聯絡人。建立後可在聯絡人列表複製聯絡人 ID,即 Web Chat 初始化參數 contactId。
實作建議
會員資料表加一個對應欄位(如
maiagent_contact_id,UUID、nullable),連同建立/更新時間一起記錄,確保企業 user ID ↔ Contact ID 的對應可追溯實作冪等:建立前先查對應,或直接走身分同步 API(
sourceId冪等,重跑不會產生重複聯絡人)記錄 API 呼叫 log,方便追查對應異常
非同步呼叫:聯絡人相關 API 與登入流程其他請求平行執行,失敗不阻擋使用者登入、下次登入重試
最後更新於
這有幫助嗎?