Käytä OpenAPI-sopimusta integraatioasiakkaan luomiseen. Julkinen API, paneeli ja MCP-hallintapäätepiste toimivat samoilla työtilan resursseilla ja oikeuksilla.
| Ominaisuus | Endpoint |
|---|---|
| Uudelleenkäytettävät työkalut | GET / POST /api/v1/voice/tools |
| Lue / päivitä / poista työkalu | GET / PATCH / DELETE /api/v1/voice/tools/{id} |
| Esikatsele tai testaa työkalu | POST /api/v1/voice/tools/{id}/test |
| Sido työkalut agenttiin | PUT /api/v1/voice/agents/{id}/tools |
| Tietopankit | GET / POST /api/v1/voice/knowledge-bases |
| Lue / päivitä / poista tietopankki | GET / PATCH / DELETE /api/v1/voice/knowledge-bases/{id} |
| Lisää / listaa asiakirjoja | POST / GET /api/v1/voice/knowledge-bases/{id}/documents |
| Lue / poista asiakirja | GET / DELETE /api/v1/voice/knowledge-bases/{id}/documents/{doc_id} |
| Puhelutapahtumien tilaukset | GET / POST /api/v1/voice/webhooks |
| Lue / päivitä / poista tilaus | GET / PATCH / DELETE /api/v1/voice/webhooks/{id} |
| Lähetä allekirjoitettu testitapahtuma | POST /api/v1/voice/webhooks/{id}/test |
| Löydä etä-MCP-työkalut | POST /api/v1/voice/mcp/discover |
| MCP-hallintapäätepiste | /api/v1/voice/mcp |
Rekisteröi HTTP-työkalu, joka kysyy CRM-sovittimeltasi:
{
"name": "lookup_customer",
"description": "Find a customer after confirming their customer ID.",
"kind": "http",
"url": "https://crm.example.com/customers/{{customer_id}}",
"method": "GET",
"read_only": true,
"credential_ref": "crm",
"input_schema": {
"type": "object",
"properties": { "customer_id": { "type": "string" } },
"required": ["customer_id"],
"additionalProperties": false
},
"response_path": "data"
}
POST /tools palauttaa { "data": { "id": "TOOL_ID", ... } }. Sido sen määritelmä agenttiin komennolla PUT /agents/AGENT_ID/tools ja { "tool_ids": ["TOOL_ID"] }. Tämä korvaa koko työkalulistan tilannekuvilla; sido uudelleen, kun kirjaston työkalu muuttuu. Kirjastomääritelmän poistaminen säilyttää olemassa olevat tilannekuvat. Voit myös lukea ja korvata sisäisiä määritelmiä agentti-API:n tools-kentällä. Käytä analysis_config- ja widget_config-kenttiä analyysin ja widgetin määrittämiseen agentti-API:n kautta.
Työkalu voi käyttää GET-, POST-, PUT-, PATCH- tai DELETE-menetelmää. query ja request_body hyväksyvät sisäkkäisiä JSON-malleja, kuten { "customer": { "id": "{{customer_id}}" } }. Kokonainen paikkamerkki säilyttää alkuperäisen JSON-tyypin. URL-paikkamerkit koodataan, ja ne saavat esiintyä vain kiinteän julkisen HTTPS-isännän jälkeen. Ilman request_body-kenttää muut kuin GET-työkalut saavat { "arguments": {...}, "call": { "callId": "...", "agentId": "...", "toolCallId": "...", "idempotencyKey": "..." } }. response_path valitsee kentän pistenotaatiolla. Yksinkertaiset parameters hyväksytään edelleen; input_schema tukee lisäksi sisäkkäisiä objekteja, taulukoita, luettelotyyppejä ja numeerisia rajoja. Ulkoisia skeemaviittauksia ja säännöllisiä lausekkeita ei hyväksytä.
static_args: arvot, jotka lähetetään jokaisen kutsun mukana riippumatta siitä, mitä malli kirjoittaa, kuten myymälän tunnus; ne täyttävät myös {{name}} osoitteessa ja rungossa.extract: [{name, path}] säilyttää kenttiä funktion vastauksesta (data.id) myöhempien funktioiden {{name}}-arvoksi, jotta haun customer_id voi päätyä seuraavaan tilaukseen ilman, että malli toistaa sen. Aloitushaun kentät säilytetään samalla tavalla.reject_when: enintään 5 sääntöä {on: caller|agent, pattern, negate}; niin kauan kuin kaikki pätevät viimeisiin sanoihin, funktiota ei suoriteta ja agentti saa reject_message-viestin.model_says: jokaisella kutsulla malli kirjoittaa yhden lauseen, joka sanotaan funktion suorituksen aikana kiinteän speak_before-arvon sijaan.Yhdistä sovellus kohdassa Integraatiot → Webhookit ja ilmoitukset → Yhdistetyt sovellukset ja käytä sitten agentin Tietämys ja työkalut -välilehden toimintoa „Lisää valmis funktio”; oma endpoint ei ole tarpeen:
check_availability (vapaat ajat tiettynä päivänä) ja book_appointment (varaa soittajan valitseman ajan). Google Calendarin ajat noudattavat asettamaasi aikavyöhykettä, aukiolopäiviä, tunteja ja tapaamisen kestoa; Cal.com käyttää tapahtumatyypin omaa saatavuutta ja asettamaasi varasähköpostiosoitetta, kun soittaja ei anna sellaista.save_to_sheet, joka lisää rivin luettelemillasi sarakkeilla sekä puhelun tunnuksella ja ajalla.notify_team, joka julkaisee agentin kirjoittaman viestin Slack-kanavalle (incoming webhook).EvaSayn ohjaustaso suorittaa nämä funktiot yhdistämälläsi tilillä; ei worker eikä agentin määritelmä pidä sovelluksen tunnistetietoja. Agentin lukeminen API:n kautta näyttää ne muodossa kind: "app" (kentillä app, action, connection_id, app_config); lähetä ne takaisin muuttamattomina korvatessasi tools-kentän, jotta ne säilyvät. Sovellukset yhdistetään vain paneelissa.
Aseta run_at_start: true yhdelle agentin työkalulle, niin sitä kutsutaan jokaisen puhelun alussa, ennen kuin agentti tervehtii tai vastaa. Parametrit nimeltä caller_number, called_number, direction, channel tai call_id täytetään sille. Sen palauttamat kentät täyttävät {{variables}} kentissä first_message, system_prompt ja idle_messages (yksi taso alempana olevat kentät muodossa {{customer.name}}), ja koko vastaus annetaan agentille taustatietona. Muuttujia sisältävä tervehdys odottaa vastausta enintään 3 sekuntia; mitä ei löydy, jää tyhjäksi. Yksi työkalu agenttia kohti voi suorittua alussa.
Tunnistetiedot määritetään palvelinympäristössä työtilallesi ja kohteellesi; pyydä osoitteesta support@evasay.com credential_ref-viitteen luontia. Älä laita API-avaimia agenttimäärittelyihin, otsakkeisiin, kehotteisiin tai työkaluparametreihin. Sovittimesi voi pitää CRM-tunnistetiedot omassa ympäristössään.
Esikatsele työkalu ennen pyyntöjen tekemistä liiketoimintajärjestelmään:
{
"arguments": { "customer_id": "customer-123" },
"dry_run": true,
"mock_result": { "name": "Alex", "order_status": "shipped" }
}
Esikatselu validoi parametrit ja näyttää muodostetun pyynnön; se ei käy keskustelua eikä ota yhteyttä liiketoimintajärjestelmään. Aseta dry_run=false todellista suoritusta varten. Todellinen kirjoitustesti vaatii myös confirmed=true ja idempotency_key (8–128 kirjainta, numeroa, pistettä, alaviivaa, kaksoispistettä tai yhdysmerkkiä). Testivastaukset sisältävät ok, status, duration_ms ja rajatun tuloksen. Ne eivät palauta tunnistetietoja. Luku- ja kirjoitustestit vaativat työtilan kirjoitusoikeuden.
Puhelun aikana liiketoimintapyynnöillä on vakaa Idempotency-Key. Liiketoimintapäätepisteesi on kunnioitettava sitä. Samanlaiset kirjoitukset puhelun sisällä deduplikoidaan, myös operaatiot, joiden lopputulos on tuntematon aikakatkaisun jälkeen. Toinen tarkoituksellinen operaatio tarvitsee oman liiketoimintaparametrinsa, kuten operation_id. EvaSay ei toista kirjoituksia automaattisesti. Työkalujen suoritustapahtumat sisältävät tilan ja keston; keskustelutestitoiminto on edelleen tekstisimulaatio, ei työkalujen suoritustesti.
POST /mcp/discover hyväksyy { "url": "https://crm.example.com/mcp", "credential_ref": "crm" } ja palauttaa palvelimen työkalut ja skeemat. Rekisteröi vain valittu työkalu:
{
"name": "lookup_customer",
"description": "Find a CRM customer by confirmed ID.",
"kind": "mcp",
"url": "https://crm.example.com/mcp",
"mcp_tool": "get_customer",
"credential_ref": "crm",
"read_only": true,
"input_schema": {
"type": "object",
"properties": { "customer_id": { "type": "string" } },
"required": ["customer_id"]
}
}
Agentin käyttöön tulevat vain rekisteröidyt työkalut. Etäyhteydet tukevat Streamable HTTP:tä JSON- tai SSE-vastauksilla pyyntöihin, julkisia HTTPS-kohteita ja esimääritettyjä tunnistetietoja. Vanhoja SSE-päätepisteitä, OAuth-neuvottelua, palvelimen aloittamaa samplingia/elicitationia ja binäärisiä liitteitä ei tueta. Löytäminen ei automaattisesti anna pääsyä kaikkiin palvelimen työkaluihin. Etätyökalun skeeman on oltava sisäinen ja käytettävä tuettua JSON Schema -osajoukkoa.