Интеграция

Записи — куда попадает то, что собирает агент

Ваши агенты заносят обращения, чек-листы документов, запросы на бронирование и эскалации в очередь, которую вы разбираете, и каждая запись связана с породившей её беседой. Через MCP или через обычный HTTP, если у вас свой стек.

Агент, который квалифицирует обращение, а затем оставляет его в стенограмме, сделал полдела. Записи — это вторая половина: очередь в вашей панели, по одной записи на каждое дело, которому нужен человек, с породившей его беседой в одном клике.

Здесь ничего не нужно настраивать. Когда мастер настройки создаёт агента, он также подключает эти инструменты, поэтому у шаблона, который обещает «передать вашей команде структурированный файл», теперь есть куда его передать.

Что заносит агент

ТипЗаносится, когда
leadДостаточно, чтобы коллега мог действовать — кто, чего хочет, как с ним связаться.
checklistДокументы не собраны и их будут запрашивать в течение нескольких дней.
bookingЗапрошен слот, подтвердить который может только человек.
escalationКому-то нужен человек прямо сейчас.

Lead или checklist обновляет запись своей беседы, а не создаёт вторую, поэтому агент, занёсший что-то дважды в одном чате, исправляет себя, а не засоряет вашу очередь. Booking и escalation создают запись каждый раз, потому что двое таких — это две реальные вещи.

Референс

Каждая запись получает короткий референс — 7K4M-2QP — построенный из алфавита без O/0 и без I/1, потому что его зачитывают по телефону и вбивают обратно с ошибкой. Агент даёт его вашему клиенту, чтобы тот мог спросить о деле позже.

Референс — это не ключ доступа. Чтение авторизуется личностью спрашивающего, перенесённой из беседы, поэтому референс, услышанный кем-то мельком, не вернёт ничего.

Использование инструментов из вашего стека

Два интерфейса, одно и то же поведение. Ваш токен — в панели под Tenant & API.

MCP

Уже подключён для агентов, созданных мастером. Чтобы подключить его в другом месте, направьте MCP-сервер streamable_http на https://agent4.io/api/mcp с заголовком Authorization: Bearer. Инструменты: submit_lead, open_checklist, request_booking, escalate, lookup_case, close_case.

HTTP

curl -X POST https://agent4.io/api/tools/records \
  -H "Authorization: Bearer $AGENT4_TOOL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "type": "lead",
        "title": "Sarah — quote for a home policy",
        "summary": "Wants contents cover on a flat she has just bought.",
        "contact": { "name": "Sarah", "phone": "07700 900000" },
        "fields": { "sumInsured": "40000", "startDate": "2026-08-01" }
      }'
{ "reference": "7K4M-2QP", "created": true, "message": "Recorded. The reference is 7K4M-2QP …" }

Закройте запись через PATCH /api/tools/records/{reference} и {"outcome":"quoted"}. Прочитайте её через GET /api/tools/records/{reference}, что требует X-Agent4-End-User того человека, которому запись принадлежит.

Поля

title, summary, contact и urgency одинаковы в любом ремесле — это то, по чему очередь сортирует и что показывает. Всё остальное идёт в fields, и каждый шаблон объявляет ключи, которые собирает его ремесло, поэтому telephone сворачивается в phone на входе. Ключ, который не объявил ни один шаблон, сохраняется, а не отбрасывается; он появляется в записи под пометкой «также упомянуто».

Уведомления

Очередь, о которой никому не сообщают, — это очередь, которую никто не читает, поэтому Уведомления сидят на самой очереди. Два канала, и вы выбираете по типу, какие срабатывают.

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

Webhook. Мы отправляем запись POST-запросом на ваш URL в момент её занесения:

{
  "event": "record.created",
  "record": {
    "reference": "7K4M-2QP",
    "type": "lead",
    "title": "Sarah — quote for a home policy",
    "summary": "Wants contents cover on a flat she has just bought.",
    "contact": { "name": "Sarah", "phone": "07700 900000" },
    "fields": { "sumInsured": "40000", "startDate": "2026-08-01" },
    "agent": "Front desk"
  },
  "url": "https://agent4.io/dashboard/records/7K4M-2QP"
}

С ним приходят два заголовка: X-Agent4-Timestamp и X-Agent4-Signature — HMAC-SHA256 от метки времени, точки и сырого тела, с ключом — секретом подписи со страницы настроек. Проверьте её, и вы знаете, что POST наш, а не от того, кто узнал URL. Метка времени находится внутри подписи, поэтому перехваченный запрос нельзя воспроизвести против вас позже.

expected = hmac.new(secret.encode(), f"{ts}.{raw_body}".encode(), hashlib.sha256).hexdigest()
hmac.compare_digest(expected, request.headers["X-Agent4-Signature"])

URL должен быть https и доступен из публичного интернета — адрес, который разрешается только внутри вашей сети, отклоняется при сохранении, а не отказывает молча каждый раз, когда приходит запись. Отправьте тест со страницы настроек, прежде чем полагаться на него; он сообщает, что на самом деле ответил получатель.

Полезная нагрузка несёт содержимое записи, включая контактные данные — webhook, который бы их опустил, не был бы достаточен, чтобы открыть заявку, а ради этого он и существует. Поэтому конечная точка, на которую вы это направляете, получает персональные данные ваших клиентов и заслуживает той же заботы, что и любое другое место, где вы их храните.

Передача записи коллеге

Второй учётной записи не нужно. Включите ссылку и отправьте её — в WhatsApp или как QR-код, который кто-то сканирует с вашего экрана. Закрытие дела выключает ссылку, поэтому отзыв доступа происходит как часть завершения работы, а не как то, что нужно помнить. Выключение ссылки и повторное включение даёт другую ссылку, поэтому «выключено» действительно значит выключено для того, у кого осталась старая.

Запись также можно распечатать. У распечатки нет срока действия и её нельзя отозвать, о чём стоит подумать секунду, прежде чем она покинет здание.

Уход

Экспортируйте каждую запись в CSV из очереди в любой момент. Если вы перерастёте это и перейдёте на CRM, агенты продолжат работать — записи ваши, и они путешествуют с вами.

Что мы храним и как

Всё содержимое записи — заголовок, сводка, контактные данные, заметки — зашифровано в состоянии покоя. В открытых столбцах лежит только то, что нужно очереди для сортировки и фильтрации: тип, статус, метки времени и идентификаторы, указывающие обратно на беседу. Ни один из них не идентифицирует человека.

Следствие, принятое сознательно: мы не можем искать внутри ваших записей запросом к базе данных. Фильтрация — по типу, статусу, агенту и дате.

Записи — это персональные данные ваших клиентов, хранимые от вашего имени. Удалите одну или все из панели; закрытие вашей учётной записи удаляет их вместе с ней.