Használd az OpenAPI-szerződést integrációs kliens generálásához. A nyilvános API, a vezérlőpult és az MCP-kezelő végpont ugyanazokon a munkaterület-erőforrásokon és jogosultságokon működik.
| Képesség | Endpoint |
|---|---|
| Újrafelhasználható eszközök | GET / POST /api/v1/voice/tools |
| Eszköz olvasása / frissítése / törlése | GET / PATCH / DELETE /api/v1/voice/tools/{id} |
| Eszköz előnézete vagy tesztelése | POST /api/v1/voice/tools/{id}/test |
| Eszközök kötése egy ügynökhöz | PUT /api/v1/voice/agents/{id}/tools |
| Tudásbázisok | GET / POST /api/v1/voice/knowledge-bases |
| Tudásbázis olvasása / frissítése / törlése | GET / PATCH / DELETE /api/v1/voice/knowledge-bases/{id} |
| Dokumentumok hozzáadása / listázása | POST / GET /api/v1/voice/knowledge-bases/{id}/documents |
| Dokumentum olvasása / törlése | GET / DELETE /api/v1/voice/knowledge-bases/{id}/documents/{doc_id} |
| Hívásesemény-feliratkozások | GET / POST /api/v1/voice/webhooks |
| Feliratkozás olvasása / frissítése / törlése | GET / PATCH / DELETE /api/v1/voice/webhooks/{id} |
| Aláírt tesztesemény küldése | POST /api/v1/voice/webhooks/{id}/test |
| Távoli MCP-eszközök felderítése | POST /api/v1/voice/mcp/discover |
| MCP-kezelő végpont | /api/v1/voice/mcp |
Regisztrálj egy HTTP-eszközt, amely lekérdezi a CRM-adapteredet:
{
"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"
}
A POST /tools visszaadja: { "data": { "id": "TOOL_ID", ... } }. Kösd a definícióját egy ügynökhöz a PUT /agents/AGENT_ID/tools hívással és a { "tool_ids": ["TOOL_ID"] } tartalommal. Ez a teljes eszközlistát pillanatképekre cseréli; kösd újra, amikor egy könyvtári eszköz megváltozik. Egy könyvtári definíció törlése megtartja a meglévő pillanatképeket. A beágyazott definíciókat az ügynök API tools mezőjével is olvashatod és cserélheted. Az analysis_config és a widget_config segítségével az ügynök API-n keresztül konfigurálhatod az elemzést és a widgetet.
Egy eszköz használhat GET, POST, PUT, PATCH vagy DELETE metódust. A query és a request_body beágyazott JSON-sablonokat fogad el, például { "customer": { "id": "{{customer_id}}" } }. Egy teljes helyőrző megőrzi az eredeti JSON-típust. Az URL-helyőrzők kódolva vannak, és csak egy rögzített, nyilvános HTTPS-gazdagép után szerepelhetnek. request_body nélkül a nem GET eszközök ezt kapják: { "arguments": {...}, "call": { "callId": "...", "agentId": "...", "toolCallId": "...", "idempotencyKey": "..." } }. A response_path pontnotációval választ ki egy mezőt. Az egyszerű parameters továbbra is elfogadott; az input_schema emellett támogatja a beágyazott objektumokat, tömböket, felsorolásokat és numerikus határokat. Külső sémahivatkozások és reguláris kifejezések nem fogadhatók el.
static_args: minden híváshoz elküldött értékek, bármit is ír a modell, például egy üzletazonosító; kitöltik a {{name}} helyőrzőt a címben és a törzsben is.extract: [{name, path}] megőriz mezőket egy függvény válaszából (data.id) a későbbi függvények {{name}} értékéhez, így egy lekérdezés customer_id értéke a következő rendelésbe kerülhet anélkül, hogy a modell megismételné. Egy indítási lekérdezés mezőit ugyanígy őrzi meg.reject_when: legfeljebb 5 szabály {on: caller|agent, pattern, negate}; amíg mindegyik teljesül az utolsó szavakra, a függvény nem fut le, és az ügynök a reject_message értéket kapja.model_says: minden híváskor a modell egy mondatot ír, amelyet a függvény futása közben elmondanak, a rögzített speak_before helyett.Csatlakoztass egy alkalmazást az Integrációk → Webhookok és értesítések → Csatlakoztatott alkalmazások alatt, majd használd az „Elkészített függvény hozzáadása” lehetőséget az ügynök Tudás és eszközök lapján; nincs szükséged saját végpontra:
check_availability (szabad időpontok egy napon) és a book_appointment (lefoglalja a hívó által választott időpontot) függvényeket. A Google Calendar időpontjai az általad megadott időzónát, nyitvatartási napokat, órákat és időpont-hosszt követik; a Cal.com az eseménytípus saját elérhetőségét használja, és az általad megadott tartalék e-mail-címet arra az esetre, ha a hívó nem ad meg egyet.save_to_sheet függvényt, amely egy sort fűz hozzá az általad felsorolt oszlopokkal, valamint a hívás azonosítójával és idejével.notify_team függvényt, amely egy az ügynök által írt üzenetet tesz közzé egy Slack-csatornán (incoming webhook).Az EvaSay vezérlősíkja futtatja ezeket a függvényeket az általad csatlakoztatott fiókkal; sem a worker, sem az ügynök definíciója nem tárolja az alkalmazás hitelesítő adatait. Egy ügynök API-n keresztüli olvasásakor kind: "app" formában jelennek meg (az app, action, connection_id, app_config mezőkkel); a tools cseréjekor küldd vissza őket változatlanul, hogy megmaradjanak. Az alkalmazásokat csak a vezérlőpulton lehet csatlakoztatni.
Állítsd a run_at_start: true értéket az ügynök egyik eszközén, és minden hívás kezdetén meghívódik, mielőtt az ügynök köszönne vagy válaszolna. A caller_number, called_number, direction, channel vagy call_id nevű paramétereket kitölti helyette. A visszaadott mezők kitöltik a {{variables}} helyőrzőket a first_message, system_prompt és idle_messages mezőkben (eggyel lejjebb lévő mezők {{customer.name}} formában), és a teljes válasz háttérként az ügynök elé kerül. A változókat tartalmazó üdvözlés legfeljebb 3 másodpercet vár a válaszra; ami nem található, üresen marad. Ügynökönként egy eszköz futhat induláskor.
A hitelesítő adatokat a szerverkörnyezetben konfigurálják a munkaterületedhez és a célodhoz; kérd a support@evasay.com címen egy credential_ref létrehozását. Ne tegyél API-kulcsokat ügynökdefiníciókba, fejlécekbe, promptokba vagy eszközparaméterekbe. Az adaptered a CRM hitelesítő adatait a saját környezetében tarthatja.
Nézd meg egy eszköz előnézetét, mielőtt kéréseket küldesz az üzleti rendszernek:
{
"arguments": { "customer_id": "customer-123" },
"dry_run": true,
"mock_result": { "name": "Alex", "order_status": "shipped" }
}
Az előnézet ellenőrzi a paramétereket, és megmutatja a leképezett kérést; nem folytat beszélgetést, és nem lép kapcsolatba az üzleti rendszerrel. A valódi futtatáshoz állítsd a dry_run=false értéket. Egy éles írási teszthez a confirmed=true és az idempotency_key is kell (8–128 betű, szám, pont, aláhúzás, kettőspont vagy kötőjel). A teszt válaszai tartalmazzák az ok, status, duration_ms mezőket és egy korlátozott eredményt. Nem adnak vissza hitelesítő adatokat. Az olvasási és írási tesztekhez a munkaterület írási jogosultsága kell.
A hívás során az üzleti kérések stabil Idempotency-Key értéket hordoznak. Az üzleti végpontodnak tiszteletben kell tartania. Egy híváson belüli azonos írások deduplikálódnak, beleértve az időtúllépés után ismeretlen kimenetelű műveleteket is. Egy másik szándékos művelethez külön üzleti argumentum kell, például operation_id. Az EvaSay nem játssza vissza automatikusan az írásokat. Az eszközfuttatási események tartalmazzák az állapotot és az időtartamot; a beszélgetésteszt funkció továbbra is szöveges szimuláció, nem eszközfuttatási teszt.
A POST /mcp/discover elfogadja a { "url": "https://crm.example.com/mcp", "credential_ref": "crm" } tartalmat, és visszaadja a szerver eszközeit és sémáit. Csak a kiválasztott eszközt regisztráld:
{
"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"]
}
}
Csak a regisztrált eszközök válnak elérhetővé az ügynök számára. A távoli kapcsolatok támogatják a Streamable HTTP-t JSON- vagy SSE-válaszokkal a kérésekre, nyilvános HTTPS-célokat és előre konfigurált hitelesítő adatokat. A régi SSE-végpontok, az OAuth-egyeztetés, a szerver által kezdeményezett sampling/elicitation és a bináris mellékletek nem támogatottak. A felderítés nem ad automatikusan hozzáférést a szerver összes eszközéhez. A távoli eszköz sémájának beágyazottnak kell lennie, és a JSON Schema támogatott részhalmazát kell használnia.