Пошаговые инструкции intermediate 25 мин

Как подключить ИИ-агента к CRM: лиды, сделки, задачи, webhooks и безопасная запись

Пошаговая инструкция по подключению ИИ-агента к CRM: API-доступы, лиды, контакты, сделки, дедупликация, webhooks, approval, tool policy, логи и тесты.

CRM tool calling Bitrix24 amoCRM лиды HubSpot Инструкция webhook сделки ИИ-агент CRM

Что получится в результате

Соберем безопасную интеграцию ИИ-агента с CRM. Агент сможет принимать обращение из сайта, чата, формы или почты, извлекать контакт и потребность, проверять дубли, создавать лид, добавлять комментарий, ставить задачу менеджеру, готовить черновик изменения сделки и получать обратные события из CRM.

В первой версии агент не должен самостоятельно менять деньги, стадии, ответственного, договоренности и критичные поля сделки. Правильный MVP: read-only чтение, создание лида, комментарии, задачи и write-back только через правила или подтверждение человека.

В результате будет рабочий контур:

  1. CRM-подключение описано в `crm_connections`;
  2. доступы лежат в `crm_credentials`;
  3. сущности CRM сопоставлены в `crm_entity_map`;
  4. входящие обращения лежат в `inbound_requests`;
  5. нормализованные контакты лежат в `crm_contact_candidates`;
  6. проверка дублей пишется в `crm_dedupe_checks`;
  7. лиды создаются через `crm_lead_queue`;
  8. сделки обновляются через `crm_deal_update_queue`;
  9. задачи менеджерам создаются через `crm_task_queue`;
  10. комментарии пишутся через `crm_note_queue`;
  11. разрешения tools лежат в `crm_tool_policy`;
  12. подтверждения пишутся в `crm_approval_queue`;
  13. события из CRM принимаются в `crm_webhook_events`;
  14. результаты API-вызовов пишутся в `crm_api_log`;
  15. ошибки пишутся в `crm_error_log`;
  16. тесты лежат в `crm_integration_test_cases`;
  17. метрики качества пишутся в `crm_integration_metrics`.

Итоговый MVP должен уметь: создать лид из входящего обращения, найти существующий контакт, не создать дубль, добавить summary диалога, поставить задачу менеджеру и отправить спорное изменение на approval.

Что понадобится

Подготовьте:

  1. CRM: Bitrix24, amoCRM, HubSpot, Salesforce или своя CRM;
  2. тестовый портал или sandbox CRM;
  3. API key, OAuth-приложение или webhook CRM;
  4. backend, n8n, Make или другой orchestration layer;
  5. LLM API key;
  6. тестовый канал входящих обращений;
  7. список полей контакта;
  8. список полей лида;
  9. список стадий сделки;
  10. список менеджеров и команд;
  11. правила дедупликации;
  12. список разрешенных CRM-действий;
  13. список запрещенных CRM-действий;
  14. 20-50 тестовых обращений;
  15. человек, который проверит первые write-back действия.

Для инструкции берем универсальную схему. Названия методов CRM будут отличаться, но логика одинаковая: агент не ходит в CRM напрямую, а вызывает ограниченные backend tools.

Шаг 1. Выберите первый CRM-сценарий

Не подключайте всю CRM сразу. Выберите один сценарий.

Хороший первый сценарий:

  1. пользователь оставляет заявку на сайте;
  2. агент извлекает имя, телефон, email, компанию и потребность;
  3. backend проверяет дубли;
  4. backend создает лид;
  5. агент добавляет summary;
  6. backend ставит задачу менеджеру;
  7. менеджер получает уведомление.

Плохой первый сценарий:

  1. агент меняет стадии сделок;
  2. агент закрывает сделки;
  3. агент назначает скидки;
  4. агент удаляет контакты;
  5. агент массово пишет клиентам.

Проверка: первый сценарий можно пройти вручную за 5 минут и понять, какие поля CRM нужны.

Шаг 2. Опишите CRM-подключение

