CRM · Корпоративная связь

Корпоративная телефония: голос, видео и групповые звонки в ERP

AIERP содержит встроенную систему звонков между сотрудниками — без отдельной АТС, SIP-телефонов и внешних сервисов. Голос, видео и демонстрация экрана работают в браузере через WebRTC и LiveKit; каждый звонок сохраняется с уникальным идентификатором, одним из семи состояний, длительностью и привязкой к чату, а в групповой конференции отдельно фиксируется состав участников с ролями ведущего и обычного участника. Групповые созвоны можно собирать из постоянных именованных групп или запускать прямо из встречи в календаре, а к разговору — приглашать внешних людей по гостевой или публичной ссылке без учётной записи. Звонки сопровождаются тегами, заметками, записью (только групповые, с разрешения ведущего) и статистикой по дням и собеседникам — вплоть до сводки по всей организации для руководителя.

7
статусов звонка
6
статусов участника
14+
realtime-событий
WebRTC
стек
Все возможности
Преимущества

Что получает бизнес от модуля

Голос и видео в браузере

Никаких клиентских установок и SIP-телефонов — звонок открывается прямо в браузере через WebRTC и LiveKit. Сотрудник нажимает кнопку и сразу попадает в комнату разговора по идентификатору звонка.

1-на-1 и групповые звонки

Один разговор может быть приватным (звонящий и получатель) или групповой конференцией с множеством участников. В группе можно приглашать новых людей, выходить и снова присоединяться.

Роли ведущего и участника

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

Демонстрация экрана

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

Запись групповых звонков

Аудио конференции пишется в облако. Сохраняются статус записи (запрошена, идёт, завершена, ошибка), ссылка на файл, кто и когда запустил и завершил. Запускает и останавливает только ведущий, личные звонки не пишутся.

Мгновенные обновления

Все события звонка — поступление вызова, принятие, отклонение, завершение, отмена, приглашения в группу, вход и выход участников, начало и остановка демонстрации экрана, выключение микрофона ведущим, старт и стоп записи — мгновенно отображаются у всех собеседников.

Авто-помеха «пропущен»

Каждую минуту фоновый процесс находит вызовы, которые звонят дольше 60 секунд и не получили ответа, и помечает их пропущенными. Если у звонящего пропал интернет, звонок не зависнет в «вечном дозвоне».

Статистика и история

Сводка по сотруднику: всего звонков, пропущенных, входящих, исходящих, общая и средняя длительность по завершённым, разбивка по дням, топ-5 собеседников. История — с пагинацией, фильтрами по направлению, статусам, периоду и поиску по имени или фамилии собеседника.

Теги и заметки

У каждого пользователя свои теги звонков с цветом — личная классификация. Один звонок можно пометить несколькими тегами. Заметка к звонку — текст для быстрого контекста (о чём договорились).

Созвоны из календаря

Встреча в календаре с типом «Созвон» или «Встреча» превращается в живой групповой звонок по кнопке «Присоединиться». Первый вошедший поднимает комнату и автоматически приглашает остальных участников события, становясь ведущим. Повторяющиеся события и отменённые даты учитываются — созвон стартует именно для нужной даты.

Постоянные группы для планёрок

Свои именованные группы участников с цветом — «Опт», «Региональные», «ИТ-дежурные». Группа видна владельцу и всем её участникам; собрать по ней групповой созвон можно одним действием, не набирая людей заново. По каждой группе хранится история собранных звонков.

Гости по ссылке без аккаунта

К активному звонку можно пригласить внешнего человека (клиента, подрядчика, кандидата) именной гостевой ссылкой. Гость входит аудио-only прямо в браузере, без учётной записи в ERP. Ссылка работает, пока звонок активен, и допускает переподключение, если гостя случайно отключило.

Публичная ссылка-комната

Любой участник группового созвона может включить многоразовую публичную ссылку. По ней входят и сотрудники под своей учёткой с полными правами, и анонимные гости (аудио-only, вводят имя при входе). Отключение ссылки мгновенно отзывает доступ — токен аннулируется.

Обзор звонков для руководителя

Отдельный административный доступ показывает историю и статистику звонков по всей организации, а не только по себе: кто с кем и сколько общается, где пропуски, какая нагрузка по дням. Те же фильтры по направлению, статусам, периоду и собеседнику.

Возможности модуля

