Créez un agent à partir d’un modèle, en définissant éventuellement ses champs dans la même requête. Sans template, il part de zéro ; GET /api/v1/voice/catalog liste les modèles ainsi que les langues et les voix qu'accepte un agent. Les modèles sont rédigés en anglais et en chinois : pour une autre langue, envoyez system_prompt et first_message dans cette langue. Soit toute la requête est enregistrée, soit aucun agent n'est créé, si bien qu'une requête refusée peut être renvoyée une fois corrigée. Le dashboard_url de la réponse est la page de l'agent dans le tableau de bord, où vous pouvez parler au brouillon dans votre navigateur. Chaque agent fonctionne avec EvaSay ASR, EvaSay LLM et EvaSay TTS, choisis par EvaSay selon la langue et la charge de chaque appel et inclus dans le prix de l’appel ; il n’y a aucun compte d’autre fournisseur à configurer.
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..."
}'
Modifiez n’importe lequel de ces champs avec PATCH /api/v1/voice/agents/{id} :
| Champ | Remarques |
|---|---|
name, first_message, system_prompt | Texte |
status | published publie le brouillon comme nouvelle version ; draft arrête de prendre des appels |
language | L’une des 27 langues, par ex. en, zh, es, de, ou multi pour suivre l’appelant |
temperature | 0-100 |
max_duration_sec, silence_timeout_sec | Limites d’appel |
interruptible, end_call_enabled | Booléens |
confirm_details | Booléen ; relire les numéros et les noms et les faire confirmer |
ai_disclosure | Booléen, true par défaut ; avant son premier message, l’agent dit dans la langue de l’appel que l’appelant parle à une IA (omis quand le premier message le dit déjà) |
voicemail_detection | Booléen ; les appels sortants écoutent d’abord et s’arrêtent sur une messagerie |
voicemail_message | Laissé sur une messagerie, peut utiliser {{variables}} ; vide pour raccrocher |
transfer_number | Numéro de transfert, format international |
transfer_destinations | Jusqu’à 9 numéros de plus, [{name, number, when}] ; l’agent en choisit un selon when |
transfer_briefing | Booléen ; la personne qui décroche entend d’abord le résumé de l’appel par l’agent |
pronunciations | Jusqu’à 100 [{word, say, case_sensitive}] ; la voix dit say pour word |
idle_messages | Jusqu’à 3 rappels dits tour à tour à un appelant silencieux avant la fin de l’appel |
noise_reduction | Booléen ; le bruit de fond de l’appelant est filtré avant qu’il soit entendu |
recording_enabled | Booléen ; les appels sont enregistrés sur deux canaux (appelant à gauche, agent à droite) |
recording_consent | announce, ask (conservé seulement si l’appelant accepte) ou none |
recording_notice | L’annonce ou la question dite en premier ; vide pour le texte intégré dans la langue de l’appel |
handoffs | Jusqu’à 5 [{agent_id, when}] : d’autres agents à qui celui-ci peut confier un appel |
knowledge_base_id | L’une de vos bases de connaissances |
vocabulary_id | L’un de vos vocabulaires ; les appelants qui en prononcent les termes sont mieux compris |
voice_id | Un identifiant de voix intégrée EvaSay, ou l’une de vos voix clonées (clone:…) |
Les voix intégrées dépendent de la langue : le chinois a ming-designed-female-clear, ming-designed-female-warm (féminines), ming-designed-male-clear et ming-designed-male-friendly (masculines), les autres langues F1–F5 (féminines) et M1–M5 (masculines). Une voix intégrée qui ne parle pas la langue de l’agent devient la voix du même genre qui la parle. L’ancien nom de champ tts_voice_id est toujours accepté. Toute autre valeur de voice_id, ou une voix clonée pas encore prête, est refusée.
analysis_config définit ce qui est tiré de chaque appel une fois terminé : summary (par défaut true), summaryLanguage, successCriteria (ce qu'un appel réussi accomplit), fields (jusqu'à 20 {name, type, description} à extraire, type valant string, number ou boolean) et scorecard (jusqu'à 10 {name, description, weight}, poids de 1 à 5). Les résultats figurent dans l'analysis de l'appel et dans le webhook call.analyzed.
Modifier les champs d’un agent modifie son brouillon. Les appels continuent d’utiliser la version publiée jusqu’à ce que vous publiiez le brouillon avec POST /api/v1/voice/agents/{id}/publish (avec éventuellement une note), ou avec status: "published" dans le même PATCH. Chaque publication conserve une version numérotée ; published_version dans l’agent indique celle qu’utilisent les appels. Un appel reste sur la version en ligne à son début, donc publier pendant un appel ne le modifie pas. Les appels de test depuis le tableau de bord utilisent le brouillon.
GET /agents/{id}/versions liste les versions, et POST /agents/{id}/versions/{version}/restore revient en arrière : les nouveaux appels utilisent cette version et le brouillon devient celle-ci. Le nom de l’agent, son déploiement, l’apparence du widget et les notifications ne sont pas versionnés et changent aussitôt, tout comme les documents de sa base de connaissances.