Внешний инструмент — это «кнопка» для Саши во время звонка. Когда клиент спрашивает, например, «где мой заказ?», Саша обращается к вашему серверу (CRM, календарь, склад), получает ответ и озвучивает его клиенту. Создаёте инструмент один раз на уровне организации — и включаете тумблером в любом скиллбейзе.
Настройку удобнее делать вдвоём: менеджер формулирует сценарий («узнать статус», «записать на приём»), разработчик указывает URL и токен.

Как это устроено

Инструмент общий для организации. Создали один раз — можете включать в любом скиллбейзе.
Проектируйте эндпоинты оптимизированно для ИИ: возвращайте только нужные поля, без длинных JSON и лишних вложенностей. Большой ответ раздувает контекст модели — из‑за этого падают точность исполнения, скорость ответа и качество озвучки клиенту.

Шаг 1. Откройте раздел

  1. В левом меню откройте блок «для гиков».
  2. Перейдите в «Интеграции».
  3. Выберите вкладку «Внешние инструменты».
Если инструментов ещё нет, вы увидите пустой экран с кнопкой «+ Создать инструмент». Интеграции → вкладка «Внешние инструменты»
Кнопка создания есть и сверху справа, и по центру пустого экрана — обе делают одно и то же.

Шаг 2. Создайте инструмент

Нажмите «+ Создать инструмент». Откроется модальное окно «Подключить инструмент». Модальное окно «Подключить инструмент»

Название

Техническое имя инструмента внутри системы. Пишите латиницей или транслитом, без пробелов (можно _).

Промпт для ИИ

Скажите Саше когда и зачем вызывать инструмент. Чем точнее опишете ситуацию — тем реже она вызовет его «не вовремя». Пример:
Используй, когда клиент спрашивает о статусе своего заказа
Хороший промпт: «Используй, когда клиент спрашивает, где заказ, когда приедет доставка или какой статус у посылки».Плохой: «Для заказов» — слишком общо.

REST-метод и URL

Переменные в адресе пишите в фигурных скобках:
Саша во время звонка спросит у клиента номер заказа и подставит его вместо {order_id}. От метода зависит, будет ли у запроса тело (body):
Для продакшен-API нужны точный URL и (часто) токен доступа. Наведите на иконку ⓘ у полей — там короткие подсказки.

Кнопки внизу модального окна

Если у вас несколько эндпоинтов (врачи, слоты, запись, отмена) — используйте «Сохранить и добавить ещё», чтобы не открывать модальное окно заново каждый раз.

Шаг 3. Path- и Query-параметры

Прокрутите модальное окно ниже — там настраиваются параметры запроса. Настройка path-параметра и query

Path-параметры

Переменные в адресе. Появляются автоматически, когда в URL есть {что_то}.
Пример: в URL есть {order_id} → в списке path появится параметр order_id.
Для каждого параметра укажите:
  1. Тип данных — String / Number / Boolean
  2. Идентификатор — имя переменной (для path обычно уже заполнено)
  3. Источник значения — откуда брать значение
  4. Описание для ИИ — если источник = «Промпт для ИИ»
Пример описания: «Спроси у клиента номер заказа»

Query-параметры

Фильтры после ?. Добавляются кнопкой «+ Добавить query» и попадают в URL так: ?doctor_id=123&date=2026-07-21. Если query не нужны — оставьте «Параметры не заданы».

Источники значения

Динамические переменные

Их не нужно спрашивать у клиента — Саша подставит сама при вызове API.
Не называйте path-, query- и body-параметры служебными полями вызова Саши: name, to, invokeRightNow, operatorContext, arguments, parameters (также tool_name / toolName). Они пересекаются с внутренним форматом вызова — инструмент может не сработать. Для ФИО используйте client_name или fio.

Шаг 4. Body-параметры

Блок «Body-параметры» появляется только для методов POST, PUT, PATCH и DELETE.
При GET его нет: у GET-запроса не бывает JSON-тела.
Настройка Body-параметров: поля JSON в теле запроса Каждое поле станет ключом в JSON, который уйдёт в теле HTTP-запроса:
Подходит, когда API принимает данные в теле, а не в URL (типично CRM, запись лида, создание заявки).

