聯絡人身份同步與 Token 更新
企業系統在新增使用者與每次登入時,透過 setup-contact-credentials 同步聯絡人身份與更新 Token 憑證
企業系統將 Web Chat(含 MaiGPT 模式)嵌入自家產品後,需要讓 AI 知道「誰在問」:AI 才能回溯該使用者的對話歷史,並在呼叫 MCP 工具時以該使用者的權限存取企業系統的 API。
setup-contact-credentials 這支 API 用一次呼叫完成兩件事:
建立或更新「企業系統帳號 ↔ MaiAgent 聯絡人(Contact)」的對應關係
將該使用者的 Access Token 寫入聯絡人 MCP 憑證,讓 AI 助理能以他的身份呼叫工具
前端 auth 與後端串接怎麼選
這支 API 也有前端版:embed SDK 的 auth 設定(見 Web Chat 嵌入與 SDK)底層就是由聊天視窗自動呼叫同一支 API。兩條路建立的是同一套聯絡人(sourceId 相同即同一人),差別只在誰來呼叫:
呼叫者
使用者的瀏覽器
您的後端伺服器
整合成本
低:config 加一個 auth 物件
中:登入流程加一次 API 呼叫+存 contactId
Token 保密性
mcpCredentials 會出現在前端頁面,使用者可在原始碼看到自己的 token
Token 不經過前端
適合
只需識別使用者、保留跨裝置對話
要綁 MCP 憑證讓 AI 以使用者權限呼叫 API
一、呼叫時機
二、API 規格
Method
POST
URL
https://api.maiagent.ai/api/v1/web-chats/{webChatId}/setup-contact-credentials/
認證
無需 API Key(公開端點,僅需知道 WebChat ID)
Content-Type
application/json
速率限制
每 IP 每分鐘 30 次
Request Body
sourceId
✅
企業系統中使用者的唯一識別碼。同一個 sourceId 重複呼叫會更新而非重複建立。 請使用不可猜測的值(如 UUID),見下方安全提醒
mcpCredentials.toolId
要綁定憑證的 MCP 工具 ID(不使用 MCP 工具時整個 mcpCredentials 可省略)。只接受 MCP 類型的工具,帶 API 工具 ID 會回 400;API 工具憑證見工具憑證的兩種類型
mcpCredentials.headers
要帶給 MCP Server 的 HTTP headers,讓 AI 以該使用者身份呼叫工具
embedOrigin
嵌入頁面的 Origin。WebChat 有設定「允許嵌入網域」時,伺服器對伺服器的呼叫(沒有瀏覽器 Origin header)需帶此欄位通過驗證
Response(200 OK)
回傳的 contactId 需要儲存在企業系統的會員資料中,前端初始化 Web Chat 時帶入。
sourceId 與 contactId 都應視為身份憑證:本 API 是公開端點,知道 webChatId 與某人的 sourceId 就能取得他的 contactId;而拿到 contactId 就能以該使用者身份對話、看到他的對話歷史。因此:
sourceId使用不可猜測、不可枚舉的值(如 UUID),不要用流水號、Email 或手機號碼contactId只在登入後的頁面輸出給該使用者本人,不放進公開頁面原始碼為 Web Chat 設定允許嵌入網域清單(提供網域清單給 MaiAgent 對接窗口),縮小可呼叫本 API 的來源(見 Web Chat 嵌入與 SDK)
curl 範例
三、登入流程整合位置
首次登入
後續登入/Token 刷新
會員資料表建議新增一個欄位:
maiagent_contact_id
UUID / VARCHAR(36),nullable
對應的 MaiAgent 聯絡人 ID,首次呼叫後儲存
Token 過期處理: 當 Token 過期或刷新時,只需再次呼叫同一支 API、帶入新的 Token。同一個 sourceId 會自動更新既有聯絡人的憑證,不會重複建立。
失敗不應阻擋登入: 本 API 呼叫失敗時,不應阻擋使用者登入企業系統。建議設為非同步呼叫,失敗時記錄 log 並在下次登入時重試。
四、既有使用者批次補建
大量補建建議改用批次匯入:後台與 API 都支援以 Excel 一次匯入(上限 10,000 列),可同時帶入 query_metadata 與 API 工具憑證,見聯絡人批次匯入。以下逐筆呼叫的方式適合順著登入流程漸進補建。
既有系統首次串接時,可對現有使用者逐筆呼叫本 API 補建聯絡人對應:
逐筆帶入各使用者的
sourceId與name,把回傳的contactId寫回會員資料表sourceId是冪等的:補建腳本可以安全重跑,不會產生重複聯絡人補建當下若拿不到使用者的 Access Token,可先不帶
mcpCredentials,待該使用者下次登入時再由登入流程補上注意速率限制(每 IP 每分鐘 30 次),大量補建請控制節奏
五、同步聯絡人資料(選用)
若要將使用者的部門、角色、服務等級等資訊同步給 MaiAgent(AI 助理會自動讀取這些資訊、提供個人化回應),請使用聯絡人 API:
Method
PATCH
URL
https://api.maiagent.ai/api/v1/contacts/{contactId}/
認證
Authorization: Api-Key <<您的 API Key>>
Content-Type
application/json
所有欄位皆為選填,PATCH 只更新有傳入的欄位,未傳入的不會被清空
metadata欄位本身是全量替換:傳入的陣列會完整覆蓋舊的,請帶入完整的 metadata 陣列可以每次登入時呼叫(確保資料最新),也可以只在使用者修改個人資料時呼叫
六、登出與憑證註銷
登出時有前端、後端兩件事,作用範圍不同:
前端 MaiAgent.auth.signOut()
後端刪除工具憑證(本節)
作用
聊天視窗回到匿名狀態、清除 contextData
從 MaiAgent 移除該聯絡人的 MCP/API 工具憑證
工具憑證
不會動到已寫入的憑證
憑證即刻刪除,AI 無法再以該使用者身份呼叫工具
若您的系統登出時已在自家認證伺服器註銷該 Access Token,MaiAgent 儲存的憑證即已失效;後端刪除憑證屬於縱深防禦,建議一併執行,避免失效 Token 殘留在系統中。
刪除憑證 API
MCP 工具
DELETE /api/v1/contacts/{contactId}/mcp-credentials/{credentialId}/
API 工具
DELETE /api/v1/contacts/{contactId}/api-credentials/{credentialId}/
認證方式為 Authorization: Api-Key <<您的 API Key>>(與聯絡人 API 相同),成功回 204 No Content:
刪除後聯絡人本身、對話歷史與自訂屬性都保留;使用者下次登入時,登入流程呼叫 setup-contact-credentials 即會重建憑證(同一組聯絡人與工具為更新/重建,不會重複)。
取得 credentialId
setup-contact-credentials 只回傳 contactId,不包含憑證 ID。取得 credentialId 的方式:
GET /api/v1/contacts/{contactId}/(Api-Key認證)回應中的mcpCredentials與apiCredentials陣列,每筆含id與tool資訊,依tool.id找到目標憑證的id透過聯絡人 API 建立憑證時,回應是完整的聯絡人物件,可在建立當下就把憑證
id存起來
回應中的憑證 headers 依呼叫者身份可能以遮罩形式顯示;註銷流程只需要 id,不受影響。
七、工具憑證的兩種類型
聯絡人可以綁定兩種工具的專屬憑證,設定入口不同:
用途
AI 以使用者身份呼叫 MCP Server
AI 以使用者身份呼叫 API 工具
登入時同步
✅ 本頁的 setup-contact-credentials(免 API Key)
✖ 不支援(帶 API 工具 ID 會 400)
聯絡人 API
POST /api/v1/contacts/{contactId}/mcp-credentials/
POST /api/v1/contacts/{contactId}/api-credentials/
單筆更新/刪除
PATCH/DELETE /api/v1/contacts/{contactId}/mcp-credentials/{credentialId}/
PATCH/DELETE /api/v1/contacts/{contactId}/api-credentials/{credentialId}/
聯絡人 API 的兩個憑證端點都需要 Api-Key 認證,body 格式相同:
同一組(聯絡人、工具)重複呼叫為更新,不會重複建立。單筆更新/刪除端點以 credentialId 指定目標憑證,取得方式見取得 credentialId。
八、錯誤處理
400
必填欄位缺失(如 sourceId);Origin 不在允許嵌入網域清單內;toolId 不存在或不可用
檢查 request body 與 WebChat 設定
404
WebChat ID 不存在
確認 webChatId 正確
429
超過速率限制(每 IP 每分鐘 30 次)
降低呼叫頻率後重試
500
伺服器異常
稍後重試,若持續發生請聯繫 MaiAgent 團隊
九、常見問題
最後更新於
這有幫助嗎?