Создайте `crm_connections`.

Колонки:

id
connection_key
crm_type
base_url
auth_type
environment
is_active
created_at
updated_at

Пример:

{
  "connection_key": "bitrix24_sales_test",
  "crm_type": "bitrix24",
  "base_url": "https://example.bitrix24.ru",
  "auth_type": "incoming_webhook",
  "environment": "staging",
  "is_active": true
}

Проверка: production и staging CRM не используют один и тот же connection key.

Шаг 3. Спрячьте доступы в `crm_credentials`

Создайте `crm_credentials`.

Колонки:

id
connection_key
credential_type
secret_ref
scopes_json
expires_at
last_rotated_at
is_active

Правила:

  1. webhook URL, OAuth token и refresh token не показывать агенту;
  2. хранить секреты в `.env`, vault или secret manager;
  3. давать минимальные scopes;
  4. не использовать аккаунт администратора;
  5. rotation делать по расписанию;
  6. логировать только `secret_ref`, а не значение секрета.

Проверка: в prompt, logs и `crm_api_log` нет полного webhook URL или token.

Шаг 4. Создайте карту сущностей CRM

Создайте `crm_entity_map`.

Колонки:

id
connection_key
local_entity
crm_entity
crm_method_create
crm_method_update
crm_method_read
required_fields_json
readonly_fields_json

Сопоставьте:

  1. `contact` -> CRM contact;
  2. `lead` -> CRM lead;
  3. `deal` -> CRM deal;
  4. `company` -> CRM company;
  5. `task` -> CRM task;
  6. `note` -> CRM comment или timeline note;
  7. `activity` -> CRM activity.

Проверка: разработчик видит, какой tool работает с какой CRM-сущностью и методом.

Шаг 5. Зафиксируйте поля контакта

Создайте `crm_contact_fields`.

Колонки:

id
field_key
crm_field_code
field_type
is_required
is_unique_candidate
can_ai_write
can_ai_read

Минимальные поля:

  1. `name`;
  2. `phone`;
  3. `email`;
  4. `company_name`;
  5. `position`;
  6. `source`;
  7. `messenger`;
  8. `consent_status`;
  9. `language`;
  10. `timezone`.

Правила:

  1. AI может предлагать `name`, `company_name`, `position`;
  2. телефон и email проходят валидацию;
  3. согласие на коммуникацию не выдумывается;
  4. секретные поля AI не читает и не пишет.

Проверка: агент не создает контакт без email или телефона, если CRM требует один из этих каналов.

Шаг 6. Зафиксируйте поля лида

Создайте `crm_lead_fields`.

Колонки:

id
field_key
crm_field_code
field_type
is_required
default_value
can_ai_write
requires_approval

Минимальные поля лида:

  1. `title`;
  2. `contact_name`;
  3. `phone`;
  4. `email`;
  5. `source`;
  6. `utm_source`;
  7. `utm_campaign`;
  8. `need_summary`;
  9. `budget_range`;
  10. `urgency`;
  11. `assigned_team`;
  12. `comment`.

Запрещенные для AI поля на старте:

  1. `deal_amount`;
  2. `discount`;
  3. `contract_terms`;
  4. `final_stage`;
  5. `manager_commission`;
  6. `payment_status`.

Проверка: поле суммы сделки не заполняется моделью без правила или оператора.

Шаг 7. Создайте таблицу входящих обращений

`inbound_requests` хранит сырое событие до CRM.

Колонки:

id
request_id
channel
source
raw_payload_json
message_text
attachments_json
utm_json
received_at
status

Статусы:

  1. `received`;
  2. `normalized`;
  3. `dedupe_checked`;
  4. `queued_to_crm`;
  5. `crm_created`;
  6. `needs_human`;
  7. `failed`.

Проверка: повтор webhook с тем же `request_id` не создает вторую заявку.

Шаг 8. Нормализуйте входящие данные

Создайте `normalized_request`.

Колонки:

