Тестирование и отладка функций
Содержание:
- Тестирование через кнопку «Тестировать»
- Тестирование в диалоге с ботом
- Функция не вызывается
- Неправильно извлекаются параметры
- Ошибка при отправке запроса
- Неправильный ответ от API
- Советы по отладке
После создания функции важно проверить её работу. В этой статье разберём, как тестировать функции и исправлять распространённые ошибки.
Метод 1. Тестирование через кнопку «Тестировать»
Шаг 1. Заполните тестовые аргументы
В окне редактирования функции найдите поле «Тестовые аргументы» на вкладке «Описание» и введите пример данных в формате JSON:
{
"order_id": 12345
}ℹ️ Совет
Если вы не заполнили это поле заранее, данные можно ввести прямо перед тестированием.
Шаг 2. Нажмите «Тестировать»
Внизу окна редактирования нажмите синюю кнопку «Тестировать». Система возьмёт данные из поля «Тестовые аргументы», отправит запрос на ваш API по указанным настройкам и покажет результат.
Шаг 3. Проанализируйте результат
При успехе вы увидите JSON, который вернул ваш API — или его часть, если указан response_path. При ошибке система покажет код и сообщение.
| Ошибка | Причина | Решение |
|---|---|---|
404 Not Found | Неверный URL или ресурс не найден | Проверьте request_url и переменные |
401 Unauthorized | Неверный токен или авторизация | Проверьте заголовки Authorization |
400 Bad Request | Неверные параметры запроса | Проверьте request_body_template и схему |
500 Internal Server Error | Ошибка на вашем сервере | Проверьте логи вашего API |
Timeout | Превышено время ожидания | Увеличьте timeout_ms или оптимизируйте API |
⚠️ Если получили 401 при верном токене
Значение заголовка, отмеченного как секретное, хранится зашифрованным и не возвращается обратно в форму. Если вы перезагрузили страницу после сохранения функции, кнопка «Тестировать» отправит запрос без этого заголовка — и API ответит 401, хотя сама функция настроена верно. Проверить такую функцию по-настоящему можно в диалоге с ботом: там вызывается сохранённая версия с реальным ключом.
Метод 2. Тестирование в диалоге с ботом
Это самый реалистичный способ проверки — вы общаетесь с ботом как обычный пользователь.
В левом меню выберите «Тестирование».
- Вверху страницы выберите режим, в котором хотите проверить бота.
- Задайте вопрос, который должен вызвать функцию. Например:
Какой статус у моего заказа под номером 12345? - Проанализируйте ответ.
Если функция сработала, бот получит данные от API и сформулирует ответ: «Статус вашего заказа под номером 12345 — "Доставляется". Ожидаемая дата доставки — 15 июня 2026 года.»
Если не сработала, причин обычно четыре:
- модель не распознала намерение — улучшите
descriptionфункции; - модель не извлекла параметры — проверьте
input_schema_json; - функция неактивна — проверьте
is_enabled; - у бота отключены функции — проверьте главный переключатель «Использование функций в запросах».
Проблема 1. Функция не вызывается
Симптомы: бот игнорирует запросы, которые должны вызывать функцию, и отвечает общими фразами вместо конкретных данных.
Плохое описание функции
❌ Так не стоит
"description": "API функция"
✅ Так нужно
"description": "Возвращает статус заказа по номеру заказа. Используйте, когда клиент спрашивает о статусе."
Непонятное имя функции
❌ Так не стоит
"name": "func1"
✅ Так нужно
"name": "get_order_status"
Также проверьте, что is_enabled: true, что включён главный переключатель «Использование функций в запросах» и что выбрана модель, поддерживающая вызов функций.
Проблема 2. Неправильно извлекаются параметры
Симптомы: бот вызывает функцию, но с пустыми или неверными параметрами; появляется ошибка валидации аргументов.
Неполная JSON Schema
❌ Так не стоит
{ "type": "object", "properties": {} }
✅ Так нужно
{ "type": "object", "properties": { "order_id": { "type": "integer", "description": "Номер заказа" } }, "required": ["order_id"] }
Неправильный тип данных. Если в сообщении клиента число, а в схеме указан string, извлечение может не сработать. Указывайте integer.
Отсутствует description у параметра. Без описания модель не понимает, что именно искать в сообщении:
❌ Так не стоит
"order_id": { "type": "integer" }
✅ Так нужно
"order_id": { "type": "integer", "description": "Номер заказа" }
Проблема 3. Ошибка при отправке запроса
Симптомы: функция вызывается, но запрос не доходит до API — ошибка соединения или таймаут.
- Неверный URL. Проверьте, что адрес начинается с
https://, что нет опечаток и что переменные записаны в одинарных фигурных скобках:{order_id}. - Заблокированный адрес. Запрещены
localhost,*.localи приватные IP. Используйте публичный HTTPS-адрес. - Слишком маленький таймаут. Если API отвечает медленно, увеличьте
timeout_ms— например, до 15000. - Проблемы с авторизацией. Проверьте заголовки
Authorization, актуальность токена и что чувствительные значения отмечены какis_secret: true.
Проблема 4. Неправильный ответ от API
Симптомы: запрос уходит успешно, но бот получает не те данные — либо ответ слишком большой и сложный.
Не указан response_path. Если API возвращает вложенную структуру, укажите путь до нужной части:
{
"data": {
"result": {
"status": "Доставляется"
}
}
}Для такого ответа указывается "response_path": "data.result".
Неверный формат пути. Путь записывается только через точку:
✅ Так нужно
"response_path": "data.result.status"
❌ Так не стоит
"response_path": "data[0].status"
Слишком большой ответ. Увеличьте max_response_bytes или, что лучше, используйте response_path, чтобы вернуть только нужные данные.
Советы по отладке
- Включите логирование на своём API. Проверяйте, какие запросы приходят от Helpfy: метод, URL, заголовки и тело запроса. Это сразу покажет, правильно ли они формируются.
- Используйте тестовые среды. Сначала проверьте функцию на staging-контуре и только потом подключайте продакшн.
- Начинайте с простого. Сначала настройте функцию без авторизации, потом добавьте заголовки, затем усложняйте логику.
- Проверяйте JSON Schema онлайн-валидаторами — опечатка в схеме выглядит как «модель не поняла запрос».
- Тестируйте с разными данными: корректными, некорректными, с отсутствующими обязательными полями и с граничными значениями.