Ваш первый голосовой агент на SpeakNode: подключаем инструменты через Nodul.ru
В предыдущей статье мы создали голосового агента, который отвечает на типовые вопросы из заданных ему знаний. Но у него есть ограничение — он не знает ничего о конкретных клиентах и их заказах.
Если клиент спросит «Где мой заказ 12345?» — агент сможет рассказать только общую информацию о доставке. Сегодня это исправим.
Научим агента работать с реальными данными: например проверять статусы заказов, смотреть свободное время в календаре, получать информацию из CRM. Инструмент для этого — связка SpeakNode + Nodul. SpeakNode управляет разговором, Nodul интегрирует агента с вашими системами.
Что такое Nodul
Nodul — российская платформа для создания автоматизаций бизнес-процессов и ИИ-агентов любой сложности. Позволяет строить сложные решения по управлению бизнесом без команды разработчиков и инфраструктурных трудностей.
Связка SpeakNode + Nodul даёт агенту доступ к вашим CRM, таблицам, RAG-базам данных и сотням приложений — возможности становятся практически безграничными.
Для примера подключим к агенту Google Sheets с данными о доставке — наглядный сценарий, который легко повторить и адаптировать под свои нужды.
Подготовка
Понадобится:
- Готовый агент в SpeakNode (из предыдущей статьи)
- Аккаунт в Nodul.ru
- Google Sheets с данными
- Около 30 минут
Шаг 1: Готовим данные
Создаём тестовую таблицу в Google Sheets с заказами:
| order_id | status | estimated_delivery | courier |
|---|---|---|---|
| 12345 | В доставке | сегодня до 20:00 | Алексей |
| 12346 | Собирается | завтра | — |
| 12347 | Доставлен | — | — |
| 12348 | В доставке | завтра до 18:00 | Мария |
Сохраняем ссылку на таблицу — она понадобится при настройке Nodul.
Шаг 2: Создаём Webhook Tool в SpeakNode
Открываем агента в SpeakNode → вкладка Agent.
Прокручиваем до раздела Webhook Tools → нажимаем + Add tool.
Tool Name
Название инструмента — агент будет использовать его в разговоре чтобы понять что именно вызывать. Пишем:
check_order_status
Это имя также нужно будет указать в system prompt — агент должен знать как называется инструмент который ему доступен.
Description
Критически важное поле. LLM читает описание чтобы понять когда вызывать инструмент. Пишем:
Проверяет текущий статус заказа клиента по номеру заказа.
Возвращает статус доставки и ориентировочное время получения.
Используй этот инструмент когда клиент спрашивает где его заказ
или хочет узнать статус доставки.
Чем точнее описание, тем лучше агент понимает когда и зачем его вызывать.
HTTP Method
Выбираем POST — это стандартный метод для отправки данных на сервер.
URL
Пока оставляем пустым — получим после настройки Nodul и вернёмся сюда.
Параметры
Request Headers — заголовки HTTP-запроса. Используются для авторизации (API-ключи, токены). Пока не нужны.
URL Parameters — параметры в URL, например ?order_id=12345. Для webhook используются редко. Пока не нужны.
Request Body — тело запроса. Основной способ передачи данных в webhook. Здесь добавляем параметры.
В разделе Request Body нажимаем Add Property.
Заполняем:
- Name:
order_id - Type:
string - Required: включаем
- Description:
Номер заказа клиента, обычно состоит из 5-6 цифр - Fill mode: оставляем Fixed mode для удобного тестирования — агент при каждом обращении к инструменту будет передавать фиксированное значение
После тестирования переключим Fill mode на AI Dynamic — тогда ИИ будет сам определять какие данные подставлять при вызове инструмента.
Описание параметра важно — агент использует его чтобы понять какие данные нужно извлечь из разговора и передать в инструмент.
Дополнительные настройки
Timeout: 10 секунд. Если ваша система отвечает дольше — увеличиваем.
Disable Interruptions: включаем. Клиент не сможет перебить агента во время выполнения запроса.
Pre-tool Speech: фраза которую агент произносит перед выполнением запроса. Пишем:
Секунду, проверю информацию по вашему заказу.
Это создаёт естественную паузу — клиент понимает что агент что-то делает, а не завис.
Пока не сохраняем — нужен URL из Nodul.
Шаг 3: Создаём webhook в Nodul
Теперь создаём endpoint который будет получать запросы от SpeakNode и возвращать данные.
Заходим на Nodul.ru → создаём новый сценарий.
Добавляем Webhook
Добавляем ноду Webhook — она должна быть первой в сценарии.
Сохраняем ноду. Nodul покажет Development URL — копируем его. Выглядит примерно так:
https://hook.nodul.ru/webhook/xxxxx/order-status
Включаем переключатель «активен» — он делает вебхук готовым принимать события. Нажимаем «Запустить один раз».
Тестируем соединение
Возвращаемся в SpeakNode. Вставляем скопированный URL в поле URL в настройках Webhook Tool.
Сохраняем изменения и нажимаем кнопку тестирования.
Вверху появится уведомление об успешном обращении к сценарию.