id
request_id
clean_text
detected_language
customer_name
phone_normalized
email_normalized
company_name
need_summary
source_channel
created_at

Правила нормализации:

  1. телефон привести к единому формату;
  2. email привести к lowercase;
  3. HTML убрать;
  4. UTM сохранить отдельно;
  5. вложения не отправлять в CRM без проверки;
  6. длинный диалог превратить в summary;
  7. исходный payload не терять.

Проверка: `+7 (999) 111-22-33` и `79991112233` становятся одним нормализованным телефоном.

Шаг 9. Настройте извлечение данных через structured output

Агент должен возвращать JSON, а не произвольный текст.

Prompt:

Ты извлекаешь данные для CRM.
Верни только JSON по схеме.
Не выдумывай телефон, email, бюджет и имя.
Если данных нет, верни null.
Если запрос связан с деньгами, договором или жалобой, поставь needs_human = true.

Схема:

{
  "name": "string|null",
  "phone": "string|null",
  "email": "string|null",
  "company": "string|null",
  "need_summary": "string",
  "intent": "sales_lead|support|partner|complaint|other",
  "urgency": "low|normal|high",
  "needs_human": true
}

Проверка: если клиент написал "позвоните мне", но не оставил номер, агент не придумывает телефон.

Шаг 10. Создайте кандидата контакта

`crm_contact_candidates` хранит извлеченные контакты до записи в CRM.

Колонки:

id
request_id
name
phone
email
company_name
confidence_score
validation_status
validation_errors_json
created_at

Валидация:

  1. email имеет корректный формат;
  2. phone проходит нормализацию;
  3. хотя бы один контактный канал заполнен;
  4. name не содержит мусор;
  5. company не равна сообщению целиком;
  6. confidence ниже 0.7 отправляет на ручную проверку.

Проверка: кандидат без телефона и email не уходит в CRM автоматически.

Шаг 11. Сделайте дедупликацию

Создайте `crm_dedupe_checks`.

Колонки:

id
request_id
phone_hash
email_hash
matched_contact_id
matched_lead_id
matched_deal_id
match_reason
action
created_at

Порядок проверки:

  1. поиск по email;
  2. поиск по телефону;
  3. поиск по внешнему customer id;
  4. поиск по open lead;
  5. поиск по open deal;
  6. если найден контакт и открытая сделка, добавить note;
  7. если найден контакт без сделки, создать лид или задачу;
  8. если ничего не найдено, создать новый лид.

Возможные действия:

  1. `create_new_lead`;
  2. `attach_to_existing_contact`;
  3. `add_note_to_open_deal`;
  4. `create_task_for_manager`;
  5. `needs_human_review`.

Проверка: два обращения с одним email не создают два новых контакта.

Шаг 12. Создайте очередь CRM-лидов

`crm_lead_queue` защищает CRM от хаотичных вызовов.

Колонки:

id
request_id
connection_key
lead_payload_json
status
attempts
last_error
crm_lead_id
created_at
updated_at

Статусы:

  1. `queued`;
  2. `validating`;
  3. `waiting_approval`;
  4. `sending`;
  5. `created`;
  6. `failed`;
  7. `skipped_duplicate`.

Проверка: если CRM API недоступна, заявка остается в очереди и повторяется, а не теряется.

Шаг 13. Создайте backend tool `create_crm_lead`

Агент вызывает не CRM API, а backend tool.

Вход:

{
  "request_id": "req-001",
  "name": "Иван",
  "phone": "+79991112233",
  "email": "ivan@example.com",
  "company": "Ромашка",
  "need_summary": "Интересуется внедрением ИИ-агента в поддержку",
  "source": "site_chat"
}

Backend делает:

  1. проверку API key клиента;
  2. проверку схемы;
  3. нормализацию контактов;
  4. дедупликацию;
  5. проверку tool policy;
  6. запись в `crm_lead_queue`;
  7. вызов CRM API;
  8. запись результата в `crm_api_log`.