Что входит в Корпоративная связь

  1. 01

    Звонок со стабильным идентификатором

    Каждый звонок получает уникальный идентификатор, который заодно становится именем комнаты в LiveKit. Это даёт стабильный ключ для маршрутизации, истории и записи.

  2. 02

    7 статусов звонка

    Вызов, идёт разговор, завершён, пропущен, отклонён, отменён, ошибка соединения. У каждого свой цвет (жёлтый/синий/зелёный/красный/серый), а финальные статусы помечены отдельным признаком для интерфейса и логики.

  3. 03

    6 статусов участника

    Приглашён, звонит, в разговоре, вышел, отклонил, пропустил. Для групповых звонков статус хранится по каждому пользователю отдельно.

  4. 04

    Защита от двойных звонков

    При инициации звонка проверяется, не занят ли уже инициатор или получатель. Если кто-то уже в звонке (вызов или разговор) — возвращается ошибка «Собеседник сейчас занят». Звонить самому себе тоже нельзя.

  5. 05

    WebRTC-сигнализация

    Технические сигналы соединения (предложение, ответ, кандидаты) передаются от одного участника другому через сервер. Проверяется тип сигнала, после завершения звонка передача запрещена, получатель вычисляется автоматически.

  6. 06

    LiveKit-токены доступа

    Сервер генерирует временный токен с правами на вход в комнату (по идентификатору звонка), на отправку и приём аудио, на срок 3600 секунд. В токен включаются имя и аватар сотрудника — другие участники видят, кто говорит.

  7. 07

    Запись разговоров через LiveKit

    Аудиозапись комнаты стартует по команде, публичная ссылка формируется по шаблону пути с подстановками имени комнаты и времени. По событию завершения карточка записи финализируется и участники получают уведомление об остановке.

  8. 08

    Принудительное выключение микрофона

    Ведущий может выключить микрофон отдельному участнику (с фиксацией факта, времени и автора), включить режим «всех в молчание» и снять отключение. Все действия рассылаются участникам мгновенно.

  9. 09

    Скрытие звонка только у себя

    Каждая сторона может скрыть звонок из своей истории — собеседник по-прежнему видит его. Перед скрытием система проверяет, что пользователь действительно участник звонка.

  10. 10

    Звонки не удаляются физически

    Звонки не удаляются из системы — это нужно для аудита, разбора инцидентов и сохранения связи с записями разговоров.

  11. 11

    Связь с чатом

    Поле «чат» привязывает звонок к контексту переписки. После завершения в чат автоматически попадает системное сообщение с длительностью и статусом — история переговоров не теряется в чате.

  12. 12

    История с фильтрами

    История принимает направление (входящие или исходящие), статусы, период создания, поиск по имени или фамилии собеседника, размер страницы. Скрытые звонки автоматически отфильтрованы.

  13. 13

    Личная статистика

    Сводка по сотруднику: всего звонков, пропущенных, входящих, исходящих, общая и средняя длительность по завершённым, разбивка по дням, топ-5 собеседников с количеством звонков, именем, фамилией и аватаром.

  14. 14

    Экспорт истории потоком

    История звонков отдаётся для экспорта в CSV/XLSX по частям — без раздувания памяти даже на больших объёмах.

  15. 15

    Теги и цвет

    Теги звонков личные для каждого менеджера: имя и цвет настраиваются под себя. Один звонок может иметь несколько тегов. Удобно классифицировать: «продажа», «жалоба», «горячий клиент».

  16. 16

    Заметка к звонку

    Свободный текст заметки и причина завершения. Менеджер сразу после разговора фиксирует контекст — что обсудили, на чём остановились. Открывается в карточке звонка.

  17. 17

    Созвон из встречи календаря

    События календаря типов «Созвон» и «Встреча» поднимают LiveKit-комнату при старте. Кнопка «Присоединиться» ищет уже активный звонок этой даты (в статусе «звонит» или «идёт») и подключает к нему; если его ещё нет — создаёт групповой звонок, привязанный к конкретному вхождению события, назначает вошедшего ведущим и приглашает остальных участников встречи. Отменённая дата созвона в присоединение не пускает.

  18. 18

    Проверка участия и повторов

    Присоединиться к созвону из календаря может только участник события. Для повторяющихся встреч создаётся (или находится) нужное вхождение по исходной дате начала — звонок привязывается именно к этой дате, а не к серии целиком.

  19. 19

    Постоянные группы созвонов

    Пользователь заводит свои группы: название, цвет, состав участников. Владелец в группу не включается отдельно — он автоматически становится ведущим. В состав попадают только реально существующие пользователи, дубли и сам владелец отсеиваются. Имя группы уникально в пределах владельца.

  20. 20

    Доступ к группе и её история

    Группа видна владельцу и её участникам. По каждой группе доступна история собранных звонков (последние сначала) с инициатором и числом участников — видно, как часто и кем группа используется. Группу можно переименовать, изменить состав и цвет или удалить.

  21. 21

    Гостевая ссылка на звонок

    Ведущий создаёт именную гостевую ссылку на активный звонок с уникальным 48-символьным токеном. Гость получает LiveKit-токен с правом только на микрофон и живёт он 6 часов — этого хватает на подключение. Ссылка действует, пока звонок не завершён; идентичность гостя стабильна в пределах ссылки, поэтому повторный вход заменяет «зависшее» соединение, а не плодит дубли участников.

  22. 22

    Публичная многоразовая ссылка

    Публичная ссылка доступна только для группового звонка и включается идемпотентно — повторный вызов не выдаёт новый токен. Вход по ней разветвляется: авторизованный сотрудник подключается под своей учёткой с полными правами и попадает в список участников, аноним — как гость аудио-only, обязан указать имя (от 2 до 60 символов). Отключение ссылки сбрасывает флаг и обнуляет токен — старая ссылка сразу перестаёт работать.

  23. 23

    Обзор звонков по всей организации

    Административные операции отдают историю и статистику не по одному сотруднику, а по всей компании: те же фильтры (направление, статусы, период, поиск по собеседнику) и та же агрегированная статистика за период. Для руководителя и контроля качества — единая картина коммуникаций сети.

  24. 24

    Полный набор операций

    Операции звонков: история, статистика, экспорт, инициирование, приём, отклонение, отмена, завершение, сигналы, скрытие, заметка, теги. Групповые звонки: создание, вход, выход, отклонение приглашения, приглашение участников. Управление: индивидуальное и общее выключение микрофона, демонстрация экрана. Расширения: созвон из календаря, группы созвонов, гостевые и публичные ссылки, административный обзор.

  25. 25

    Авто-перевод в «пропущен»

    Раз в минуту фоновое задание находит звонки, зависшие в статусе «звонит» дольше 60 секунд, и переводит их в «пропущен» — обе стороны получают уведомление. Звонок не зависнет в «вечном дозвоне».

