У компании Holz House три отдела со своими аккаунтами amoCRM и пять кабинетов телефонии UIS. Спам-звонки приходили во все, а блокировать номер приходилось руками: открыть каждый кабинет, найти чёрный список, добавить. Задача звучала просто: менеджер закрывает сделку с причиной «Спам», и дальше всё происходит само. За этой простотой оказалась полноценная серверная интеграция. Рассказываем, что внутри, почему «просто передать номер» здесь не работало и в чём на самом деле ценность такой работы: не в объёме кода, а в том, что система знает, что делать, когда что-то идёт не так.
Задача
Нужен был один механизм на всю компанию: куда бы ни пришло спам-обращение, номер должен попасть в чёрные списки всех пяти кабинетов UIS. Без дополнительных действий сотрудников и без отдельной интеграции под каждый аккаунт amoCRM.
Как это работает для менеджера
- Менеджер закрывает сделкуСтатус «Закрыто и не реализовано», причина «Спам». Больше ничего.
- amoCRM отправляет событие на серверСервер определяет, из какого аккаунта пришло событие, и достаёт номер из сделки.
- Номер встаёт в очередьПриём события и отправка в телефонию разделены, чтобы медленный ответ UIS не мешал CRM.
- Пять отдельных доставокВ каждый кабинет UIS уходит свой запрос, результат каждого сохраняется отдельно.
- Номер в чёрных спискахВо всех пяти кабинетах. Если где-то сбой, доставка в этот кабинет уходит на повтор, остальные не затрагиваются.
В чём ценность: не код, а поведение при сбоях
Обычная интеграция здесь выглядела бы так: получить вебхук из amoCRM, отправить пять запросов в UIS, закончить работу. Для демонстрации это работает. В эксплуатации рано или поздно один из кабинетов не ответит, amoCRM пришлёт событие дважды, или API упрётся в лимит. Прямой вебхук в таких случаях теряет номер молча: никто не узнает, что четыре кабинета получили его, а пятый нет.
Поэтому ценность этой работы не в количестве написанного кода. Она в том, что мы заранее описали, как система ведёт себя в нештатных ситуациях: сохраняет состояние, считает результат каждой доставки отдельно, повторяет ошибки и исполняет всё в фоне без участия человека. Именно это отличает простую автоматизацию от решения, рассчитанного на постоянную эксплуатацию.
Что предусмотрели в интеграции
- Независимая доставка. Пять кабинетов, пять операций. Если четыре приняли номер, а пятый недоступен, успешные результаты сохраняются, повторяется только неудачная.
- Очередь на SQLite. События и результаты хранятся в базе, а не в памяти. Перезапуск сервера ничего не теряет.
- Повторные попытки. Если UIS временно недоступен, доставка откладывается и повторяется автоматически.
- Защита от дублей. amoCRM может прислать несколько уведомлений об одном изменении сделки. Система распознаёт повтор и не отправляет номер дважды.
- Журнал каждой операции. CRM-источник, сделка, целевой кабинет, статус, число попыток, текст ошибки. Любой сбой разбирается адресно.
- Фоновая служба. Очередь проверяется раз в минуту сама, без ручного запуска и участия администратора.
- Лимиты API. Обращения к UIS идут через фоновую обработку, чтобы не упереться в ограничения при массовом спаме.
- HTTPS, секреты и проверка авторизации входящих запросов. Логи веб-сервера настроены так, чтобы секреты из вебхуков в них не попадали.
Тестирование и первые недели работы
Проверяли поэтапно: сначала API телефонии и добавление номеров в чёрные списки, потом доставку во все пять кабинетов, потом приём событий из трёх аккаунтов amoCRM, и в конце рабочий сценарий на новых сделках без ручного запуска. После запуска интеграция продолжает работать на реальных сделках, и журнал доставок ведётся по каждой операции.
Отдельно убедились, что тестовый номер действительно появился в интерфейсе UIS, а не только в нашем журнале.
Что получил бизнес
- Меньше ручной работы. Сотрудники больше не ходят по кабинетам телефонии.
- Единая блокировка. Спам-номер закрыт сразу во всей компании, в каком бы отделе его ни поймали.
- Никакого человеческого фактора. Не нужно помнить о дополнительных действиях после закрытия сделки.
- Прозрачность. История операций сохраняется, любой результат можно проверить.
- Масштабируемость. Новый отдел или новый кабинет телефонии подключаются к той же интеграции.
Что взять себе
Если интеграция связывает больше двух систем или одна из них иногда недоступна, прямой вебхук это лотерея. Очередь, независимые доставки, повторы и журнал стоят несколько дней разработки и избавляют от месяцев «а почему номер не заблокировался». Спрашивайте у интегратора не «сколько строк кода», а «что произойдёт, если телефония не ответит». Такую же схему мы ставим на любые связки CRM с телефонией, мессенджерами и внешними сервисами.
Нужна интеграция, которая не теряет данные?
Свяжем amoCRM или Битрикс24 с телефонией, мессенджерами и вашими сервисами. С очередями, повторами и журналом, как в этом кейсе.
Обсудить задачу →