IP-телефония и коллтрекинг с AmoCRM: звонки, запись, карточка

Входящий и исходящий звонок сразу в карточке контакта: запись, задача или сделка, без ручного поиска номера.

Стек AmoCRM, FastAPI, Python, REST API, webhooks

Я делал интеграцию АТС / коллтрекинга с AmoCRM: входящий и исходящий звонок сразу попадал в карточку контакта, создавалась задача или сделка, подтягивалась запись разговора. Менеджер не искал номер вручную и не терял пропущенные.

Я написал приёмник событий АТС (webhook + нормализация payload разных провайдеров) и слой сопоставления: номер → контакт. Телефоны приводил к единому формату (E.164 / 7XXXXXXXXXX), отрезал добавочные и «мусор» из SIP. Если контакта нет — создавал, если есть несколько — выбирал по правилам (последняя открытая сделка, ответственный, не дубль).

Я реализовал логику пропущенных и повторных звонков: не плодить сделку на каждый гудок, склеивать сессию, ставить задачу ответственному, эскалировать, если никто не взял за N минут. Для исходящих подставлял ответственного из AmoCRM, чтобы коллтрекинг не вешал звонок на «общую линию».

Я отдельно программировал загрузку записей разговоров: ссылка в примечании сделки, права доступа, повтор при 404 у АТС, таймауты. Упёрся в лимиты API AmoCRM и АТС — очереди, идемпотентные ключи по call_id, чтобы один звонок не создавал десять заметок.

Я добавил журнал: call_id, направление, длительность, найденный контакт, созданная сделка, ошибка маппинга. Стек: Python, FastAPI, AmoCRM REST, webhooks АТС, Redis, PostgreSQL. NDA: провайдер телефонии и аккаунт CRM не публикуются.