從範本建立 Agent,也可以在同一個請求裡設定欄位。不帶 template 時從空白開始;GET /api/v1/voice/catalog 列出所有範本,以及 Agent 可用的語言和聲音。範本只有英文和中文,其他語言請用該語言寫好 system_prompt 和 first_message 一起傳。整個請求要麼全部儲存,要麼不建立 Agent,所以被拒絕的請求修正後可以直接重送。回應裡的 dashboard_url 是這個 Agent 在主控台的頁面,可以在瀏覽器裡直接和草稿通話。所有 Agent 都使用 EvaSay ASR、EvaSay LLM 和 EvaSay TTS,由 EvaSay 依每通電話的語言和負載選擇,費用已包含在通話價格裡;不需要設定其他服務商的帳號。
curl https://evasay.com/api/v1/voice/agents \
-X POST \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"name": "Front desk",
"language": "en",
"first_message": "Hi, thanks for calling Sunrise Salon. How can I help?",
"system_prompt": "You are the front desk of Sunrise Salon..."
}'
用 PATCH /api/v1/voice/agents/{id} 更新以下欄位:
| 欄位 | 說明 |
|---|---|
name, first_message, system_prompt | 文字 |
status | published 把草稿發布為新版本;draft 停止接聽 |
language | 27 種語言之一,例如 en、zh、es、de,或用 multi 跟著來電者切換 |
temperature | 0-100 |
max_duration_sec, silence_timeout_sec | 通話限制 |
interruptible, end_call_enabled | 布林值 |
confirm_details | 布林值;複述號碼和姓名並請對方確認 |
ai_disclosure | 布林值,預設 true;在第一句話之前用通話語言告知對方正在和 AI 通話(第一句話已經說明時省略) |
voicemail_detection | 布林值;外撥時先聽對方,遇到語音信箱就結束 |
voicemail_message | 留在語音信箱的話,可用 {{variables}};留空則直接掛斷 |
transfer_number | 轉接號碼,國際格式 |
transfer_destinations | 最多再加 9 個號碼 [{name, number, when}];Agent 依 when 選擇 |
transfer_briefing | 布林值;接聽的人先聽到 Agent 對這通電話的摘要 |
pronunciations | 最多 100 筆 [{word, say, case_sensitive}];遇到 word 時聲音念成 say |
idle_messages | 最多 3 句提醒,依序說給沒出聲的來電者,最後一句之後結束通話 |
noise_reduction | 布林值;先過濾來電者的背景噪音再聽 |
recording_enabled | 布林值;以雙聲道錄音(左聲道來電者,右聲道 Agent) |
recording_consent | announce、ask(來電者同意才保留)或 none |
recording_notice | 最先說的告知或詢問;留空則用通話語言的內建說法 |
handoffs | 最多 5 筆 [{agent_id, when}]:這個 Agent 可以把通話交給的其他 Agent |
knowledge_base_id | 你的知識庫之一 |
vocabulary_id | 你的詞庫之一;來電者說到詞庫裡的詞時辨識更準 |
voice_id | EvaSay 內建聲音 ID,或你的複製聲音(clone:…) |
內建聲音依語言而定:中文有 ming-designed-female-clear、ming-designed-female-warm(女聲)、ming-designed-male-clear 和 ming-designed-male-friendly(男聲),其他語言有 F1–F5(女聲)和 M1–M5(男聲)。不會說 Agent 語言的內建聲音,會換成會說這種語言的同性別聲音。舊欄位名稱 tts_voice_id 仍然接受。其他 voice_id 值,以及還沒準備好的複製聲音,會被拒絕。
analysis_config 設定每通電話結束後要分析什麼:summary(預設 true)、summaryLanguage、successCriteria(怎樣算成功)、fields(最多 20 個要擷取的欄位 {name, type, description},type 為 string、number 或 boolean)和 scorecard(最多 10 條 {name, description, weight},權重 1–5)。結果在通話的 analysis 和 call.analyzed Webhook 裡。
修改 Agent 的欄位只會改到草稿。用 POST /api/v1/voice/agents/{id}/publish(可附 note)發布草稿,或在同一個 PATCH 裡帶 status: "published" 之前,通話都繼續使用已發布的版本。每次發布都會保留一個編號版本;Agent 的 published_version 表示通話使用哪一版。通話開始時是哪一版就一直用到結束,所以通話中發布不會影響它。工作台的試打使用草稿。
GET /agents/{id}/versions 列出版本,POST /agents/{id}/versions/{version}/restore 回復:新通話改用該版本,草稿也變成該版本。Agent 的名稱、部署位置、掛件外觀和通知不做版本管理,修改後立即生效,知識庫裡的文件也一樣。