Перейти к содержанию

API Интеграция

API интеграция позволяет вам подключать AI-консультантов Wikilect к вашим собственным системам через REST API. Это дает возможность отправлять сообщения боту или создавать новые чаты для пользователей из любых внешних систем.

Настройка API интеграции

  1. Перейдите в раздел Настройки → Консультанты
  2. Выберите навык, для которого хотите настроить API интеграцию
  3. На вкладке Интеграции выберите API
  4. Настройте параметры интеграции и сохраните изменения Скриншот раздела "API" Скриншот раздела "API"
  5. Скопируйте URL для API запросов и токен авторизации (если используется) Скриншот раздела "API"

Взаимодействие с API

Отправка сообщения или создание нового чата

URL-адрес

https://app.wikilect.com/api/bots/{tenant}/integration/{integration_id}/message

Где: - {tenant} — уникальный идентификатор вашего тенанта - {integration_id} — ID интеграции

Метод

POST

Заголовки запроса

Authorization: Bearer {your_token}
Content-Type: application/json

Тело запроса

Для отправки сообщения:

{
  "skill_id": 191,
  "consultant_id": 116,
  "type": "message",
  "message": "Hello!",
  "user_id": "user-1",
  "use_history": true,
  "use_webhook": false,
  "query_context": {"info": "Дополнительная информация о запросе"},
  "user_context": {
    "name": "Иван",
    "last_name": "Иванов"
  }
}

Для создания нового чата:

{
  "skill_id": 191,
  "consultant_id": 116,
  "type": "newChat",
  "message": "Hello!",
  "user_id": "user-1",
  "use_history": true,
  "use_webhook": false,
  "query_context": {"info": "Дополнительная информация о запросе"},
  "user_context": {
    "name": "Иван",
    "last_name": "Иванов"
  }
}

Описание параметров

Параметр Тип Описание
skill_id int Уникальный ID навыка, с которым связан бот
consultant_id int ID консультанта
type string Тип операции: message для отправки сообщения или newChat для создания нового чата
message string Содержимое сообщения
user_id string Уникальный идентификатор пользователя
use_history boolean Опционально, по умолчанию true. Указывает, следует ли учитывать историю общения при ответе
use_webhook boolean Опционально, по умолчанию false. Указывает, следует ли использовать webhook's при запросах к API
user_context JSON Опционально. Дополнительная информация о пользователе (например, имя, фамилия), сохраняемая в профиле
query_context JSON Опционально. Дополнительная информация, передаваемая вместе с сообщением, для контекстуального понимания ботом

Пример запроса с CURL

curl --location 'https://app.wikilect.com/api/bots/{tenant}/integration/{integration_id}/message' \
--header 'Authorization: Bearer {your_token}' \
--header 'Content-Type: application/json' \
--data '{
  "skill_id": 191,
  "consultant_id": 116,
  "type": "message",
  "message": "Hello!",
  "user_id": "user-1",
  "use_history": true,
  "use_webhook": false,
  "query_context": {"info": "Дополнительная информация о запросе"},
  "user_context": {
    "name": "Иван",
    "last_name": "Иванов"
  }
}'

Ответы API

Синхронный ответ (use_webhook: false)

Если параметр use_webhook установлен в false, бот вернет ответ непосредственно в результате запроса:

{
    "status": "success",
    "data": {
        "type": "message",
        "message": "Здравствуйте! Чем я могу вам помочь сегодня?",
        "metadata": {
            "category": "greeting"
        },
        "role": "BOT",
        "user_id": "user-1",
        "created_at": "2024-10-09T00:08:34.283051+00:00",
        "consultant": 116,
        "skill": 191,
        "tenant": "your-tenant"
    }
}

Асинхронный ответ через webhook (use_webhook: true)

Если параметр use_webhook установлен в true, бот отправит подтверждение о получении запроса и отправит ответ на указанный webhook URL:

{
    "status": "success",
    "detail": "Answer will be sent to https://your-webhook-url.com"
}

Webhooks

Когда используются webhooks, бот отправляет ответы на ваш настроенный URL.

Формат webhook для ответа бота

{
  "type": "message",
  "message": "Здравствуйте! Чем я могу вам помочь сегодня?",
  "metadata": {
    "category": "greeting"
  },
  "role": "BOT",
  "user_id": "user-1",
  "created_at": "2024-10-09T00:08:34.283051+00:00",
  "consultant": 116,
  "skill": 191,
  "tenant": "your-tenant"
}

Формат webhook для ответа менеджера

{
  "type": "message",
  "message": "Здравствуйте, я менеджер Анна. Чем я могу вам помочь?",
  "metadata": null,
  "role": "MANAGER",
  "user_id": "user-1",
  "created_at": "2024-10-09T00:09:48.235597+00:00",
  "consultant": 116,
  "skill": 191,
  "tenant": "your-tenant"
}

Описание полей webhook

Поле Тип Описание
role string Указывает, кто отправил сообщение: BOT или MANAGER
type string Всегда message
skill int ID навыка, связанного с разговором
tenant string Идентификатор тенанта
message string Содержимое сообщения
metadata JSON Дополнительные метаданные (могут содержать теги XML)
user_id string Уникальный идентификатор пользователя
consultant int ID консультанта, управляющего сообщением
created_at string Время создания сообщения

Рекомендации по использованию API

  1. Уникальные идентификаторы — всегда используйте стабильные и уникальные user_id для каждого пользователя
  2. Контекст запроса — используйте query_context для передачи дополнительной информации, которая может помочь боту лучше понять контекст запроса
  3. Информация о пользователе — используйте user_context для хранения постоянной информации о пользователе
  4. Webhooks — для высоконагруженных систем рекомендуется использовать асинхронную модель с webhooks

"Диалоги интеграции доступны всем пользователям"

  • При активации этой опции все пользователи вашей Организации в Wikilect смогут видеть диалоги клиентов в рамках данной интеграции
  • Если опция выключена, диалоги будут доступны только администраторам и пользователям с соответствующими правами