Actions & Tools
Вкладка Actions — место, где вы управляете всем, что ваш агент умеет за пределами разговора: tools, которые агент вызывает в живом разговоре, prefetch-хуки, срабатывающие перед стартом звонка, и post-call actions, срабатывающие после окончания звонка. Retrieval Variables (поля данных, которые агент извлекает из каждого разговора) живут в той же вкладке.
Все tools, actions и новый pre-fetch-хук доступны на каждом тарифе, включая Free.
Три фазы
Каждая запись на вкладке Actions принадлежит одной из трёх фаз жизненного цикла. Выпадающий список Add Tool группирует их, чтобы было понятно, когда что срабатывает:
| Фаза | Когда | Примеры |
|---|---|---|
| Pre fetch | Перед тем как агент скажет «здравствуйте» | Поднять звонящего в CRM по телефону, подтянуть последний заказ, получить персонализированное приветствие с вашего бэкенда |
| Live call | Во время разговора, по инициативе AI в нужный момент | Передать звонок человеку, проверить доступность в календаре, передать другому агенту, запросить данные из внешнего API |
| Post call | После окончания звонка | Отправить summary email, выстрелить SMS-подтверждение, запушить payload звонка в CRM |
Выпадающий список открывается с Pre fetch наверху, потому что у всех остальных фаз уже много опций — новая pre-fetch-запись, скорее всего, то, что вы ищете.
Pre fetch
Pre-fetch-хуки позволяют вашему агенту начинать звонок, уже зная, кто звонит. Они выполняются параллельно с установкой звонка и инжектят ответ в системный промпт агента до самого первого произнесённого слова.
Когда использовать
- Узнать возвращающегося клиента по номеру телефона и поздороваться по имени
- Подтянуть открытый заказ звонящего, последнюю запись или уровень членства
- Заранее подгрузить бизнес-контекст в зависимости от того, на какую линию набрали
- Инжектить заметки CRM, чтобы агент знал стадию и историю лида
Как это работает
- Платформа резолвит телефон звонящего (из SIP для входящих, из dial target для исходящих).
- Каждый активный Pre fetch action срабатывает параллельно с жёстким таймаутом 1.5 с на запрос и общим бюджетом 2 с.
- Успешные ответы конкатенируются в системный промпт агента как именованные блоки — агент читает их на самом первом ходу.
- Сбои тихие — медленный или сломанный эндпоинт никогда не блокирует приветствие. Агент просто начинает говорить без этого блока.
Конфигурация
| Поле | Описание |
|---|---|
| Name | Обязательно. Внутренний label и имя блока в промпте — держите его коротким и описательным (например, crm_lookup, vip_check). |
| API URL | Обязательно. Эндпоинт для запроса. Поддерживает плейсхолдеры {phone}, {direction}, {agent_id}, {user_id}, {call_id}. |
| HTTP Method | GET — дефолт и лучший выбор. POST / PUT / PATCH / DELETE тоже работают. |
| Headers | Опционально. Статические или шаблонные (плейсхолдеры работают и здесь). |
| Query Parameters | Опционально. Для новых pre-fetch предзаполняется phone={phone}. |
Доступные переменные
Эти токены подставляются в URL, заголовки и query/body-параметры во время запроса:
| Переменная | Источник | Пример значения |
|---|---|---|
{phone} | Телефон звонящего (E.164) — для исходящих, номер назначения | +431234567890 |
{direction} | inbound или outbound | inbound |
{agent_id} | Внутренний id агента | 65f1a2b3c4... |
{user_id} | Id владельца рабочего пространства | 65e0b1c2d3... |
{call_id} | Id звонка (позволяет вашему бэкенду позже коррелировать post-call payload) | 65f1f2c4d5... |
Неизвестные плейсхолдеры оставляются как есть — плохой шаблон никогда не уронит звонок.
Что попадает в промпт
Если ваш эндпоинт https://crm.example.com/lookup?phone={phone} возвращает:
{ "name": "Sarah Johnson", "tier": "Gold", "open_orders": 1 }
Системный промпт агента дополняется XML-обёрнутым блоком, названным по имени action:
<call_context>
<block name="crm_lookup">
{ "name": "Sarah Johnson", "tier": "Gold", "open_orders": 1 }
</block>
</call_context>
Не нужно объяснять агенту, как это использовать — LLM подхватывает контекст естественно. Опционально упомяните pre-fetch в системном промпте: "If <call_context> contains a customer name, greet them by name."
Важные ограничения
- Только телефонные звонки. Pre-fetch не работает для виджет-звонков (web) — нет телефонного номера для подстановки.
- Лимит 8 КБ на тело ответа — всё длиннее обрезается перед инжектом. Лимит защищает токен-бюджет вашего промпта и ограничивает зону поражения вредоносного эндпоинта.
- Нет вычисления
condition— pre-fetch всегда срабатывает, когда активен. Транскрипции пока нет, чтобы по ней что-то оценивать.
Используйте GET с лукап-эндпоинтом по ключу-телефону. Держите ответы маленькими и структурированными (JSON-объект с 3–5 полями). Агенту не нужна вся карточка клиента — только те биты, которые меняют разговор.
Live Call Tools
Эти tools срабатывают во время разговора. AI решает, когда вызвать каждый tool, на основе его описания и текущего диалога.
Доступные tools
| Tool | Назначение | Когда использовать |
|---|---|---|
| Call Forwarding | Передача оператору-человеку | Клиент просит человека, сложные вопросы |
| Google Calendar | Проверить доступность и записать на приём | Клиент хочет назначить встречу |
| Outlook Calendar | То же, через Microsoft Outlook | Клиент хочет назначить встречу |
| API Tool RAG | Получить live-данные из внешнего API | Нужна реал-тайм информация (заказы, остатки, состояние аккаунта) |
| Agent Transfer | Передать другому голосовому агенту | Звонящему нужен другой отдел или специалист |
| HubSpot CRM | Чтение/запись контактов и сделок в HubSpot | Логирование звонка в HubSpot, поиск лида |
| MCP servers | Открыть tools любого из ваших зарегистрированных MCP-серверов | У вас работает MCP-совместимый tool-сервер, и вы хотите, чтобы агент использовал его tools в разговоре |
Call Forwarding
Передача звонков человеку при выполнении определённых условий.
| Настройка | Описание | Пример |
|---|---|---|
| Name | Обязательно. Имя человека или отдела | "Sales Manager" |
| Forwarding Number | Дефолтный номер для передачи | "+49 123 456 789" |
| Trigger Condition | Когда агент должен передать | "Customer asks for manager or issue cannot be resolved" |
| Conditional Routing Numbers | Маппинг условие-номер для маршрутизации | {"billing": "+49 111 222", "technical": "+49 333 444"} |
Как это работает:
- Во время разговора AI оценивает Trigger Condition.
- Если заданы conditional routing numbers, совпадающее условие определяет, на какой номер звонить.
- Иначе используется Forwarding Number.
- Агент сообщает звонящему о передаче.
- Звонок переадресуется — если не отвечают, он возвращается к агенту.
Можно добавить несколько tools Call Forwarding под разные отделы — один для «Sales» и другой для «Technical Support» с разными условиями и номерами.
Google Calendar
Подключите свой Google Calendar, чтобы агент мог проверять доступность и записывать на приём во время звонков.
Настройка:
- Сначала откройте Integration → Calendars и подключите свой Google-аккаунт.
- Добавьте tool Google Calendar на вкладку Actions агента.
- Выберите используемый календарь.
- Настройте параметры доступности.
| Настройка | Описание | Дефолт |
|---|---|---|
| Calendar | Обязательно. Какой календарь использовать | Ваш основной календарь |
| Timezone | Часовой пояс для записей (формат IANA) | Автоопределение |
| Work Start Time | Начало рабочих часов | 9:00 |
| Work End Time | Конец рабочих часов | 18:00 |
| Slot Duration | Длительность записи в минутах | 30 |
| Working Days | Доступные дни недели | Понедельник–пятница |
| Buffer Between Appointments | Буфер между записями (0–60 мин) | 0 |
Поддерживаемые длительности слотов: 15, 30, 45, 60, 75, 90, 105, 120 минут.
Точно настройте свои рабочие часы и дни — агент будет предлагать только слоты внутри настроенной доступности.
Outlook Calendar
Подключите свой Outlook Calendar для записи на приём во время звонков. Работает так же, как Google Calendar.
Настройка:
- Сначала откройте Integration → Calendars и подключите свой Outlook-аккаунт.
- Добавьте tool Outlook Calendar на вкладку Actions агента.
- Выберите используемый календарь.
- Настройте параметры доступности.
Настройки идентичны Google Calendar (timezone, рабочие часы, длительность слота, рабочие дни, буфер).
Agent Transfer
Передача звонка другому голосовому агенту на вашем аккаунте. Полезно, когда у вас есть специализированные агенты для разных отделов.
| Настройка | Описание |
|---|---|
| Target Agent | Обязательно. Выберите, какому агенту передавать |
| Trigger Condition | Когда передавать (например, «Caller asks about technical support») |
Пример: Receptionist-агент передаёт звонящих sales-агенту, когда они спрашивают про цены, или support-агенту, когда у них техническая проблема.
HubSpot CRM
Чтение и запись в ваш HubSpot CRM во время звонка. Позволяет агенту логировать взаимодействия, искать контакт по телефону или пушить обновления сделок без необходимости писать скрипты для API-вызовов.
Настройка:
- Откройте страницу Integrations и подключите свой HubSpot-аккаунт.
- Добавьте tool HubSpot CRM на вкладку Actions агента.
- Выберите, какой пайплайн и свойства агенту разрешено трогать.
После добавления tool AI может сопоставить звонящего с HubSpot-контактом по телефону, получить стадию сделки и обновить поля — всё из живого разговора.
MCP servers
Откройте tools любого MCP-совместимого сервера, который вы подключили к Hanc.AI. Один агент может тянуть из нескольких MCP-серверов; один MCP-сервер может обслуживать несколько агентов.
Настройка:
- Подключите свой MCP-сервер(ы) один раз в Integration → MCP servers. Полные шаги регистрации см. на отдельной странице MCP Servers.
- Добавьте запись MCP servers на вкладку Actions этого агента — в выпадающем списке Add Action она сгруппирована под Live call.
- Включите те из ваших зарегистрированных подключений, к которым этот агент должен иметь доступ.
- Добавьте короткую инструкцию «When to use it», чтобы агент знал, когда тянуться к этим tools.
Агент переоткрывает набор tools каждого включённого MCP-сервера в начале каждого звонка, поэтому изменения, которые вы делаете на стороне сервера, появляются автоматически на следующем звонке. Tools переименовываются с префиксом-label подключения, чтобы похоже названные tools с разных серверов не сталкивались.
API Tool RAG
Подключение к внешним API для получения реал-тайм информации во время звонков — искать заказы, проверять остатки, верифицировать аккаунты или получать любые данные, доступные через API.
| Настройка | Описание | Пример |
|---|---|---|
| Name | Обязательно. Имя tool | "Order Lookup" |
| Description / When to Use | Обязательно. Когда запрашивать API | "Customer asks about order status" |
| API URL | Обязательно. Эндпоинт API. Может включать {placeholder}-токены, которые будут заменены значениями из Body Parameters Schema (см. ниже). | "https://api.yourshop.com/orders/{order_id}" |
| HTTP Method | Обязательно. HTTP-метод | GET, POST, PUT, DELETE, PATCH |
| Loading Message | Что говорит агент в ожидании | "Let me check that for you..." |
| Timeout | Максимальное время ожидания (мс) | 5000 (дефолт) |
| Headers | Статические HTTP-заголовки, отправляемые с каждым запросом | {"Authorization": "Bearer KEY"} |
| Query Parameters | Статические query-параметры, добавляемые к каждому запросу | {"apiVersion": "v2"} |
| Body Parameters Schema | Обязательно. JSON Schema, описывающая аргументы, которые AI должен извлечь из разговора и передать tool. См. Написание Body Parameters Schema. | JSON Schema объект |
Всегда задавайте Loading Message — тишина во время API-вызовов кажется звонящему сломанной.
Старый чекбокс «Run on call start» на API Tool RAG заменён выделенной записью Pre fetch. Используйте Pre fetch, когда хотите получить данные до начала разговора; используйте API Tool RAG, когда агент должен решать во время звонка, нужно ли тянуть данные.
Написание Body Parameters Schema
Несмотря на название, Body Parameters Schema — это не сырое тело запроса. Это JSON Schema, описывающая, что AI должен извлечь из разговора и передать вашему tool. В зависимости от HTTP-метода и шаблона URL эти значения попадают в URL, query-строку или JSON-тело:
| HTTP-метод | Куда попадают извлечённые значения |
|---|---|
URL содержит {name} | Совпадающее значение подставляется в URL |
GET, DELETE | Оставшиеся значения добавляются к URL как ?key=value |
POST, PUT, PATCH | Оставшиеся значения отправляются как JSON-тело |
Минимальная структура
{
"type": "object",
"properties": {
"param_name": {
"type": "string",
"description": "What this value is and how the AI should pick it"
}
},
"required": ["param_name"]
}
Корневой type всегда "object". properties перечисляет каждый аргумент. required помечает те, которые AI обязан всегда предоставлять — если клиент ещё не назвал значение, AI спросит перед вызовом tool.
Справочник полей
| Поле | Назначение |
|---|---|
type | JSON-тип значения: "string", "number", "integer", "boolean", "array", "object" |
description | Самое важное. Говорит AI, что значит значение, какой формат использовать и когда его предоставлять. По возможности добавляйте примеры. |
enum | Ограничивает значение одним из фиксированного списка. AI мапит естественную речь в ближайшую опцию (например, "the blue one" → "blue"). |
minimum, maximum | Числовые границы. AI откажет/обрежет значения вне диапазона. |
default | Значение, используемое, когда AI не передал это поле. Не обязательно, но документирует неявное значение. |
format | Подсказка для валидации, например, "email", "date" (YYYY-MM-DD), "uri". |
Примеры
Поиск продукта (только keyword):
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Product search keyword — e.g. \"phone\", \"laptop\", \"Apple\", \"Samsung\""
}
},
"required": ["query"]
}
Используется с URL https://dummyjson.com/products/search?q={query}&limit=5 и GET: значение query идёт в плейсхолдер URL. В тело ничего не попадает.
Поиск заказа по ID:
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "Order ID the customer is asking about, usually 6 to 10 digits. Ask the customer if not provided."
}
},
"required": ["order_id"]
}
Используется с URL https://api.example.com/orders/{order_id} и GET.
Бронирование с несколькими обязательными полями:
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"description": "Product ID returned by a previous search_products call."
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "How many items to reserve. Default 1."
},
"delivery_method": {
"type": "string",
"enum": ["pickup", "home_delivery", "locker"],
"description": "How the customer wants to receive the item."
},
"customer_email": {
"type": "string",
"format": "email",
"description": "Customer's email for order confirmation. Ask if not provided."
}
},
"required": ["product_id", "delivery_method", "customer_email"]
}
Используется с POST https://api.example.com/reservations: четыре значения идут в JSON-тело. AI спросит у клиента недостающие required-поля перед вызовом tool.
Tool без параметров:
{
"type": "object",
"properties": {}
}
Используйте это, когда эндпоинт полностью статический (например, GET /store/hours) и AI не нужно ничего передавать.
Лучшие практики для голосовых агентов
- Держите схему плоской. Вложенные объекты и массивы работают, но AI может сбиться, говоря по телефону. Предпочтительно — максимум 3–5 полей верхнего уровня.
- Всегда пишите
descriptionдля каждого поля. Включайте примеры (e.g. "phone", "laptop") — примеры направляют AI надёжнее абстрактных определений. - Используйте
enum, когда у вас есть фиксированный список значений. Это убирает риск того, что AI придумает значения или пошлёт"Electronics"вместо"electronics". - Помечайте поле
required, только если tool без него не может работать. Всё остальное опционально, и AI пропустит это, когда клиент не упомянул, — без неловких лишних вопросов. - Используйте имена в
snake_caseи точно совпадайте с{placeholder}-токенами в URL. - Документируйте поведение для отсутствующих значений в
description— например,"Omit if no budget limit","Default 5".
Live Messaging Actions
(v2.4) Send SMS live и Send Email live позволяют агенту отправить текст или email в середине звонка, пока он ещё разговаривает со звонящим — не только после окончания звонка, как их post-call аналоги. Используйте их, чтобы отправить ссылку, подтверждение записи, код или резюме, с которым звонящий может что-то сделать до того, как повесит трубку.
AI сам запускает эти actions, в моменте, на основе описания action и разговора — так же, как он решает вызвать любой другой live-tool.
| Action | Срабатывает | Отправляет на |
|---|---|---|
| Send SMS live | Во время звонка | Телефонный номер звонящего |
| Send Email live | Во время звонка | Email звонящего |
Лимит отправок на звонок
Каждый канал ограничен 3 отправками на канал за звонок. Агент может отправить до трёх live-SMS и до трёх live-email за один звонок; четвёртая отправка по каналу отклоняется. Это удерживает болтливый или зациклившийся разговор от спама звонящего.
Матрица отказов
Live-отправка отклоняется (и агенту сообщается причина, чтобы он мог изящно восстановиться), когда:
| Условие | Результат |
|---|---|
| Некорректный или отсутствующий email (для Send Email live) | Отказ — агент просит звонящего подтвердить email |
| Некорректный или отсутствующий телефон (для Send SMS live) | Отказ — агент просит звонящего подтвердить номер |
| Тело больше 160 символов | Отказ — сообщение слишком длинное для отправки как есть |
| Достигнут лимит канала (уже 3 отправки за звонок) | Отказ — дальнейших отправок по этому каналу нет |
Поскольку агент получает причину отказа обратно, он может исправить проблему в разговоре («Could you spell that email for me?») и попробовать снова, а не молча провалиться.
Логирование в CRM timeline
Каждая live-отправка логируется в CRM timeline контакта, так что сообщение, которое агент отправил в середине звонка, показывается рядом с записью звонка — вы можете точно видеть, что было отправлено, по какому каналу и когда.
Умное сцепление формы с каналом
Когда веб-звонящий отправляет форму виджета лишь с некоторыми контактными данными, агент использует только тот канал, который у него реально есть:
- Звонящий отправил только email → агент запускает Send Email live (никогда SMS).
- Звонящий отправил только телефон → агент запускает Send SMS live (никогда email).
- Звонящий отправил оба → агент может использовать любой канал, как того требует разговор.
Это значит, что агент никогда не пытается написать SMS звонящему, который дал только email, или email тому, кто дал только номер — доступные данные формы определяют, какое live-действие на столе.
Пост-звоночные actions
Пост-звоночные actions срабатывают после того, как звонок завершился и цепочка анализа выдала summary, sentiment и извлечённые переменные. Они потребляют данные звонка — они не разговаривают с клиентом.
Доступные actions
| Action | Назначение |
|---|---|
| Send Email | Отправить структурированное резюме команде или клиенту |
| Send SMS | SMS-подтверждение звонящему |
| Send WhatsApp | WhatsApp-сообщение или шаблон (работает внутри и вне 24-часового окна) |
| API Call | Запушить полный payload звонка во внешний API (CRM, вебхук, ваш data warehouse) |
Send Email
| Настройка | Описание |
|---|---|
| Name | Обязательно. Идентификатор action |
| Subject | Обязательно. Тема письма |
| Message Body | Обязательно. Тело письма — может включать retrieval-переменные |
| Trigger Condition | Когда отправлять (пусто = всегда) |
| Recipients | Обязательно. Email-адреса, которые всегда получают письмо |
| Conditional Recipients | Маппинг условие-получатель |
Использование переменных в email:
New lead from phone call:
Name: {{customer_name}}
Email: {{customer_email}}
Interested in: {{selected_plan}}
Notes: {{call_notes}}
Send SMS
| Настройка | Описание |
|---|---|
| Name | Обязательно. Идентификатор action |
| Sender Name | Отображаемое имя отправителя |
| Message | Обязательно. Содержимое SMS (может включать переменные) |
| Trigger Condition | Когда отправлять |
| Recipients | Обязательно. Номера, которые всегда получают SMS |
| Conditional Recipients | Маппинг условие-номер |
Send WhatsApp
WhatsApp-сообщения на HANC используют предварительно одобренные шаблоны из централизованного Twilio Content-аккаунта — вы не вставляете Template SID вручную. Редактор action показывает выпадающий список всех шаблонов, которые сейчас активны и одобрены, и вы выбираете один. Плейсхолдеры внутри шаблона ({{1}}, {{2}}, …) затем заполняются inline из переменных звонка или статического текста, который вы маппите в редакторе.
| Настройка | Описание |
|---|---|
| Name | Обязательно. Идентификатор action |
| Trigger Condition | Когда отправлять |
| Recipients | Обязательно. Номера, которые всегда получают сообщение |
| Conditional Recipients | Маппинг условие-номер |
| Template | Обязательно. Выпадающий выбор предодобренных WhatsApp-шаблонов, синхронизируемых из централизованного Twilio Content-аккаунта. Каждая запись показывает имя шаблона, язык и превью тела, чтобы вы знали, какой выбрать. |
| Template Variables | Для выбранного шаблона редактор перечисляет каждый плейсхолдер ({{1}}, {{2}}, …) и позволяет смапить его на переменную звонка (см. ниже) или статическую строку. |
Доступные переменные звонка, которые можно смапить в плейсхолдеры шаблона:
| Переменная | Описание |
|---|---|
{{call_from}} | Телефонный номер звонящего |
{{call_to}} | Номер, на который звонили |
{{call_summary}} | AI-сгенерированное резюме звонка |
{{call_sentiment}} | Sentiment (positive/neutral/negative) |
{{call_task_achieved}} | Была ли достигнута задача звонка |
{{call_transcription}} | Полная транскрипция звонка |
WhatsApp требует, чтобы каждое business-initiated сообщение вне 24-часового customer-service окна использовало предодобренный шаблон. HANC синхронизирует список одобренных шаблонов из общего Twilio Content-аккаунта, так что выпадающий список всегда показывает ровно то, что прямо сейчас разрешено отправить — вы не можете случайно выбрать черновик, отклонённый шаблон или несуществующий SID. Чтобы добавить новый шаблон, свяжитесь с поддержкой; после одобрения WhatsApp он появляется в списке автоматически.
API Call
Пост-звоночный action API Call — это ваш универсальный вебхук в остальную часть вашего стека. Выберите метод, задайте URL — и мы отправим весь payload звонка. Ваш эндпоинт получает структурированный JSON-объект, описывающий, что произошло.
| Настройка | Описание |
|---|---|
| Name | Обязательно. Идентификатор action |
| Trigger Condition | Когда срабатывать (пусто = каждый звонок). Оценивается LLM по транскрипции. |
| API URL | Обязательно. URL эндпоинта API |
| HTTP Method | Обязательно. GET, POST, PUT, DELETE, PATCH |
| Headers | Опциональные заголовки запроса |
| Query Parameters | Опциональные query-параметры |
Что получает ваш эндпоинт
Для POST / PUT / PATCH ваш эндпоинт получает JSON-объект в теле запроса. Ваши настроенные body-параметры мёрджатся с полным payload звонка:
{
"call_from": "+431234567890",
"call_to": "+439876543210",
"direction": "inbound",
"call_type": "phone",
"call_status": "ended",
"start_timestamp": 1730000000000,
"end_timestamp": 1730000187000,
"duration": 187000,
"transcription": [
{ "speaker": "agent", "content": "Hello…", "timestamp": 1730000001000 },
{ "speaker": "user", "content": "Hi…", "timestamp": 1730000003000 }
],
"call_summary": "Customer asked about pricing…",
"task_achieved": true,
"sentiment": { "sentiment": "positive", "explanation": "…" },
"custom_analysis_data": {
"name": "John",
"email": "john@example.com"
},
"collected_data": { /* in-call form submissions */ },
"transfer_history": [ /* if any agent transfer happened */ ],
"recording_url": "https://…",
"disconnection_reason": "user_hangup",
"is_anonymous": false,
"is_simulation": false,
"created_at": 1730000000000,
"updated_at": 1730000187000
}
Для GET / DELETE те же поля разворачиваются в query-строку — но вложенные значения вроде transcription, sentiment и custom_analysis_data отбрасываются (URL не могут адекватно нести структурированные данные). Используйте POST/PUT/PATCH, если вам нужен транскрипт.
Каждый запрос также получает заголовок X-Correlation-Id для трейсинга и таймаут в 30 секунд.
- Pre fetch шаблонизирует
{phone}и т. д. в URL/headers/query/body. Возвращает данные в промпт, перед звонком. - Post call API Call отправляет весь дамп звонка в теле или query. Без шаблонизации URL — ваш эндпоинт получает статический URL + динамическое тело.
Retrieval Variables
Retrieval Variables — это кастомные поля данных, которые AI автоматически извлекает из разговоров. Например, агент может зафиксировать имя звонящего, email, номер телефона или любую другую информацию, которую вы определите.
Дефолтные переменные
Каждый новый агент создаётся с двумя дефолтными retrieval-переменными:
| Переменная | Тип | Описание |
|---|---|---|
| Email-адрес звонящего | ||
| Phone | Phone | Телефонный номер звонящего |
Они включены по умолчанию и показываются в форме виджета звонка. Их можно редактировать или удалять и добавлять свои кастомные переменные.
Типы переменных
| Тип | Сценарий | Пример |
|---|---|---|
| Text | Имена, адреса, заметки, свободный ввод | Имя клиента, адрес доставки |
| Number | Количества, бюджеты, ID | Количество в заказе, размер бюджета |
| Email-адреса с валидацией | Email клиента | |
| Phone | Телефонные номера с валидацией | Телефон клиента |
| Selector | Выбор из предопределённых опций | Предпочитаемый тариф (Basic/Pro/Enterprise) |
| Checkbox | Да/нет согласие или подтверждение | «I agree to receive marketing emails» |
Настройка переменной
| Поле | Описание | Пример |
|---|---|---|
| Variable Name | Обязательно. Идентификатор переменной | customer_email |
| Instructions for AI | Обязательно. Инструкции для AI, когда и как извлекать это значение | "The customer's email address. Ask if not provided." |
| Example Format | (Опционально) Пример ожидаемого формата | "john@example.com" |
| Options (для Selector) | (Только Selector) Список разрешённых опций | ["Basic", "Pro", "Enterprise"] |
| Show in Form | Показывать ли это поле в форме виджета звонка | Включено по умолчанию |
Show in Form
Когда Show in Form включено, переменная появляется как видимое поле ввода в веб-виджете до и во время звонка. Это позволяет звонящим заполнять свою информацию напрямую, дополнительно к извлечению её AI из разговора.
AI естественно спросит недостающую информацию в ходе разговора. Задайте чёткое описание вроде «Customer's email address, ask politely if not provided» — и агент разберётся.
Добавление Tools & Actions
- Перейдите на вкладку Actions вашего агента.
- Нажмите Add Tool.
- Выберите правильную фазу из выпадающего списка — Pre fetch, Live call или Post call.
- Настройте параметры.
- Сохраните — изменения применятся на следующем звонке.
Все записи перечислены вместе в таблице Actions. Кликните любую строку, чтобы отредактировать, или используйте иконку корзины, чтобы удалить.
Связанное
- Обзор голосовых агентов
- Prompt Engineering — ссылайтесь на tools в вашем промпте
- База знаний — источники информации
- Интеграции — внешние системы, с которыми ваши tools могут общаться