API-злучэнні
Падключыце вашы знешнія API да enuchat, каб AI і правілы маглі атрымліваць даныя ў рэжыме рэальнага часу з вашых сістэм.
Як гэта працуе
API-злучэнні дазваляюць інтэграваць enuchat з вашымі ўласнымі бэкэнд-сістэмамі — рухавікамі браніравання, CRM, кіраваннем заказамі, інвентаром і інш. Калі наведвальнік задае пытанне, enuchat можа выклікаць ваш API, каб атрымаць рэальныя даныя і ўключыць іх у адказ.
Паток
- Наладзьце злучэнне — базавы URL вашага API і аўтэнтыфікацыя
- Дадайце endpointы — канкрэтныя API-выклікі з шаблонамі шляху і супастаўленнем адказу
- Стварыце правіла — AI або статычнае правіла з дзеяннем CALL_API
- Наведвальнік задае пытанне — правіла спрацоўвае, выклікае ваш API, супастаўляе адказ са зменнымі сесіі
- AI адказвае рэальнымі дадзенымі — зменныя сесіі даступныя AI для генерацыі дакладнага адказу
Прыклад: Даступнасць гасцінічнага нумара
Наведвальнік: "Ці даступны нумар 205 на наступны тыдзень?"
Правіла AI супадае: "Калі наведвальнік пытае пра даступнасць нумара"
Дзеянне CALL_API: GET https://api.hotel.com/rooms/205/availability
Адказ супастаўлены: room_available = true, price = "€120/ноч"
AI адказвае: "Нумар 205 даступны на наступны тыдзень за €120/ноч. Хочаце забраніраваць?"
Налада злучэння
Перайдзіце ў Налады → API-злучэнні у вашай панэлі.
1. Стварыце злучэнне
Злучэнне ўяўляе адзін знешні API. Вам трэба:
| Поле | Апісанне | Прыклад |
|---|---|---|
| Імя | Этыкетка для гэтага злучэння | API браніравання гатэля |
| Базавы URL | Каранёвы URL API | https://api.hotel.com/v1 |
| Тып аўтэнтыфікацыі | Як аўтэнтыфікавацца | Bearer Token, OAuth2 і інш. |
2. Тыпы аўтэнтыфікацыі
Няма
Для публічных API, якія не патрабуюць аўтэнтыфікацыі.
API-ключ
Адпраўляе статычны ключ як загаловак або параметр запыту.
| Поле | Апісанне |
|---|---|
| Ключ | Значэнне вашага API-ключа |
| Імя загалоўка | Загаловак для выкарыстання (па змаўчанні: X-Api-Key) |
Ключ адпраўляецца як: X-Api-Key: your_key_here
Bearer-токен
Адпраўляе статычны токен у загалоўку Authorization.
Адпраўляецца як: Authorization: Bearer your_token_here
Basic Auth
Адпраўляе імя карыстальніка і пароль, закадаваныя ў base64.
Адпраўляецца як: Authorization: Basic dXNlcjpwYXNz
OAuth 2.0 (Client Credentials)
Аўтаматычна атрымлівае токен доступу і кэшуе яго да заканчэння тэрміну. Найлепшы для сучасных API, такіх як Salesforce, Google або карыстальніцкія OAuth-серверы.
| Поле | Апісанне |
|---|---|
| Token URL | OAuth токен endpoint (напр. https://auth.example.com/oauth/token) |
| Client ID | Ваш OAuth client ID |
| Client Secret | Ваш OAuth client secret |
| Scope | Раздзеленыя прабеламі scope (напр. read write) |
enuchat апрацоўвае жыццёвы цыкл токена аўтаматычна — атрымлівае пры першым выкліку, кэшуе да заканчэння тэрміну, абнаўляе пры неабходнасці.
Бяспека: Усе ўліковыя даныя зашыфраваныя ў стане спакою з выкарыстаннем libsodium. Яны ніколі не раскрываюцца ў API-адказах — у панэлі паказваюцца толькі замаскіраваныя значэнні.
Налада endpointаў
Кожнае злучэнне можа мець некалькі endpointаў — канкрэтных API-выклікаў, якія вы хочаце зрабіць.
| Поле | Апісанне | Прыклад |
|---|---|---|
| Імя | Этыкетка для гэтага endpoint | Праверыць даступнасць |
| Метад | HTTP-метад | GET, POST, PUT, DELETE |
| Шлях | URL-шлях (дадаецца да базавага URL). Выкарыстоўвайце {'{'}variable} для дынамічных значэнняў | /rooms/{'{'}roomId}/availability |
| Параметры запыту | URL-параметры як пары ключ-значэнне. Значэнні падтрымліваюць {'{'}variable} | date={'{'}checkIn} |
| Шаблон цела | JSON-цела для POST/PUT. Падтрымлівае інтэрпаляцыю {'{'}variable} | {'{'}"guest": "{'{'}name}"} |
| Супастаўленне адказу | Супастаўце палі JSON-адказу зменным сесіі з выкарыстаннем кропкавай натацыі | data.available → room_available |
| Апісанне | Кантэкст для AI (якія даныя вяртае гэты endpoint) | Вяртае даступнасць нумара і цаны |
Інтэрпаляцыя зменных
Выкарыстоўвайце {'{'}variableName} у шляхах, параметрах запыту і шаблонах цела. Зменныя бяруцца з:
- Зменных сесіі — усталяваных папярэднімі правіламі (дзеянне SET_VARIABLE)
- Параметраў дзеяння — жорстка закадаваных у дзеянні правіла CALL_API
Супастаўленне адказу
Супастаўце палі JSON-адказу зменным сесіі з выкарыстаннем кропкавай натацыі:
// API returns:
{'{'}
"data": {'{'}
"available": true,
"price": {'{'} "amount": 120, "currency": "EUR" }
}
}
// Mapping:
data.available → room_available // "true"
data.price.amount → room_price // "120"
data.price.currency → room_currency // "EUR"Супастаўленыя зменныя захоўваюцца як зменныя сесіі ў размове і даступныя AI для генерацыі адказаў.
Выкарыстанне з правіламі
API-выклікі запускаюцца дзеяннем CALL_API у правілах. Вы можаце спалучаць іх з іншымі дзеяннямі.
Рэцэпт: Пошук статусу заказу
Злучэнне: API кіравання заказамі — https://api.shop.com/v2 — Bearer-токен
Endpoint: GET /orders/{'{'}orderId} → супастаўляе data.status → order_status, data.eta → delivery_eta
Правіла (тып AI): "Калі наведвальнік пытае пра статус свайго заказу або дастаўку"
Дзеянні:
- CALL_API → Endpoint статусу заказу
- REPLY_AI → AI выкарыстоўвае
order_statusіdelivery_etaдля адказу
Вынік: Наведвальнік: "Дзе мой заказ #4521?" — AI: "Ваш заказ #4521 зараз дастаўляецца і павінен прыйсці да чацвярга."
Рэцэпт: Цэны ў рэжыме рэальнага часу
Злучэнне: API цэнаўтварэння — https://pricing.example.com — API-ключ
Endpoint: GET /products/{'{'}productId}/price → супастаўляе price → current_price, currency → price_currency
Правіла (статычнае): MESSAGE_MATCHES_REGEX: /\b(price|cost|how much)\b/i
Дзеянні:
- CALL_API → Endpoint цэнаўтварэння
- REPLY_TEXT → "Бягучая цана {'{'}current_price} {'{'}price_currency}."
Тэставанне
Заўсёды тэстуйце вашы злучэнні і endpointы перад іх выкарыстаннем у правілах:
- Тэставаць злучэнне — правярае, ці працуе аўтэнтыфікацыя (для OAuth2: атрымлівае токен)
- Тэставаць endpoint — робіць рэальны API-выклік са ўзорнымі зменнымі і паказвае адказ
- Тэставаць правіла (dry-run) — на старонцы Правіл, тэстуйце, ці супадзе правіла і якія дзеянні будуць выконвацца
Парада: Пачніце з тэставання злучэння, потым кожнага endpoint, затым поўнага правіла. Такім чынам вы можаце ізаляваць праблемы на кожным узроўні.
Бяспека
- Шыфраванне ў стане спакою — усе ўліковыя даныя шыфруюцца з выкарыстаннем libsodium перад захоўваннем
- Ніколі не раскрываюцца — API-адказы ніколі не ўключаюць расшыфраваныя ўліковыя даныя, толькі замаскіраваныя значэнні
- Абарона ад SSRF — enuchat блакіруе выклікі да localhost, прыватных IP-адрасоў і ўнутраных хост-імёнаў
- Таймаўт — знешнія API-выклікі маюць 5-секундны таймаўт, каб прадухіліць завісанне
- Кэшаванне OAuth2-токенаў — токены доступу кэшуюцца бяспечна і абнаўляюцца аўтаматычна
- Ізаляцыя tenant — злучэнні абмежаваныя вашым tenant, недаступныя для іншых