Возвращаемся в Nodul — вебхук получил данные. Нажимаем на зелёный кружок и видим что пришло наше значение order_id: 12345 (фиксированное, которое мы задали ранее):
{
"order_id": "12345"
}
Данные пришли. Теперь настроим ответ обратно в SpeakNode.
Шаг 4: Обрабатываем запрос
Нужно сделать три вещи: получить order_id из запроса, найти заказ в Google Sheets и вернуть данные обратно в SpeakNode.
Добавляем поиск в Google Sheets
В сценарии Nodul добавляем ноду Google Sheets → Search rows.
Авторизуемся и заполняем поля:
- Spreadsheet: выбираем таблицу с заказами
- Sheet: название листа (обычно «Лист1»)
- Range: A1:Z100
- Filter JSON: берём из примера под полем и подставляем нужный столбец и оператор. Чтобы передать значение
order_idиз вебхука — нажимаем на поле и выбираем его из данных предыдущего узла.
Эта нода найдёт строку где order_id совпадает с тем что прислал SpeakNode.
Нажимаем «Запустить один раз» — нода возвращает данные по заказу.
Возвращаем данные агенту
Добавляем ноду Webhook Response. Нажимаем на поле Body и выбираем значение result из предыдущего узла.
Сохраняем сценарий.
Шаг 5: Обновляем System Prompt
Агент должен знать что у него есть инструмент для проверки заказов и понимать когда его использовать.
Открываем агента в SpeakNode → вкладка Agent → System Prompt. Добавляем:
У тебя есть инструмент check_order_status который проверяет статус заказа.
Когда клиент спрашивает про заказ:
1. Спроси номер заказа если он его не назвал
2. Используй check_order_status с номером заказа
3. Сообщи клиенту статус, время доставки и имя курьера
Номер заказа обычно состоит из 5-6 цифр.
Сохраняем агента. Также не забываем переключить Fill mode в настройках инструмента на AI Dynamic — теперь агент будет сам подставлять нужное значение при каждом вызове.
Шаг 6: Тестируем
Нажимаем Test AI Agent. Агент приветствует нас, начинаем разговор:
Вы: Привет, где мой заказ?
Агент: Здравствуйте! Подскажите номер заказа, пожалуйста.
Вы: Один два три четыре пять.
Агент: Секунду, проверю информацию по вашему заказу…
Агент: Ваш заказ сейчас в пути. Ожидаемое время доставки — сегодня до 20:00. Курьера зовут Алексей.
В интерфейсе видно как отработала вся цепочка: агент вызвал check_order_status, инструмент обратился к таблице, вернул данные — и агент сформулировал живой ответ. Всё это заняло 2–3 секунды.
Итог
Агент больше не ограничен заготовленными ответами. Теперь он работает с реальными данными — клиент спрашивает про заказ, агент идёт в базу и отвечает конкретно: статус, время, имя курьера. Всё это без участия оператора и за считанные секунды.
Та же схема работает для любых сценариев:
- Проверка статусов заказов в реальном времени
- Запись на приём с проверкой свободных слотов в календаре
- Создание заявок в CRM прямо во время звонка
- Получение информации из любых систем с API
Если в вашем бизнесе есть данные — агент может с ними работать. SpeakNode + Nodul делают это без единой строчки бэкенд-кода.
Ссылки:
SpeakNode — платформа голосовых агентов
Nodul.ru — платформа бизнес-автоматизаций
Предыдущая статья: «Ваш первый голосовой агент на SpeakNode: базовая настройка»





















