Maak een agent van een sjabloon en stel desgewenst in hetzelfde verzoek zijn velden in. Zonder template begint hij leeg; GET /api/v1/voice/catalog toont de sjablonen en de talen en stemmen die een agent aanneemt. Sjablonen zijn in het Engels en Chinees geschreven, dus stuur voor een andere taal system_prompt en first_message in die taal mee. Het hele verzoek wordt opgeslagen of er wordt geen agent gemaakt, dus een geweigerd verzoek kan na correctie opnieuw worden verstuurd. De dashboard_url in het antwoord is de pagina van de agent in het dashboard, waar u in de browser met het concept praat. Elke agent draait op EvaSay ASR, EvaSay LLM en EvaSay TTS, door EvaSay per gesprek gekozen op basis van taal en belasting en inbegrepen in de gespreksprijs; er zijn geen accounts van andere aanbieders om in te stellen.
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..."
}'
Werk elk van deze velden bij met PATCH /api/v1/voice/agents/{id}:
| Veld | Opmerkingen |
|---|---|
name, first_message, system_prompt | Tekst |
status | published publiceert het concept als nieuwe versie; draft neemt geen gesprekken meer aan |
language | Een van 27 talen, bijv. en, zh, es, de, of multi om de beller te volgen |
temperature | 0-100 |
max_duration_sec, silence_timeout_sec | Gesprekslimieten |
interruptible, end_call_enabled | Booleans |
confirm_details | Boolean; noemt nummers en namen terug en laat ze bevestigen |
ai_disclosure | Boolean, standaard true; vóór het eerste bericht zegt de agent in de taal van het gesprek dat de beller met een AI spreekt (weggelaten als het eerste bericht dat al zegt) |
voicemail_detection | Boolean; uitgaande gesprekken luisteren eerst en eindigen bij een voicemail |
voicemail_message | Achtergelaten op een voicemail, mag {{variables}} gebruiken; geen bericht om op te hangen |
transfer_number | Nummer om naar door te verbinden, in internationaal formaat |
transfer_destinations | Tot 9 extra nummers, [{name, number, when}]; de agent kiest er een op basis van when |
transfer_briefing | Boolean; wie het eerst opneemt hoort de samenvatting van het gesprek door de agent |
pronunciations | Tot 100 [{word, say, case_sensitive}]; de stem zegt say voor word |
idle_messages | Tot 3 herinneringen die om beurten tegen een zwijgende beller worden gezegd voordat het gesprek eindigt |
noise_reduction | Boolean; achtergrondgeluid van de beller wordt gefilterd voordat het gehoord wordt |
recording_enabled | Boolean; gesprekken worden in twee kanalen opgenomen (beller links, agent rechts) |
recording_consent | announce, ask (alleen bewaard als de beller akkoord gaat) of none |
recording_notice | De mededeling of vraag die als eerste wordt gezegd; leeg voor de ingebouwde tekst in de taal van het gesprek |
handoffs | Tot 5 [{agent_id, when}]: andere agents aan wie deze een gesprek mag overdragen |
knowledge_base_id | Een van je kennisbanken |
vocabulary_id | Een van je woordenlijsten; termen daaruit worden betrouwbaarder herkend als de beller ze zegt |
voice_id | Een id van een ingebouwde EvaSay-stem, of een van je gekloonde stemmen (clone:…) |
Ingebouwde stemmen hangen van de taal af: Chinees heeft ming-designed-female-clear en ming-designed-female-warm (vrouwelijk), ming-designed-male-clear en ming-designed-male-friendly (mannelijk), de andere talen hebben F1–F5 (vrouwelijk) en M1–M5 (mannelijk). Een ingebouwde stem die de taal van de agent niet spreekt, wordt vervangen door de stem van hetzelfde geslacht die dat wel doet. De oudere veldnaam tts_voice_id wordt nog steeds geaccepteerd. Elke andere waarde van voice_id, of een gekloonde stem die nog niet klaar is, wordt geweigerd.
analysis_config bepaalt wat er na elk gesprek wordt uitgewerkt: summary (standaard true), summaryLanguage, successCriteria (wat een geslaagd gesprek bereikt), fields (tot 20 {name, type, description} om te extraheren, met type als string, number of boolean) en scorecard (tot 10 {name, description, weight}, gewicht 1–5). De resultaten staan in de analysis van het gesprek en in de webhook call.analyzed.
Wijzigingen in de velden van een agent wijzigen zijn concept. Gesprekken blijven de gepubliceerde versie gebruiken totdat je het concept publiceert met POST /api/v1/voice/agents/{id}/publish (eventueel met een note), of met status: "published" in dezelfde PATCH. Elke publicatie bewaart een genummerde versie; published_version in de agent zegt welke gesprekken gebruiken. Een gesprek blijft op de versie die live was toen het begon, dus publiceren tijdens een gesprek verandert er niets aan. Testgesprekken vanuit het dashboard gebruiken het concept.
GET /agents/{id}/versions toont de versies, en POST /agents/{id}/versions/{version}/restore zet terug: nieuwe gesprekken gebruiken die versie en het concept wordt die versie. De naam van de agent, de implementatie, het uiterlijk van de widget en de meldingen hebben geen versies en veranderen meteen, net als de documenten van zijn kennisbank.