Интерфейс

Как это выглядит в системе

Окно входящего звонка с UUID-комнатой LiveKit
Участники группового звонка: хост, мьюты, экран
История звонков с фильтрами по направлению и статусу
Звонки по дням: всего и пропущенные
Жизненный цикл звонка: ringing → active → ended
Карточка звонка: тег, заметка, ссылка на запись
Созвон из встречи календаря: кнопка «Присоединиться»
Группы созвонов и гостевая ссылка на комнату
FAQ

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

Это интеграция с SIP-АТС (Asterisk, Mango, Zadarma)?

Нет. AIERP содержит встроенную систему звонков на WebRTC — голос, видео и демонстрация экрана работают прямо в браузере через LiveKit. SIP-телефоны и внешние АТС не подключаются: это корпоративная связь сотрудников, а не интеграция с городскими номерами.

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

WebRTC на клиенте + LiveKit на сервере. Токены доступа к комнате генерируются на сервере с правами на отправку и приём аудио. Имя комнаты совпадает с уникальным идентификатором звонка — стабильно для маршрутизации и записи.

Сколько статусов у звонка?

Семь: вызов, идёт разговор, завершён, пропущен, отклонён, отменён инициатором до ответа, ошибка соединения. У каждого свой цвет (жёлтый, синий, зелёный, красный, серый). Финальные статусы помечены отдельным признаком для интерфейса и логики.

Чем 1-на-1 звонок отличается от группового?

У приватного звонка зафиксированы инициатор и получатель, отдельной таблицы участников нет. У группового — флаг «групповой», получателя нет, ведётся отдельный список участников с ролями (хост или обычный участник) и собственным статусом каждого из шести.

Кто такой хост группового звонка?

Хост — это инициатор группового звонка. Он может пригласить ещё людей, выключить микрофон конкретному участнику, включить общее выключение микрофона, запустить и остановить запись разговора.

Записываются ли звонки?

Только групповые и только по команде хоста. При старте фиксируется идентификатор записи, статус (заявлена, идёт, завершена, ошибка), публичная ссылка, время старта и завершения, кто запустил. По событию завершения карточка финализируется и участники получают уведомление.

Как работает демонстрация экрана?

Когда участник начинает показывать экран, его карточка выделяется и видеопотоки переключаются у всех активных участников; при остановке выделение снимается. Все видят, кто сейчас демонстрирует.

Что происходит, если у звонящего пропал интернет?

Сработает страховка — раз в минуту фоновое задание находит звонки в статусе «звонит» старше 60 секунд и переводит их в «пропущен», обе стороны получают уведомление. Звонок не зависнет в «вечном дозвоне».

Можно ли позвонить второй раз, пока активен первый звонок?

Нет. Перед началом звонка система проверяет обе стороны: если у кого-то уже идёт или звонит другой звонок — выдаёт ошибку «у вас уже есть активный звонок» или «собеседник сейчас занят». Звонить самому себе тоже нельзя.

Что хранится в заметке и причине завершения?

Заметка — свободный текст менеджера про разговор: о чём договорились, что отправить, когда перезвонить. Причина завершения — например, «договорились о встрече», «отказ», «попросил перезвонить». Оба поля видны в карточке звонка и помогают восстановить контекст спустя время.

Как работают теги звонков?

Теги звонков личные у каждого менеджера, не общие на всю компанию. Имя и цвет настраиваются в личных настройках. Менеджер делает свои теги — «продажа», «жалоба», «callback», «горячий клиент» — и помечает звонки. У другого менеджера могут быть свои теги, не пересекающиеся.

Можно ли скрыть звонок из истории?

