أنشئ وكيلًا من قالب، ويمكنك ضبط حقوله في الطلب نفسه. من دون 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: تستخدم المكالمات الجديدة ذلك الإصدار وتصبح المسوّدة هي هو. أما اسم الوكيل ونشره ومظهر الودجت والإشعارات فلا إصدارات لها وتتغير فورًا، وكذلك مستندات قاعدة معرفته.