Телефония + amoCRM: звонок на личный номер менеджера создаёт правильную сделку
Коротко
Коротко: готовой интеграции виртуальной АТС Tele2 с amoCRM не существует — ни у оператора, ни в маркетплейсе. Мы написали её сами: свой сервис, который принимает события АТС, определяет менеджера по номеру, создаёт сделку с правильным ответственным и кладёт запись разговора в карточку. Сервис работает как коробка на сервере клиента.
Задача
У агентства недвижимости шесть менеджеров и виртуальная АТС Tele2, у каждого сотрудника свой номер. Звонки шли «мимо» системы: никакой истории, никаких записей, непонятно, кто с кем говорил и о чём. Руководитель мог только спрашивать менеджеров, как прошли разговоры — проверить было нечем. При этом один и тот же клиент часто звонил сразу нескольким сотрудникам, обзванивая объявления.
Почему пришлось делать своё решение
Для популярных операторов есть готовые виджеты в маркетплейсе amoCRM — поставил и работает. Для виртуальной АТС Tele2 такого виджета нет. Варианта было два: менять оператора (клиент этого не хотел — номера уже раздали менеджерам и они на визитках) или писать интеграцию самим.
Мы написали свой сервис. Это не «настройка готового модуля», а собственная разработка: мы разобрали API оператора, спроектировали логику определения сотрудника и сценарии дедупликации, реализовали хранение и раздачу записей разговоров, а потом довели всё это до состояния, когда оно работает без нас неделями.
Что умеет сервис
- Звонок на номер менеджера → сделка с этим ответственным. Сотрудника определяем по номеру, на который поступил звонок. Схема устойчива к переадресации: даже если вызов ушёл дальше по цепочке, ответственным остаётся тот, кому клиент звонил.
- Дедупликация по паре «клиент + менеджер». Повторный звонок тому же сотруднику — это та же сделка с новым звонком в истории. Звонок другому сотруднику — отдельная сделка. Так устроена реальная жизнь агентства, где клиент обзванивает несколько объявлений, и каждый менеджер ведёт свою линию переговоров.
- Запись разговора в карточке сделки. Файл записи хранится на сервере клиента, а в ленту amoCRM приходит примечание-звонок со ссылкой — руководитель слушает разговор, не выходя из CRM и не заходя в кабинет оператора.
- Исходящие звонки тоже фиксируются — включаются переключателем в панели, когда клиент к этому готов.
- Самолечение доступа. Токен АТС живёт сутки. Мы поймали аварию, когда доступ протухал и не обновлялся автоматически, разобрались в причине (оператор отвечал не тем кодом ошибки, который ожидала штатная логика обновления) и научили сервис восстанавливаться самостоятельно. Интеграция не встаёт ночью и в выходные — а это ровно то время, когда звонят по недвижимости.
Как устроено: коробка на сервере клиента
Сервис написан на Python (FastAPI + планировщик задач), данные хранит в SQLite, упакован в Docker-контейнер и развёрнут на сервере клиента. Внутри — своя панель управления: маппинг сотрудников на номера, переключатели режимов, статус подключения к АТС, журнал звонков. Доступ по HTTPS с автоматическим сертификатом.
Что это даёт клиенту:
- Данные остаются у него. Записи разговоров — это персональные данные и коммерческая информация; они не уезжают в чужое облако.
- Нет абонентской платы за посредника. Нет третьей стороны между АТС и CRM, которой нужно платить ежемесячно.
- Обновление — заменой контейнера, без простоя и без переустановки.
Для нас это тоже не разовая работа: ядро сервиса обкатано и переиспользуется. Меняется оператор телефонии — меняется адаптер к его API, вся остальная логика (определение сотрудника, дедупликация, записи, панель) остаётся. Поэтому следующему клиенту такая интеграция достаётся быстрее и дешевле, чем разработка с нуля.
Результат
Все звонки шести менеджеров стали видимыми: сделка, ответственный, история обращений, запись разговора. Руководитель впервые получил картину звонков отдела, а не рассказы о ней. Внедрение вместе с интеграцией Авито заняло около полутора недель.
Сервис работает в бою и продолжает развиваться — мы дорабатываем его по мере появления новых задач у клиента.
Если у вас другой оператор
Логика повторяется для любой виртуальной АТС, у которой есть API: Tele2, МТС Exolve, Мегафон, Sipuni, UIS и другие. Разница только в адаптере. Если готового виджета для вашего оператора нет — это не повод менять оператора или отказываться от истории звонков в CRM.
Дедупликация по паре: 19 из 165 клиентов обращались к нескольким менеджерам — и это видно.