Да, но только у себя. Собеседник по-прежнему видит звонок в своей истории. Физически звонок не удаляется — это нужно для аудита и связи с записью.

Какая статистика доступна?

Сводка по сотруднику: всего звонков, пропущенных, входящих, исходящих, общая длительность в секундах, средняя по завершённым, разбивка по дням и топ-5 собеседников с количеством звонков, именем, фамилией и аватаром.

Можно ли фильтровать историю?

Да. Фильтры: направление (входящие или исходящие), статусы (любые из семи), период создания, поиск по имени или фамилии собеседника, размер страницы. Скрытые звонки автоматически отфильтрованы. Экспорт истории работает потоком — без раздувания памяти на больших объёмах.

Сколько статусов у участника группового звонка?

Шесть: приглашён (ещё не отвечал), звонит, в разговоре, вышел, отклонил приглашение, пропустил. Они отличаются от статусов звонка тем, что относятся к каждому участнику отдельно — кто-то может быть в разговоре, а кто-то уже вышел в той же группе.

Как реализовано принудительное выключение микрофона?

Хост может выключить микрофон конкретному участнику — фиксируется кто, когда и от кого пришло выключение, все активные участники получают уведомление. Замьюченный участник не может говорить, пока хост не вернёт ему микрофон или не снимет общее выключение.

Какие realtime-события рассылаются?

Появление нового звонка, его принятие, отклонение, отмена и завершение; технические сигналы соединения; приглашение в группу, вход и выход участников; начало и остановка демонстрации экрана; принудительное выключение и включение микрофона; старт и стоп записи. Каждое — мгновенно у всех участников.

Что значит сигнальное событие?

Это передача технических сигналов соединения (предложение, ответ, кандидаты) между участниками: фронт одной стороны отправляет на сервер, сервер проверяет тип сигнала и статус звонка, вычисляет получателя и доставляет ему. Это техническая обвязка, обеспечивающая установку соединения.

Можно ли удалить звонок физически?

Нет. Звонки не удаляются физически — это нужно для аудита, разбора инцидентов и сохранения связи с записями (запись могла быть выгружена в объектное хранилище, а её ссылка хранится в карточке звонка).

Появляется ли запись звонка в чате?

Да. После завершения звонка в связанный чат автоматически попадает системное сообщение с длительностью, статусом и ссылкой на запись (если она была). История переговоров не теряется в чате — её видно вместе с обычными сообщениями.

Какие ограничения на запись?

Запись доступна только для групповых звонков — для 1-на-1 не предусмотрена. Запустить или остановить запись может только хост. Параллельная запись одного звонка запрещена. Если хранилище недоступно — статус становится «ошибка».

Где хранятся записи разговоров?

В объектном хранилище. Путь к файлу формируется по шаблону с подстановками — имя комнаты, время и другие. Публичная ссылка сохраняется в карточке записи. По событию завершения карточка финализируется и ссылка становится активной.

Можно ли запустить созвон прямо из календаря?

Да. Событие календаря с типом «Созвон» или «Встреча» поднимает LiveKit-комнату. По кнопке «Присоединиться» система ищет уже активный звонок этой даты и подключает к нему; если его ещё нет — создаёт групповой звонок, привязанный к конкретному вхождению события, назначает вошедшего ведущим и приглашает остальных участников встречи. Присоединиться может только участник события, отменённая дата созвона в звонок не пускает.

Как это работает с повторяющимися встречами?

Для повторяющегося события создаётся или находится нужное вхождение по исходной дате начала, и звонок привязывается именно к этой дате, а не ко всей серии. Каждый экземпляр серии — свой звонок со своей историей и записью.

Что такое группы созвонов?

Это ваши постоянные именованные наборы участников — например «Опт», «Региональные», «ИТ-дежурные» — с названием и цветом. По группе собирается групповой созвон одним действием, без набора людей заново. Владелец группы автоматически становится ведущим и в состав отдельно не добавляется; в участники попадают только реально существующие пользователи. Имя группы уникально в рамках владельца.

Кто видит группу созвонов и её историю?

Группа видна её владельцу и всем участникам. По каждой группе доступна история собранных звонков (последние сначала) с инициатором и количеством участников. Владелец может переименовать группу, изменить состав и цвет или удалить её.

Можно ли пригласить в звонок человека без аккаунта в системе?

Да, двумя способами. Гостевая ссылка — именная, ведущий создаёт её на активный звонок; гость входит аудио-only прямо в браузере, без учётной записи. Публичная ссылка — многоразовая ссылка-комната для группового звонка: по ней входят и сотрудники под своей учёткой, и анонимные гости, которые вводят имя при входе.

Чем гостевая ссылка отличается от публичной?

Гостевая ссылка именная и одноразово-персональная: ведущий выдаёт её конкретному человеку на конкретный активный звонок, гость подключается только аудио. Публичная ссылка — многоразовая на групповой звонок: её может включить любой участник, вход по ней разветвляется на сотрудника (полные права, попадает в список участников) и анонима (аудио-only, обязан указать имя от 2 до 60 символов).