Проверка: агент не может передать произвольный CRM method вроде `crm.deal.delete`.

Шаг 14. Настройте `crm_tool_policy`

Создайте `crm_tool_policy`.

Колонки:

id
tool_name
enabled
can_read
can_write
requires_approval
allowed_fields_json
blocked_fields_json
max_calls_per_run
is_active

Правила для MVP:

  1. `find_contact` разрешен read-only;
  2. `find_open_deal` разрешен read-only;
  3. `create_lead` разрешен после dedupe;
  4. `add_note` разрешен;
  5. `create_task` разрешен;
  6. `update_deal_stage` требует approval;
  7. `update_deal_amount` запрещен;
  8. `delete_contact` запрещен;
  9. `merge_contacts` запрещен;
  10. `send_message_to_client` требует approval.

Проверка: попытка обновить сумму сделки блокируется до CRM API.

Шаг 15. Создайте очередь комментариев

`crm_note_queue` хранит заметки и summary.

Колонки:

id
request_id
crm_entity_type
crm_entity_id
note_text
visibility
status
created_at
sent_at

Типы заметок:

  1. `dialog_summary`;
  2. `customer_need`;
  3. `ai_recommendation`;
  4. `handoff_reason`;
  5. `source_context`;
  6. `operator_note`.

Правила:

  1. заметка не должна содержать API keys;
  2. заметка не должна содержать полный prompt;
  3. длинный диалог сокращается;
  4. клиентские персональные данные не дублируются без необходимости;
  5. заметка привязана к lead, deal или contact.

Проверка: менеджер видит короткое summary, а не сырой лог модели.

Шаг 16. Создайте очередь задач менеджеру

`crm_task_queue` нужна для next step.

Колонки:

id
request_id
crm_entity_type
crm_entity_id
task_title
task_description
assignee_id
deadline_at
priority
status
created_at

Правила постановки задачи:

  1. urgent заявка - deadline 15-30 минут;
  2. normal заявка - deadline 2-4 часа;
  3. без контакта - задача "уточнить контакт";
  4. жалоба - задача ответственному руководителю;
  5. сложный запрос - задача профильной команде.

Проверка: после создания лида менеджер получает конкретную задачу, а не просто новый объект в CRM.

Шаг 17. Подготовьте обновление сделки как черновик

Не меняйте сделку сразу. Создайте `crm_deal_update_queue`.

Колонки:

id
request_id
crm_deal_id
proposed_changes_json
reason
confidence_score
requires_approval
status
approved_by
sent_at
created_at

Разрешенные черновики:

  1. добавить next step;
  2. предложить stage;
  3. предложить priority;
  4. предложить source;
  5. предложить tags;
  6. предложить summary.

Запрещено без approval:

  1. менять сумму;
  2. закрывать сделку;
  3. ставить `won`;
  4. ставить `lost`;
  5. менять ответственного;
  6. менять договорные условия.

Проверка: агент готовит предложение, а CRM меняется только после подтверждения.

Шаг 18. Настройте approval

Создайте `crm_approval_queue`.

Колонки:

id
request_id
action_type
crm_entity_type
crm_entity_id
payload_json
reason
risk_level
status
approved_by
approved_at
rejected_reason

Через approval должны проходить:

  1. изменение стадии сделки;
  2. изменение суммы;
  3. смена ответственного;
  4. отправка сообщения клиенту;
  5. создание коммерческого предложения;
  6. изменение даты оплаты;
  7. массовое обновление CRM;
  8. merge контактов;
  9. любые действия с жалобой или возвратом.

Проверка: оператор видит действие, причину и diff до подтверждения.

Шаг 19. Настройте входящие события из CRM

CRM должна не только принимать записи, но и сообщать агенту о событиях.

Создайте `crm_webhook_events`.

Колонки:

id
connection_key
event_id
event_type
crm_entity_type
crm_entity_id
payload_json
received_at
processed_at
status

