צרו סוכן מתבנית, ואם תרצו הגדירו את השדות שלו באותה בקשה. בלי template הוא מתחיל ריק; GET /api/v1/voice/catalog מציג את התבניות ואת השפות והקולות שסוכן מקבל. התבניות כתובות באנגלית ובסינית, ולכן לשפה אחרת שלחו system_prompt ו-first_message באותה שפה. או שכל הבקשה נשמרת או שלא נוצר סוכן בכלל, כך שאפשר לשלוח שוב בקשה שנדחתה אחרי שתוקנה. dashboard_url בתשובה הוא דף הסוכן בלוח הבקרה, שבו אפשר לדבר עם הטיוטה בדפדפן. כל סוכן פועל על 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; לפני ההודעה הראשונה הסוכן אומר בשפת השיחה שהמתקשר מדבר עם בינה מלאכותית (מושמט כשההודעה הראשונה כבר אומרת זאת) |
voicemail_detection | בוליאני; שיחות יוצאות מאזינות תחילה ומסתיימות כשמגיעים לתא קולי |
voicemail_message | נשארת בתא קולי, יכולה להשתמש ב-{{variables}}; ללא הודעה — מנתקים |
transfer_number | מספר להעברה, בפורמט בין-לאומי |
transfer_destinations | עד 9 מספרים נוספים, [{name, number, when}]; הסוכן בוחר אחד לפי when |
transfer_briefing | בוליאני; מי שעונה ראשון שומע את סיכום השיחה של הסוכן |
pronunciations | עד 100 פריטים [{word, say, case_sensitive}]; הקול אומר say במקום word |
idle_messages | עד 3 תזכורות שנאמרות לפי התור למתקשר שותק לפני שהשיחה מסתיימת |
noise_reduction | בוליאני; רעש הרקע של המתקשר מסונן לפני שהוא נשמע |
recording_enabled | בוליאני; שיחות מוקלטות בשני ערוצים (המתקשר בשמאל, הסוכן בימין) |
recording_consent | announce, ask (נשמרת רק אם המתקשר מסכים) או none |
recording_notice | ההודעה או השאלה שנאמרות ראשונות; ריק לשימוש בטקסט המובנה בשפת השיחה |
handoffs | עד 5 פריטים [{agent_id, when}]: סוכנים אחרים שהסוכן הזה רשאי למסור להם שיחה |
knowledge_base_id | אחד ממאגרי הידע שלכם |
vocabulary_id | אחד מאוצרות המילים שלכם; המונחים בו מזוהים בצורה אמינה יותר כשהמתקשר אומר אותם |
voice_id | מזהה של קול מובנה של EvaSay, או אחד מהקולות המשובטים שלכם (clone:…) |
הקולות המובנים תלויים בשפה: לסינית יש ming-designed-female-clear ו-ming-designed-female-warm (נשיים), ming-designed-male-clear ו-ming-designed-male-friendly (גבריים), ולשאר השפות F1–F5 (נשיים) ו-M1–M5 (גבריים). קול מובנה שאינו מדבר את שפת הסוכן מוחלף בקול מאותו מין שמדבר אותה. שם השדה הישן 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 של השיחה וב-webhook call.analyzed.
שינוי שדות של סוכן משנה את הטיוטה שלו. שיחות ממשיכות להשתמש בגרסה המפורסמת עד שתפרסמו את הטיוטה באמצעות POST /api/v1/voice/agents/{id}/publish (אפשר עם note), או באמצעות status: "published" באותה בקשת PATCH. כל פרסום שומר גרסה ממוספרת; published_version בסוכן אומר באיזו גרסה משתמשות השיחות. שיחה נשארת בגרסה שהייתה חיה כשהתחילה, ולכן פרסום באמצע שיחה לא משנה אותה. שיחות ניסיון מלוח הבקרה משתמשות בטיוטה.
GET /agents/{id}/versions מציג את הגרסאות, ו-POST /agents/{id}/versions/{version}/restore משחזר: שיחות חדשות ישתמשו בגרסה הזו והטיוטה תהפוך להיות היא. שם הסוכן, הפריסה, מראה הווידג'ט וההתראות אינם מנוהלים בגרסאות ומשתנים מיד, וכך גם מסמכי מאגר הידע שלו.