Что будет с гостевой ссылкой, если гостя отключило?

Ссылка работает, пока звонок активен, и допускает переподключение. Идентичность гостя стабильна в пределах ссылки, поэтому повторный вход заменяет «зависшее» соединение, а не создаёт второго участника-двойника. Гостевой LiveKit-токен выдаётся на 6 часов — этого хватает на подключение и переподключение в течение разговора.

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

Отключить публичную ссылку. Это сбрасывает признак публичности и обнуляет токен — старая ссылка сразу перестаёт работать, зайти по ней уже нельзя. Повторное включение выдаёт ссылку заново (при этом включение идемпотентно: пока ссылка активна, повторный вызов не плодит новые токены).

Может ли руководитель видеть звонки всех сотрудников?

Да, через административный доступ. Он отдаёт историю и статистику не по одному человеку, а по всей организации: те же фильтры (направление, статусы, период, поиск по собеседнику) и та же агрегированная статистика за период. Обычный сотрудник видит только свои звонки, административный обзор — картину по всей сети.

Какие операции доступны для звонков?

Полный набор: история, статистика, экспорт, инициирование, приём, отклонение, отмена, завершение, сигналы соединения, скрытие из истории, заметка, теги. Групповые звонки: создание, вход, выход, отклонение приглашения, приглашение, выключение микрофона участнику или всем, демонстрация экрана. Запись: старт и стоп. Расширения: созвон из встречи календаря, постоянные группы созвонов, гостевые и публичные ссылки для внешних участников, административный обзор звонков по всей организации.

Кейсы

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

