Bir şablondan ajan oluşturun; isterseniz alanlarını aynı istekte ayarlayın. template verilmezse boş başlar; GET /api/v1/voice/catalog şablonları ve bir ajanın alabileceği dilleri ve sesleri listeler. Şablonlar İngilizce ve Çince yazılmıştır; başka bir dil için system_prompt ve first_message alanlarını o dilde gönderin. Ya isteğin tamamı kaydedilir ya da hiç ajan oluşturulmaz; bu yüzden reddedilen bir istek düzeltildikten sonra yeniden gönderilebilir. Yanıttaki dashboard_url, ajanın paneldeki sayfasıdır; orada taslakla tarayıcıdan konuşabilirsiniz. Her ajan, EvaSay'in her arama için dile ve yüke göre seçtiği ve arama fiyatına dahil olan EvaSay ASR, EvaSay LLM ve EvaSay TTS üzerinde çalışır; ayarlanacak başka sağlayıcıların hesapları yoktur.
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..."
}'
Bu alanlardan herhangi birini PATCH /api/v1/voice/agents/{id} ile güncelleyin:
| Alan | Notlar |
|---|---|
name, first_message, system_prompt | Metin |
status | published taslağı yeni bir sürüm olarak yayımlar; draft aramaları kabul etmeyi bırakır |
language | 27 dilden biri, örn. en, zh, es, de, veya arayanı izlemek için multi |
temperature | 0-100 |
max_duration_sec, silence_timeout_sec | Arama sınırları |
interruptible, end_call_enabled | Boole değerleri |
confirm_details | Boole; sayıları ve adları geri okur ve onaylatır |
ai_disclosure | Boole, varsayılan true; ilk mesajından önce ajan, arama dilinde arayanın bir yapay zekâyla konuştuğunu söyler (ilk mesaj bunu zaten söylüyorsa atlanır) |
voicemail_detection | Boole; giden aramalar önce dinler ve bir telesekretere ulaşınca biter |
voicemail_message | Telesekretere bırakılır, {{variables}} kullanabilir; telefonu kapatmak için boş bırakın |
transfer_number | Aktarılacak numara, uluslararası biçimde |
transfer_destinations | En fazla 9 numara daha, [{name, number, when}]; ajan when değerine göre birini seçer |
transfer_briefing | Boole; ilk açan kişi ajanın görüşme özetini duyar |
pronunciations | En fazla 100 öğe [{word, say, case_sensitive}]; ses word yerine say der |
idle_messages | Arama bitmeden önce sessiz kalan arayana sırayla söylenen en fazla 3 hatırlatma |
noise_reduction | Boole; arayanın arka plan gürültüsü duyulmadan önce süzülür |
recording_enabled | Boole; aramalar iki kanalda kaydedilir (arayan solda, ajan sağda) |
recording_consent | announce, ask (yalnızca arayan kabul ederse saklanır) veya none |
recording_notice | Önce söylenen bildirim veya soru; boşsa arama dilindeki yerleşik metin |
handoffs | En fazla 5 öğe [{agent_id, when}]: bu ajanın aramayı devredebileceği diğer ajanlar |
knowledge_base_id | Bilgi tabanlarınızdan biri |
vocabulary_id | Sözlüklerinizden biri; arayan terimleri söylediğinde daha güvenilir tanınır |
voice_id | Yerleşik bir EvaSay sesinin kimliği veya klonlanmış seslerinizden biri (clone:…) |
Yerleşik sesler dile bağlıdır: Çincede ming-designed-female-clear ve ming-designed-female-warm (kadın), ming-designed-male-clear ve ming-designed-male-friendly (erkek) vardır; diğer dillerde F1–F5 (kadın) ve M1–M5 (erkek) bulunur. Ajanın dilini konuşmayan yerleşik bir ses, o dili konuşan aynı cinsiyetteki sesle değiştirilir. Eski tts_voice_id alan adı hâlâ kabul edilir. voice_id için başka herhangi bir değer veya henüz hazır olmayan klonlanmış bir ses reddedilir.
analysis_config, her arama bittiğinde nelerin çıkarılacağını belirler: summary (varsayılan true), summaryLanguage, successCriteria (başarılı bir aramanın ulaştığı sonuç), fields (çıkarılacak en fazla 20 {name, type, description}; type değeri string, number veya boolean) ve scorecard (en fazla 10 {name, description, weight}, ağırlık 1–5). Sonuçlar aramanın analysis alanında ve call.analyzed webhook'unda yer alır.
Bir ajanın alanlarını değiştirmek taslağını değiştirir. Taslağı POST /api/v1/voice/agents/{id}/publish ile (isteğe bağlı olarak bir note ile) ya da aynı PATCH içinde status: "published" ile yayımlayana kadar aramalar yayımlanmış sürümü kullanmaya devam eder. Her yayımlama numaralı bir sürümü saklar; ajandaki published_version aramaların hangisini kullandığını söyler. Bir arama başladığında yayında olan sürümde kalır; bu yüzden arama sırasında yayımlamak onu değiştirmez. Panelden yapılan test aramaları taslağı kullanır.
GET /agents/{id}/versions sürümleri listeler, POST /agents/{id}/versions/{version}/restore ise geri alır: yeni aramalar o sürümü kullanır ve taslak o sürüm olur. Ajanın adı, dağıtımı, widget görünümü ve bildirimleri sürümlenmez ve hemen değişir; bilgi tabanının belgeleri de öyledir.