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. Вам нужно:
| Поле | Описание | Пример |
|---|---|---|
| Название | Метка для этого подключения | Hotel Booking API |
| Базовый URL | Корневой URL API | https://api.hotel.com/v1 |
| Тип авторизации | Способ аутентификации | Bearer Token, OAuth2 и др. |
2. Типы аутентификации
Без аутентификации
Для публичных API, не требующих аутентификации.
API Key
Отправляет статический ключ в заголовке или параметре запроса.
| Поле | Описание |
|---|---|
| Ключ | Значение вашего API-ключа |
| Имя заголовка | Используемый заголовок (по умолчанию: X-Api-Key) |
Ключ отправляется как: X-Api-Key: your_key_here
Bearer Token
Отправляет статический токен в заголовке Authorization.
Отправляется как: Authorization: Bearer your_token_here
Basic Auth
Отправляет имя пользователя и пароль в кодировке base64.
Отправляется как: Authorization: Basic dXNlcjpwYXNz
OAuth 2.0 (Client Credentials)
Автоматически получает access token и кэширует его до истечения. Лучший вариант для современных 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 | Области доступа через пробел (например, read write) |
enuchat автоматически управляет жизненным циклом токена — получает при первом вызове, кэширует до истечения, обновляет при необходимости.
Безопасность: Все учётные данные шифруются при хранении с помощью libsodium. Они никогда не отображаются в ответах API — в панели управления показываются только маскированные значения.
Настройка endpoint
Каждое подключение может иметь несколько endpoint — конкретных API-вызовов.
| Поле | Описание | Пример |
|---|---|---|
| Название | Метка для этого endpoint | Check availability |
| Метод | 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) | Returns room availability and pricing |
Интерполяция переменных
Используйте {'{'}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 в правилах. Вы можете комбинировать их с другими действиями.
Рецепт: Проверка статуса заказа
Подключение: Order Management API — https://api.shop.com/v2 — Bearer Token
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 сейчас в доставке и должен прибыть к четвергу."
Рецепт: Цены в реальном времени
Подключение: Pricing API — https://pricing.example.com — API Key
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 → "The current price is {'{'}current_price} {'{'}price_currency}."
Тестирование
Всегда тестируйте подключения и endpoint перед использованием в правилах:
- Тест подключения — проверяет работу аутентификации (для OAuth2: получает токен)
- Тест endpoint — выполняет реальный API-вызов с тестовыми переменными и показывает ответ
- Тест правила (пробный запуск) — на странице Правил проверьте, сработает ли правило и какие действия будут выполнены
Совет: Начните с тестирования подключения, затем каждого endpoint, затем полного правила. Так вы сможете изолировать проблемы на каждом уровне.
Безопасность
- Шифрование при хранении — все учётные данные шифруются с помощью libsodium перед сохранением
- Никогда не раскрываются — ответы API никогда не содержат расшифрованных учётных данных, только маскированные значения
- Защита от SSRF — enuchat блокирует вызовы к localhost, приватным IP и внутренним хостнеймам
- Таймаут — вызовы внешних API имеют таймаут 5 секунд для предотвращения зависания
- Кэширование токенов OAuth2 — access-токены кэшируются безопасно и обновляются автоматически
- Изоляция аккаунтов — подключения привязаны к вашему аккаунту, недоступны для других