Распределённая сеть бытовой техники
32 магазина в 6 регионах
Было
Менеджеры разных магазинов созванивались через WhatsApp и личные мобильные: уточнить наличие, согласовать перенос остатков, провести планёрку. История разговоров терялась, руководитель не понимал, сколько времени занимают межмагазинные коммуникации, кто кого долго ждёт на линии.
Сделали
Включили встроенные звонки прямо в ERP. Менеджер кликает на коллегу в чате — открывается WebRTC-звонок через LiveKit без установки софтфонов. Групповые планёрки региональных руководителей — через групповые звонки с одним хостом, демонстрацией экрана с панелью BI и записью.
Стало
Все коммуникации теперь в системе: статистика по дням, топ собеседников, средняя длительность. Видно, кто реально работает с коллегами, а кто закрылся в своём магазине. Записи планёрок доступны тем, кто пропустил — обучение и контроль исполнения стало проще.
+44%
звонков внутри сети
−71%
звонков через WhatsApp
0₽
на стороннюю АТС
Опт стройматериалов
4 склада · 18 ключевых менеджеров
Было
У ключевых клиентов несколько ответственных в холдинге, переговоры по крупным сделкам — это конференц-связь 5–7 человек. Раньше собирались в Zoom/Teams: ссылки забывали, ссылки терялись, контекст сделки приходилось пересказывать заново.
Сделали
Перевели многосторонние переговоры на групповые звонки AIERP. Хост приглашает участников одним действием, демонстрирует коммерческое предложение через демонстрацию экрана, ведёт запись (только хост может запустить). После завершения — заметка и тег «согласование цен», ссылка на запись в чате сделки.
Стало
Контекст переговоров не теряется: запись и заметка лежат рядом с заказом, новый менеджер за 10 минут восстанавливает картину. Инструменты — те же, что и для CRM и склада, никаких внешних сервисов и счетов за переговорные комнаты.
−83%
времени на онбординг сделки
+100%
переговоров с записью
1 клик
до конференции
Сеть автотоваров
11 магазинов · 56 сотрудников
Было
Контроль качества звонков между сменами и магазинами хромал: руководитель просил «расскажи, как договорились с поставщиком», ответ был «не помню, давно было». Системы записи не было, разборы инцидентов превращались в «слово против слова».
Сделали
Запустили групповые звонки для сложных переговоров с поставщиками и горячих ситуаций с клиентами. Хост (руководитель магазина) запускает запись, ставит тег «инцидент» или «согласование с поставщиком». Записи лежат в объектном хранилище, ссылки доступны через права роли.
Стало
Разборы стали быстрыми и фактическими: «вот запись, на 4:12 поставщик согласился». Контроль качества прекратился быть карательным и стал обучающим — лучшие записи идут в обучение новых сотрудников.
+38%
разрешённых споров
< 5 мин
на разбор инцидента
47
записей в обучении
IT-отдел розничной сети
24 магазина · 8 ИТ-специалистов
Было
Кассир из магазина в Сургуте просил помощь — Telegram, голосом плохо слышно, что нажимать. Тимвьюер запускали по 10 минут, потом ещё 5 минут вспоминали пароли. Заявки в службу поддержки копились, время ответа росло.
Сделали
Перевели техподдержку магазинов на видеозвонки с демонстрацией экрана прямо из ERP. Кассир кликает «вызвать поддержку» в кассовом интерфейсе, ИТ-специалист принимает, кассир включает демонстрацию экрана — ИТ видит ровно то, что видит кассир.
Стало
Время решения упало в 3 раза: техспец видит проблему сразу, не пересказывает шаги по голосу. Запись групповых звонков с типовыми кейсами — в базу знаний поддержки. Кассирам новых магазинов уже не нужно объяснять заново.
−68%
среднее время решения
+52%
решений с первого звонка
24/7
поддержка кассы
Сеть DIY с собственной логистикой
15 магазинов + распред. центр
Было
Водители распределительного центра звонили в магазины уточнить, где разгружаться, кто принимает. Звонили по сменным мобильным магазинов, попадали то к старшему смены, то «алло, кто это», теряли время на каждом адресе.
Сделали
Подключили всех водителей и приёмщиков к ERP. Водитель из приложения видит, кто на смене в магазине-получателе, кликает «позвонить» — открывается WebRTC-звонок с приёмщиком напрямую. Если уже идёт другой звонок — система защищает от наложения, второй водитель видит «занят, перезвонить позже».
Стало
Маршруты ускорились на 19 минут в среднем за рейс — нет потери времени на «дозвониться до того, кто примет». Двойные звонки исключены защитой «собеседник занят». Все звонки видны руководителю — кто звонит, кому, как долго.
−19 мин
средний рейс
−92%
«занятых линий»
0
не дозвонился
Региональная сеть аптек
52 точки · 240 фармацевтов
Было
Фармацевты периодически консультировались с провизорами центрального офиса — голосом по мобильным, провизоры не успевали ответить всем, кто-то отказывался от ответа, какой именно консультант помог в спорной ситуации, проверить было невозможно.
Сделали
Перевели консультации на встроенные звонки. Фармацевт нажимает «спросить провизора» в карточке товара — групповой звонок поднимается у дежурного провизора, при необходимости подключается второй. Запись сохраняет факт консультации, добавляется тег «консультация» и заметка с препаратом.
Стало
Спорные ситуации (отпуск рецептурных препаратов, замена аналогом) разрешаются по факту записи. Провизоры видят свою загрузку через топ собеседников и разбивку по дням, перераспределяют смены. Зависших звонков нет — фоновое задание каждую минуту чистит.
100%
консультаций под запись
−47%
спорных случаев
< 60с
нет зависших
Оптовый дистрибьютор с внешними подрядчиками
3 филиала · 60 сотрудников
Было
Еженедельные планёрки филиалов и переговоры с внешними подрядчиками (логисты, 1С-интеграторы, аудиторы) вели в Zoom и Teams: ссылки создавали вручную и рассылали в чатах, подрядчикам заводить учётки было негде, повторяющиеся планёрки путались — какая запись от какой недели, никто не помнил.
Сделали
Планёрки завели событиями-созвонами в календаре: участники нажимают «Присоединиться» прямо из встречи, первый вошедший поднимает комнату и подтягивает остальных. Для повторяющихся планёрок каждая дата — свой звонок со своей записью. Подрядчиков пускают по гостевой или публичной ссылке без аккаунта — аудио прямо в браузере. Часто собираемые составы вынесли в постоянные группы созвонов.
Стало
Планёрки перестали зависеть от «кто создаст ссылку»: календарь и есть точка входа. Записи разложены по датам, а не свалены в один чат. Подрядчики подключаются по ссылке за секунды, руководитель через административный обзор видит все созвоны сети целиком.
0
ручных ссылок на созвон
1 клик
из календаря в звонок
−100%
аккаунтов для подрядчиков
Подробнее

Как модуль помогает розничной сети

Корпоративная телефония в ERP: голос, видео и запись без отдельной АТС

AIERP содержит собственную систему звонков для общения сотрудников — без установки софтфонов, SIP-шлюзов и подключения внешних АТС. Голос, видео и демонстрация экрана работают прямо в браузере через WebRTC, серверная сторона — LiveKit. Это корпоративная связь, не интеграция с городскими номерами: цель — упростить общение продавцов, менеджеров, ИТ и руководителей внутри одной системы, а не заменить виртуальную АТС.

Любой звонок в AIERP — это карточка с уникальным идентификатором, статусом (один из семи), временами начала, ответа и завершения, длительностью в секундах, причиной завершения и заметкой. Уникальный идентификатор звонка одновременно становится именем комнаты в LiveKit — это даёт стабильный ключ и упрощает связку «звонок ↔ комната ↔ файл записи».

Связь с чатом делает разговор частью переписки: в чат автоматически попадает системное сообщение с длительностью и статусом, а если была запись — ссылка на неё. История переговоров не теряется между чатом и журналом звонков — её видно в одном месте.

Стек: WebRTC + LiveKit + Laravel Broadcasting