События:

  1. создан лид;
  2. создана сделка;
  3. изменена стадия;
  4. добавлен комментарий;
  5. назначен ответственный;
  6. закрыта задача;
  7. клиент ответил;
  8. сделка выиграна;
  9. сделка проиграна.

Проверка: повторное CRM-событие с тем же `event_id` не обрабатывается дважды.

Шаг 20. Обновляйте контекст агента из CRM

Создайте read-only tool `get_crm_context`.

Вход:

{
  "email": "ivan@example.com",
  "phone": "+79991112233"
}

Выход:

{
  "contact_id": "123",
  "open_deal_id": "456",
  "deal_stage": "qualification",
  "last_activity_summary": "Обсуждали внедрение агента поддержки",
  "assigned_manager": "manager_7"
}

Правила:

  1. tool только читает;
  2. возвращает минимум полей;
  3. скрывает приватные заметки;
  4. не возвращает платежные секреты;
  5. логирует доступ.

Проверка: агент видит текущую стадию, но не получает лишние персональные данные.

Шаг 21. Разведите CRM, память и базу знаний

У каждой системы своя роль.

CRM хранит:

  1. контакты;
  2. компании;
  3. лиды;
  4. сделки;
  5. задачи;
  6. коммуникации;
  7. ответственных.

Память агента хранит:

  1. предпочтения пользователя;
  2. настройки сценария;
  3. короткие рабочие факты с TTL.

База знаний хранит:

  1. правила продаж;
  2. FAQ;
  3. описания продуктов;
  4. инструкции;
  5. скрипты;
  6. ограничения.

Проверка: агент не пишет правила продаж в CRM, а клиентские сделки в RAG-базу знаний.

Шаг 22. Настройте CRM API log

Создайте `crm_api_log`.

Колонки:

id
request_id
connection_key
tool_name
crm_method
crm_entity_type
crm_entity_id
request_payload_hash
response_status
response_body_json
duration_ms
created_at

Логируйте:

  1. каждый CRM API call;
  2. tool name;
  3. entity id;
  4. статус ответа;
  5. duration;
  6. ошибку;
  7. run id агента;
  8. approved_by, если было approval.

Не логируйте:

  1. CRM token;
  2. webhook secret;
  3. полный access token;
  4. пароли;
  5. лишние персональные данные.

Проверка: по `request_id` можно понять, что агент сделал в CRM.

Шаг 23. Обрабатывайте ошибки CRM API

Создайте `crm_error_log`.

Колонки:

id
request_id
tool_name
error_type
error_message
crm_status_code
retryable
created_at

Ошибки:

  1. `auth_failed`;
  2. `rate_limited`;
  3. `validation_error`;
  4. `duplicate_found`;
  5. `network_timeout`;
  6. `crm_unavailable`;
  7. `permission_denied`;
  8. `unknown_error`.

Поведение:

  1. auth error - отключить connection и alert;
  2. rate limit - retry позже;
  3. validation error - human review;
  4. duplicate - не создавать лид;
  5. timeout - retry;
  6. permission denied - alert администратору.

Проверка: ошибка CRM не приводит к повторному созданию дублей.

Шаг 24. Настройте rate limit

Создайте `crm_rate_limit_rules`.

Колонки:

id
connection_key
tool_name
limit_per_minute
limit_per_hour
action_on_limit
is_active

Стартовые правила:

  1. `find_contact` - 60 в минуту;
  2. `create_lead` - 20 в минуту;
  3. `add_note` - 40 в минуту;
  4. `create_task` - 30 в минуту;
  5. `update_deal` - 10 в минуту и approval;
  6. общий лимит connection - ниже лимита CRM-провайдера.

Проверка: серия заявок не выбивает CRM в ban или throttling.

Шаг 25. Настройте idempotency

Создайте `crm_idempotency_keys`.

Колонки:

id
idempotency_key
request_id
action_type
crm_entity_type
crm_entity_id
payload_hash
created_at
expires_at

Ключ:

source_channel + external_message_id + action_type

