Ваш первый голосовой агент на SpeakNode: подключаем инструменты через Nodul.ru

Ваш первый голосовой агент на 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.

Сохраняем изменения и нажимаем кнопку тестирования.

Вверху появится уведомление об успешном обращении к сценарию.

image

Возвращаемся в Nodul — вебхук получил данные. Нажимаем на зелёный кружок и видим что пришло наше значение order_id: 12345 (фиксированное, которое мы задали ранее):

{
  "order_id": "12345"
}

Данные пришли. Теперь настроим ответ обратно в SpeakNode.


Шаг 4: Обрабатываем запрос

Нужно сделать три вещи: получить order_id из запроса, найти заказ в Google Sheets и вернуть данные обратно в SpeakNode.

Добавляем поиск в Google Sheets

В сценарии Nodul добавляем ноду Google SheetsSearch rows.

Авторизуемся и заполняем поля:

  • Spreadsheet: выбираем таблицу с заказами
  • Sheet: название листа (обычно «Лист1»)
  • Range: A1:Z100
  • Filter JSON: берём из примера под полем и подставляем нужный столбец и оператор. Чтобы передать значение order_id из вебхука — нажимаем на поле и выбираем его из данных предыдущего узла.

Эта нода найдёт строку где order_id совпадает с тем что прислал SpeakNode.

Нажимаем «Запустить один раз» — нода возвращает данные по заказу.

Возвращаем данные агенту

Добавляем ноду Webhook Response. Нажимаем на поле Body и выбираем значение result из предыдущего узла.

Сохраняем сценарий.


Шаг 5: Обновляем System Prompt

Агент должен знать что у него есть инструмент для проверки заказов и понимать когда его использовать.

Открываем агента в SpeakNode → вкладка AgentSystem 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: базовая настройка»