GET /api/v1/voice/calls/{id} 傳回通話的狀態、時長、扣除的點數、摘要、分析和逐字稿。用 GET /api/v1/voice/calls?agent_id=&status=&channel=&user_id=&page= 列出通話(user_id:你給這個人的 ID,來自網頁通話權杖)。其中的 turns 是通話的逐輪除錯紀錄:從來電者說完到聽到回答,時間花在哪裡,單位毫秒——waitMs(說話結束)、sttMs(辨識)、llmMs(模型第一個字,每輪函式呼叫多一個)、ttsMs(聲音第一個音)、firstAudioMs(聽到回答)——以及呼叫的函式、打斷和錯誤。通話頁面也會顯示。
開啟 recording_enabled 後,每通電話會錄成雙聲道 WAV:左聲道是來電者,右聲道是 Agent,取樣率與通話相同。recording_consent: "announce" 時 Agent 先告知正在錄音;"ask" 時先詢問,來電者同意才保留錄音(沒有回答視為不同意);"none" 時什麼都不說。請確認你和來電者所在地的法律要求。
錄音存放在 EvaSay 的儲存空間,或你在 整合 → Webhook 與通知 → 錄音儲存 設定的 S3 相容儲存貯體(AWS S3、Cloudflare R2、Google Cloud Storage、Supabase、MinIO)。執行通話的 Worker 直接把檔案上傳到儲存貯體。錄音存好後,GET /api/v1/voice/calls/{id} 會傳回一小時內有效的 recordingUrl,以及 recording.status(recording、stored、declined 或 failed)。
DELETE /api/v1/voice/calls/{id} 刪除一通已結束的通話,連同逐字稿、錄音(EvaSay 儲存空間或你自己的儲存桶中的)、分析和 Webhook 投遞紀錄。已用的 Credits 仍保留在點數紀錄中。暫時無法刪除的通話會回傳 409,code 為 call_not_deletable_yet:通話仍在進行或剛結束、仍在結算、錄音可能仍在上傳,或欠著餘額不足以支付的 Credits(請先儲值)。
有人要求刪除自己的資料時,使用 POST /api/v1/voice/calls/delete-by-caller:傳 { "phone_number": "+14155550123" } 會刪除這個號碼的所有通話(撥入看來電號碼,撥出看被叫號碼),傳 { "user_id": "..." } 會刪除權杖中帶這個 user_id 的所有網頁通話。回傳 { "deleted": 12, "kept_back": { "settling": 1 }, "more": false }:每次最多 200 通,more 為 true 時再呼叫一次;kept_back 中的通話稍後再刪。號碼若在拒撥名單中,會繼續保留在名單上。工作台的 通話記錄 → 刪除來電者的資料 做的是同一件事。