Правила:

  1. повтор webhook не создает новый лид;
  2. retry после timeout проверяет, не создалась ли запись;
  3. один request не ставит две одинаковые задачи;
  4. повторная заметка не дублируется;
  5. ключ живет 7-30 дней.

Проверка: один и тот же webhook можно отправить 3 раза, а в CRM появится одна запись.

Шаг 26. Подготовьте тестовые данные

Создайте `crm_integration_test_cases`.

Колонки:

id
case_key
input_payload_json
expected_action
expected_crm_entity
expected_status
expected_not_create_duplicate
is_critical

Минимальные тесты:

  1. новый лид с телефоном;
  2. новый лид с email;
  3. обращение без контакта;
  4. дубль по email;
  5. дубль по телефону;
  6. существующая открытая сделка;
  7. жалоба клиента;
  8. запрос на скидку;
  9. запрос без потребности;
  10. CRM API timeout;
  11. CRM API validation error;
  12. повтор webhook;
  13. forbidden update deal amount;
  14. create task for manager;
  15. add note to deal.

Проверка: critical tests проходят до включения production CRM.

Шаг 27. Прогоните тест создания лида

Отправьте payload:

{
  "request_id": "test-lead-001",
  "channel": "site_form",
  "message_text": "Здравствуйте, хочу внедрить ИИ-агента в отдел продаж. Иван, ivan@example.com, +79991112233",
  "utm": {
    "source": "yandex",
    "campaign": "ai-agent-crm"
  }
}

Проверьте:

  1. `inbound_requests` получил событие;
  2. `normalized_request` содержит телефон и email;
  3. `crm_contact_candidates` прошел валидацию;
  4. `crm_dedupe_checks` не нашел дубль;
  5. `crm_lead_queue` создал задачу;
  6. CRM вернула `crm_lead_id`;
  7. `crm_note_queue` добавила summary;
  8. `crm_task_queue` поставила задачу менеджеру;
  9. `crm_api_log` содержит все вызовы;
  10. секреты не попали в логи.

Проверка результата: в CRM есть один лид, одна заметка и одна задача.

Шаг 28. Прогоните тест дубля

Отправьте тот же payload повторно.

Ожидаемый результат:

  1. `inbound_requests` фиксирует повтор;
  2. `crm_dedupe_checks` находит существующий email;
  3. новый контакт не создается;
  4. новый лид не создается;
  5. создается note или task, если это новое обращение;
  6. `crm_idempotency_keys` блокирует дубль action;
  7. статус становится `skipped_duplicate` или `attached_to_existing`.

Проверка: CRM не засоряется дублями после retry.

Шаг 29. Прогоните тест approval

Отправьте запрос:

Клиент просит скидку 30% и хочет, чтобы сделку закрыли сегодня.

Ожидаемое поведение:

  1. агент создает summary;
  2. агент не меняет сумму;
  3. агент не меняет стадию на won;
  4. агент создает `crm_approval_queue`;
  5. оператор видит proposed changes;
  6. CRM меняется только после approve;
  7. отказ записывается с причиной.

Проверка: скидка и стадия не меняются автоматически.

Шаг 30. Прогоните тест CRM webhook

Смоделируйте событие из CRM:

{
  "event_id": "crm-event-001",
  "event_type": "deal_stage_changed",
  "entity_type": "deal",
  "entity_id": "456",
  "new_stage": "proposal_sent"
}

Проверьте:

  1. событие записано в `crm_webhook_events`;
  2. дубль `event_id` не обработан повторно;
  3. агент обновил внутренний контекст;
  4. если нужно, создана follow-up задача;
  5. CRM не получила обратный бесконечный webhook loop.

Проверка: событие из CRM не запускает бесконечную цепочку обновлений.

Шаг 31. Настройте метрики интеграции

Создайте `crm_integration_metrics`.

Колонки:

id
date
inbound_requests
leads_created
duplicates_skipped
notes_added
tasks_created
approval_required
crm_api_errors
avg_api_latency_ms
created_at