Как настроить

  1. Выберите метод POST / PUT / PATCH / DELETE — блок Body появится под Query.
  2. Нажмите «+ Добавить поле».
  3. Для каждого поля укажите:
    • Тип данных — String / Number / Boolean
    • Идентификатор — имя ключа в JSON (phone, order_id, comment). Не используйте служебные имена из таблицы выше (name, to и т.д.)
    • Источник значения — те же, что у path/query: промпт для ИИ, константа или динамическая переменная
    • Описание для ИИ — если источник = «Промпт для ИИ»
Если поля тела не нужны — оставьте «Поля тела запроса не заданы». Для POST / PUT / PATCH Саша всё равно отправит пустой объект {}; для DELETE без полей тело не отправится.
Номер звонящего часто кладут в body через «Динамическая переменная» → «Номер телефона» — клиенту ничего спрашивать не нужно.
Источники значения у Body те же, что у Path и Query (см. таблицу выше). Меняется только то, куда попадёт значение: в URL или в JSON-тело.

Шаг 5. Аутентификация

Внизу формы — блок доступа к API. Блок аутентификации: публичный API или Bearer token Публичный API — оставьте галочку «Без аутентификации (публичный API)». Поле токена будет неактивно. Защищённый API (чаще всего):
  1. Снимите галочку «Без аутентификации».
  2. Вставьте Bearer token из настроек вашего сервиса.
Токен сохраняется зашифрованным и не показывается повторно после сохранения. При редактировании оставьте поле пустым, если менять токен не нужно.

Шаг 6. Включите в скиллбейзе

Создать инструмент мало — его нужно включить там, где Саша реально звонит.
  1. Откройте Скиллбейзы → нужный скиллбейз.
  2. Перейдите на вкладку «Инструменты».
  3. В блоке «Внешние инструменты» найдите свой метод.
  4. Включите тумблер справа.
Скиллбейз → Инструменты: тумблер включён На карточке видны: название, URL, метод (GET / POST / …), path- и body-параметры (если есть) и промпт для ИИ.
Ссылка «управлять ими →» в описании секции ведёт обратно в список инструментов организации (Интеграции), чтобы править URL или промпт без выхода из скиллбейза.

Чеклист перед первым звонком

1

Инструмент создан

В Интеграции → Внешние инструменты заполнены название, промпт, метод и URL.
2

Параметры настроены

{переменные} в URL совпадают с path-параметрами; для POST / PUT / PATCH / DELETE при необходимости заполнены Body-поля; у каждого параметра выбран источник значения. Идентификаторы не из служебного списка (name, to и др.).
3

Аутентификация

Указан Bearer token — или отмечен публичный API.
4

Тумблер включён

В нужном скиллбейзе на вкладке «Инструменты» статус «Активен в звонках».
5

Проверочный звонок

Через «Позвонить ИИ» убедитесь: Саша спрашивает нужные данные и получает ответ API.

Типичные сценарии

  1. Метод GET, URL .../orders/{order_id}
  2. Path order_id → источник «Промпт для ИИ» → «Спроси номер заказа»
  3. Включить в скиллбейзе сервисных или холодных звонков
Создайте отдельно через «Сохранить и добавить ещё»:
  1. Список врачей
  2. Свободные слоты
  3. Создать запись
  4. Отменить запись
  5. Перенести запись
Потом включите нужные тумблеры в скиллбейзе клиники.
Path, query или body с источником «Динамическая переменная» → «Номер телефона» — без вопросов клиенту.
  1. Метод POST, URL .../leads (без {переменных} в адресе, если ID не нужны)
  2. Body: phone → «Динамическая переменная» → «Номер телефона»
  3. Body: comment → «Промпт для ИИ» → «Кратко сформулируй, чего хочет клиент»
  4. Включить тумблер в скиллбейзе холодных или сервисных звонков

Частые вопросы

name и несколько других ключей уже заняты внутренним форматом вызова. Если так назвать параметр API, Саша может перепутать его со служебным и не вызвать webhook. Назовите поле иначе — например client_name или fio. Полный список — в таблице «Нельзя / Возьмите другое» выше.
Связь должна сохраняться на сервере. Если после refresh статус «Выключен» — напишите в поддержку и приложите ID скиллбейза.
Да. Создаёте один раз в организации, включаете тумблером где нужно.
Никто в интерфейсе — токен больше не отображается. Можно только заменить на новый.
Для продакшен-API — да (URL, токен, формат ответа). Для тестового публичного эндпоинта можно начать самостоятельно.
Он доступен только при методах POST, PUT, PATCH и DELETE. У GET тела запроса нет — переключите метод, и блок появится.