На клиенте — стандартный WebRTC API браузера для одноранговой передачи аудио и видео, доступ к микрофону и демонстрация экрана. На сервере — LiveKit, open-source SFU (Selective Forwarding Unit) для эффективной маршрутизации потоков. Сервер взаимодействует с LiveKit через три блока: токены, комнаты, запись.

Для подключения участника к комнате генерируется временный токен доступа на 1 час с правами на отправку и приём аудио и данных. В токен включаются имя и аватар сотрудника — другие участники видят, кто говорит.

Управление комнатами: создание, удаление, список участников. Запись разговоров: старт аудиозаписи комнаты, шаблон пути файла с подстановками имени комнаты и времени, остановка, формирование публичной ссылки на прослушивание.

Мгновенные обновления между участниками работают через серверный broadcast. Каждое значимое событие в жизни звонка рассылается участникам сразу: появление, принятие, отклонение, технические сигналы соединения, завершение. Это даёт мгновенный интерфейс у всех без поллинга.

7 статусов звонка и 6 статусов участника

Жизненный цикл звонка описывают семь статусов: вызов (инициатор ждёт ответа), идёт разговор (у обоих фиксируется время ответа), завершён (нормально), пропущен (получатель не ответил — авто-помечается фоновым заданием), отклонён, отменён инициатором до ответа, ошибка соединения (например, не удалось установить связь). Финальные статусы — все, кроме «вызов» и «идёт разговор» — отделяются специальным признаком.

У каждого статуса свой цвет в интерфейсе (жёлтый, синий, зелёный, красный, серый) — менеджер видит историю звонков и сразу понимает, какие были пропущены, какие отклонены. Цвет и подпись приходят с сервера готовыми.

Статус участника в групповом звонке хранится отдельно: приглашён (ещё не отвечал), звонит, в разговоре (зафиксировано время входа), вышел (зафиксировано время выхода), отклонил приглашение, пропустил. Это важно, потому что в группе один участник может быть в разговоре, другой уже вышел, третий пропустил одновременно. По каждому участнику хранится время приглашения, входа и выхода — полный таймлайн пребывания.

Групповые звонки: роли хоста, мьюты, демо экрана

Групповые звонки включаются отдельным флагом «групповой» на звонке. Вместо фиксированной пары инициатор и получатель — отдельный список участников. У каждого участника есть роль: хост или обычный участник. Обычно хост — это инициатор, но систему можно настроить так, что хостом становится первый ответивший.

Хост группового звонка управляет всеми: выключить микрофон одному (фиксируется кто, когда и от кого пришло выключение), вернуть, выключить всем кроме себя одной операцией, запустить и остановить демонстрацию экрана. Все действия рассылаются участникам сразу.

Запись групповых звонков — отдельная подсистема. Запись стартует по команде хоста: фиксируется идентификатор записи и статус «идёт», формируется публичная ссылка по шаблону пути, фиксируется время старта и автор. Запустить и остановить запись может только хост. Параллельная запись одного звонка запрещена. Если хранилище недоступно — статус становится «ошибка». По событию завершения записи карточка финализируется автоматически.

Все действия хоста рассылаются активным участникам мгновенно — интерфейс обновляется сразу: красная точка REC у всех, индикатор выключенного микрофона на нужном участнике, рамка вокруг показывающего экран.

Защита от двойных звонков, авто-Missed, persistence

Перед началом звонка система проверяет обе стороны: если у кого-то уже идёт или звонит другой звонок — звонок не стартует. Получателю — текст «собеседник сейчас занят», инициатору — «у вас уже есть активный звонок». Фронт показывает «занят, перезвонить позже» вместо тщетных дозвонов.

Авто-перевод в «пропущен» решает проблему обрывов на стороне звонящего. Если у звонящего пропал интернет в момент дозвона, без страховки звонок остался бы навечно в статусе «звонит» и заблокировал бы дальнейшие звонки участников. Раз в минуту фоновое задание находит все звонки в статусе «звонит» старше 60 секунд и переводит их в «пропущен» — обе стороны получают уведомление.

Звонки не удаляются физически — это нужно для аудита и сохранения связи с файлами записей. Каждая сторона может скрыть звонок из своей истории — собеседник по-прежнему видит его. Перед скрытием система проверяет, что пользователь действительно участник звонка.

История, статистика и фильтры

История звонков пользователя — пагинированный список (по умолчанию 30 на страницу), уже без скрытых. Фильтры: направление (входящие или исходящие), статусы (любые из семи), период по дате создания, поиск по имени или фамилии собеседника.

История отдаётся для экспорта по частям — это используется в экспорте истории. Сервис не раздувает память даже на сотнях тысяч звонков. Формат экспорта — CSV или XLSX с теми же полями, что и в интерфейсе: собеседник, направление, статус, длительность, дата, теги, заметка.

Статистика считает агрегаты за период: всего звонков, пропущенных, входящих, исходящих, общая длительность в секундах, средняя по завершённым, разбивка по дням с количеством всех и пропущенных для графика, топ-5 собеседников с количеством звонков, именем, фамилией и аватаром. Сразу пригодно для дашборда менеджера: «с кем я больше всего общался, сколько пропустил, как распределена нагрузка по дням».