Смотрите каждый день:

  1. сколько лидов создал агент;
  2. сколько дублей остановлено;
  3. сколько ошибок CRM API;
  4. сколько действий ушло на approval;
  5. сколько write-действий отклонено;
  6. сколько заявок осталось в failed;
  7. сколько заявок без контакта;
  8. среднее время обработки.

Проверка: после первого дня видно, помогает интеграция или создает мусор.

Шаг 32. Включите ограниченный production

Первый запуск:

  1. один канал;
  2. один pipeline;
  3. только создание лидов;
  4. комментарии разрешены;
  5. задачи разрешены;
  6. изменение сделок только через approval;
  7. auto-send клиенту выключен;
  8. лимит CRM API включен;
  9. alert по ошибкам включен;
  10. ежедневный review включен.

Проверка: если что-то идет не так, можно выключить `crm_connections.is_active` или конкретный tool.

Шаг 33. Минимальный результат для запуска

MVP готов, если выполнены условия:

  1. CRM connection настроен;
  2. секреты не видны агенту;
  3. entity map заполнен;
  4. поля контакта описаны;
  5. поля лида описаны;
  6. входящие события сохраняются;
  7. structured output валидируется;
  8. кандидат контакта проходит проверку;
  9. дедупликация работает;
  10. лид создается через очередь;
  11. CRM API спрятан за backend tool;
  12. tool policy блокирует опасные действия;
  13. note создается;
  14. task создается;
  15. deal update идет через approval;
  16. CRM webhook принимается;
  17. API log заполнен;
  18. ошибки обрабатываются;
  19. idempotency работает;
  20. тесты критичных сценариев проходят.

Финальная проверка: отправьте новый лид, дубль, запрос на скидку, ошибку CRM API и CRM webhook. Если CRM получает одну чистую запись, дубли не создаются, опасные изменения идут на approval, а логи полные, интеграцию можно запускать ограниченно.

Что нельзя автоматизировать в первой версии

В первой версии не автоматизируйте:

  1. удаление контактов;
  2. merge контактов;
  3. изменение суммы сделки;
  4. изменение стадии на won или lost;
  5. смену ответственного без правила;
  6. массовое обновление CRM;
  7. отправку сообщений клиенту без approval;
  8. назначение скидок;
  9. изменение договорных условий;
  10. работу с платежными данными;
  11. создание счетов и актов;
  12. импорт всей истории CRM в prompt;
  13. запись сырых диалогов без summary;
  14. выполнение произвольных CRM methods;
  15. работу с production CRM без staging-тестов.

Сначала агент должен аккуратно создавать лиды, добавлять заметки и ставить задачи. Все, что влияет на деньги, юридические обязательства, стадию сделки и коммуникацию с клиентом, включайте только после тестов и approval.

Частые вопросы

Можно ли подключить агента напрямую к API CRM?

Лучше не надо. Безопаснее спрятать CRM API за backend tool, где есть валидация, дедупликация, права, rate limit, approval и audit log.

Что выбрать для первого запуска: Bitrix24, amoCRM или HubSpot?

Выбирайте ту CRM, где уже работают менеджеры. Технически важнее не бренд CRM, а наличие API, webhooks, sandbox, понятных сущностей и возможности ограничить права.

Нужно ли агенту менять сделки автоматически?

На первом этапе нет. Пусть агент создает черновик изменения и отправляет его на approval. Автоизменения стадий и сумм включайте только для очень узких правил.

Как не создавать дубли лидов?

Нужны нормализация телефона и email, поиск по существующим контактам, idempotency key для webhook и отдельный `crm_dedupe_checks` перед созданием записи.

Что делать, если CRM API временно недоступна?

Сохраняйте действие в очередь, делайте retry с лимитом, пишите ошибку в `crm_error_log` и показывайте оператору статус. Нельзя терять заявку или повторно создавать дубль при восстановлении API.

Дальше по теме

Похожие материалы