Блок «CRM / Закрыть сделку»
Этот блок связывает воронку с вашей CRM-системой: создаёт контакт, лид или сделку в amoCRM либо Bitrix24, а затем завершает диалог. Под капотом тут две разные роли. Блок «Закрыть сделку» — терминальный: он останавливает воронку (дальше из него связей нет). А сама выгрузка данных в CRM выполняется CRM-действиями (amoCRM / Bitrix24), которые вы ставите перед ним.
Типичный паттерн: сначала блок с CRM-действием (создать сделку с контактом), затем «Закрыть сделку» — клиент получил оффер, заявка ушла в CRM, диалог закрыт.
Когда использовать
- Когда клиент дошёл до конца воронки и нужно зафиксировать заявку в CRM
- Когда нужно создать контакт/лид/сделку из данных, собранных в боте (имя, телефон, email)
- Когда после оффера диалог должен завершиться — чтобы клиент не «висел» в воронке
- Когда нужно записать ID созданной сделки в переменную для дальнейших шагов
Настройки
CRM-действие (блок выгрузки данных) настраивается так:
- Провайдер (crmProvider) — куда выгружать: `amocrm` или `bitrix24`. Без него блок ничего не делает. GetCourse устарел — для него используйте отдельное действие «Экспорт в GetCourse».
- Действие (crmAction) — что создать: `create_contact` (контакт), `create_lead` (лид), `create_deal` (сделка с контактом).
- Данные контакта — email, телефон, имя, фамилия. Если поле пустое, подставляются переменные по умолчанию: `{email}`, `{phone}`, `{first_name}`, `{last_name}`.
- Название сделки / лида (title) — заголовок записи. Поддерживает переменные. По умолчанию «Лид из бота» / «Сделка из бота».
- Сумма (amount) — бюджет сделки в рублях, число (можно через переменную).
- Комментарий (comment) — текст-примечание (для Bitrix24 пишется в поле COMMENTS).
- Результат → переменная (crmResultVariable) — имя переменной, куда записать ID созданной записи (или текст ошибки).
Для расширенных amoCRM/Bitrix24-действий доступны дополнительные поля: ID воронки, ID этапа/статуса, ответственный, поиск контакта, добавление задачи и заметки — каждое со своим набором полей.
Блок «Закрыть сделку» настроек не имеет — у него нет панели параметров. Достаточно поставить его в нужное место схемы.
Как работает
- Блок «Закрыть сделку» при выполнении просто останавливает воронку (флаг stop). Исходящих связей у него нет — это конечная точка схемы.
- CRM-действие проверяет провайдера и действие. Если их нет — возвращает ошибку и ничего не отправляет.
- Все плейсхолдеры в полях (имя, телефон, заголовок, сумма) прогоняются через подстановку переменных перед отправкой.
- Для `create_deal` создаётся связка «сделка + контакт» одним вызовом (имя/телефон/email клиента).
- Результат пишется в переменную из «Результат → переменная»: при успехе — ID записи (или `success`), при ошибке — строка вида `error: <причина>`. Если переменная не указана, результат не сохраняется.
- Ошибки CRM не роняют воронку: они логируются, в переменную пишется текст ошибки, выполнение продолжается.
Пример
1. Блок «Ввод» — спрашиваем телефон, сохраняем в `{phone}`. 2. Блок с CRM-действием: провайдер `amocrm`, действие `create_deal`, название «Заявка с бота #{client.name}», сумма `5000`, результат в переменную `amo_deal_id`. 3. Блок «Сообщение»: «Спасибо! Менеджер свяжется с вами. Номер заявки: #{amo_deal_id}». 4. Блок «Закрыть сделку» — диалог завершён, заявка в amoCRM.
Частые ошибки
- Не настроена интеграция CRM. amoCRM/Bitrix24 работают только при заполненных учётных данных (поддомен, токены — задаются в настройках проекта). Без них блок вернёт ошибку «credentials not configured» и сделка не создастся.
- Ждёте ветвления после «Закрыть сделку». Это терминальный блок — после него ничего не выполнится. Все CRM-действия и сообщения ставьте ДО него.
- Запрос в CRM завис. Каждый вызов amoCRM имеет таймаут 30 секунд. Если CRM недоступна — в переменную результата попадёт ошибка, проверяйте её следующим блоком «Условие», если важна реакция на сбой.