Теги, заметки, реальный сценарий использования

Теги звонков личные у каждого менеджера, не общие на всю систему — это даёт каждому свою рабочую схему классификации. Имя и цвет настраиваются в личных настройках: «продажа», «жалоба», «callback», «горячий клиент», «обучение». Один звонок может иметь несколько тегов одновременно. У другого менеджера могут быть свои теги, не пересекающиеся с первым.

Заметка — свободный текст про разговор. Фиксируется сразу после звонка. Пример: «договорились о встрече 28-го в 14:00, нужно отправить КП». Причина завершения — отдельное структурированное поле, пригодится для отчётов «почему мы много отказов получаем».

Типовой сценарий — звонок с клиентом по сделке. Менеджер открывает чат сделки, кликает «позвонить» — звонок автоматически привязан к этой сделке. После разговора ставит тег «согласование цен», в заметке пишет договорённости, при необходимости поднимает групповой звонок с руководителем и записывает обсуждение. После завершения в чат сделки автоматически попадает «Звонок 12 мин, ссылка на запись» — весь контекст сделки остаётся в одном месте.

Созвоны из календаря и постоянные группы

Групповые созвоны в AIERP не обязательно поднимать вручную. Событие календаря с типом «Созвон» или «Встреча» само становится точкой входа в живой звонок: при старте оно поднимает LiveKit-комнату, а кнопка «Присоединиться» превращает запланированную встречу в активный групповой звонок. Первый вошедший поднимает комнату и автоматически приглашает остальных участников события, становясь ведущим; следующие подключаются к тому же звонку. Присоединиться может только участник встречи, а отменённая дата созвона в звонок не пускает.

Повторяющиеся встречи обрабатываются аккуратно: для нужной даты создаётся (или находится) отдельное вхождение события, и звонок привязывается именно к нему, а не к серии целиком. Каждая планёрка получает свой звонок, свою запись и свою историю — еженедельный созвон отдела не смешивается в один бесконечный лог.

Для регулярного общения есть постоянные группы созвонов — личные именованные наборы участников с цветом: «Опт», «Региональные менеджеры», «ИТ-дежурные». По группе групповой созвон собирается одним действием, без ручного набора людей. Владелец группы автоматически становится ведущим и в состав отдельно не входит; в участники попадают только реальные пользователи, дубликаты отсеиваются, а имя группы уникально в пределах владельца. Группа видна владельцу и её участникам, по ней ведётся история собранных звонков с инициатором и числом участников — видно, как часто и кем группа используется.

Гостевые и публичные ссылки: внешние участники без аккаунта

Иногда в разговор нужно пустить человека извне — клиента, подрядчика, кандидата, эксперта. Для этого есть два вида ссылок. Гостевая ссылка — именная: ведущий создаёт её на конкретный активный звонок, гостю выдаётся уникальный 48-символьный токен, а на подключение — временный LiveKit-токен с правом только на микрофон сроком на 6 часов. Ссылка действует, пока звонок не завершён. Идентичность гостя стабильна в пределах ссылки: если гостя случайно отключило, повторный вход по той же ссылке заменяет «зависшее» соединение, а не создаёт второго участника-двойника.

Публичная ссылка — многоразовая ссылка-комната, доступная только для группового звонка. Включить её может любой участник; включение идемпотентно — пока ссылка активна, повторный вызов не выдаёт новый токен. Вход по публичной ссылке разветвляется: авторизованный сотрудник подключается под своей учётной записью с полными правами и попадает в список участников звонка, а анонимный гость входит аудио-only и обязан указать имя (от 2 до 60 символов). Отключение публичной ссылки сбрасывает признак публичности и обнуляет токен — старая ссылка мгновенно перестаёт работать.

Оба механизма не требуют от внешнего участника ни установки приложений, ни учётной записи в ERP — только браузер и ссылка. При этом доступ управляемый: гостевая ссылка привязана к одному звонку и живёт вместе с ним, публичную можно в любой момент отозвать.

Обзор звонков по всей организации для руководителя

Помимо личной истории и статистики каждого сотрудника, в системе есть административный обзор — история и статистика звонков по всей организации сразу. Те же инструменты, что и в личном кабинете: фильтры по направлению (входящие или исходящие), статусам, периоду и поиску по имени или фамилии собеседника, пагинация до 100 записей на страницу, агрегированная статистика за период.

Это даёт руководителю и службе контроля качества единую картину коммуникаций сети: кто с кем и сколько общается, где копятся пропуски, как распределена нагрузка по дням. В связке с записью групповых созвонов, тегами и заметками административный обзор превращает внутреннюю связь из «чёрного ящика» в наблюдаемый процесс — без выгрузок из сторонней АТС и без ручного сведения журналов.

Готовы автоматизировать?

Покажем модуль на ваших данных и подключим за 1–2 недели.