Перейти к содержимому

Подключение IP-телефонии

Aelo принимает завершённые звонки от провайдеров IP-телефонии через webhook, а исторические звонки — через CDR backfill. Поддерживаются четыре провайдера: Stream Telecom и Binotel проверены на боевом трафике; Unitalk и Ringostat — в бете.

  1. В разделе Источники → Телефония выберите провайдера и введите учётные данные.
  2. Скопируйте выданный webhookUrl в настройки провайдера.
  3. Нажмите Проверить соединение — Aelo обратится к CDR API провайдера.
  • Учётные данные: username + password + api_key (Администрирование → Профиль компании → API KEY). Не Bearer-токен.
  • Webhook: поток событий; терминальное — Hangup с синхронным recordUrl. Настраивается письмом в support@streamtele.com.
  • CDR backfill: окно ≤30 дней.
  • Учётные данные: key + secret (выдаёт support@binotel.ua с привязкой к IP).
  • Событие: apiCallCompleted (form-urlencoded). В вебхуке нет URL записи — Aelo получает его по запросу перед загрузкой (ссылка живёт ~15 мин).
  • IP-allowlist: публичные IP Binotel разрешены по умолчанию.
  • Aelo всегда отвечает 200, чтобы избежать повторных попыток провайдера.
  • Учётные данные: API key проекта (заголовок Authorization).
  • Настройка: после сохранения Aelo сгенерирует webhook-секрет. Вставьте его в заголовок Authorization обработчика событий Unitalk — иначе все вебхуки будут отклонены.
  • Как посмотреть секрет позже: по умолчанию он не показан, потому что состояние подключения видно любому участнику организации. Откройте Настройки → Источники данных → Подключение → Вебхук звонков в реальном времени и нажмите Показать секрет — доступно владельцу и администраторам. Секрет не меняется ни при замене API-ключа, ни при переподключении источника: копия, уже вставленная в Unitalk, продолжает работать.
  • Часовой пояс: даты Unitalk без смещения; по умолчанию Europe/Kyiv (меняется в форме).
  • Событие: CALL_END. Запись становится доступной через ~10–15 мин (Aelo дождётся).
  • Учётные данные: API key — единственное поле формы.
  • Настройка: вебхук подключается через поддержку Ringostat (help@ringostat.com); мастер готовит это письмо за вас.
  • Запись: приходит прямо в вебхуке, дополнительный запрос не нужен.
  • CDR backfill отсутствует: исторические звонки загрузить нельзя — только те, что поступят после подключения.
  • Статус: бета. Схема payload унаследована от прежней интеграции и ни разу не подтверждена на живых данных; поэтому Проверить соединение отвечает успехом, не обращаясь к Ringostat.

Гибридный режим: телефония как источник только аудио

Section titled “Гибридный режим: телефония как источник только аудио”

Некоторые CRM регистрируют звонок, но не прикладывают его запись. Bitrix24, например, может зафиксировать звонок активностью, которая лишь ссылается на веб-архив оператора телефонии — вместо файла. Для этого случая установку телефонии можно переключить из роли по умолчанию источник записей в роль источника только аудио: она перестаёт создавать собственные записи и вместо этого поставляет запись для звонка, у которого её не хватает в CRM.

  • Вендор: сегодня только Binotel. Aelo получает запись Binotel по запросу, по идентификатору звонка; Stream Telecom, Unitalk и Ringostat отдают запись только внутри собственного вебхука и не могут выдать её по запросу для звонка, который не приходил к ним напрямую.
  • Настройка: роль выбирается в мастере подключения, на шаге учётных данных. Выбор появляется, только когда он осмыслен: вендор должен уметь отдать запись по идентификатору звонка, а источником записей должна быть CRM, у которой Aelo эту запись забирает, — сегодня это Bitrix24. Подключение источника аудио не выключает телефонию, через которую приходят записи: активная телефония одна НА РОЛЬ, а не на организацию. Источник аудио пропускает шаг массового импорта (записей он не импортирует) и появляется в Настройки → Источники данных → Подключение отдельной карточкой с пометкой «дополнительный», своим URL вебхука и своими кнопками изменения и отключения. Замена ключей роль сохраняет: мастер открывается на той роли, которая у установки уже есть.
  • Сопоставление: сначала Aelo ищет идентификатор звонка прямо в активности CRM; если не находит — сопоставляет по номеру, времени и длительности звонка с индексом звонков Binotel. Живой вебхук добавляет звонок в этот индекс, как только он завершился, отвечен он или нет. Исход «не взяли трубку» или «занято» позволяет Aelo перестать ждать запись, которой не будет. Остальные неотвеченные исходы (бросили трубку, пока шёл дозвон; сбой связи) тоже попадают в индекс, но запись Aelo спрашивает у оператора до суточного потолка: отличить такой исход от того, которого мы пока не знаем, нечем. Долговечный исторический импорт, запускаемый вместе с обработкой накопленного, добирает то, чего живой вебхук не увидел вовсе: сброшенное событие или звонок, который состоялся до подключения установки.
  • Срок хранения: индекс сопоставления содержит только хвосты телефонных номеров и метаданные звонка. Строка живёт не больше 30 дней и удаляется раньше, если у организации задан меньший срок хранения транскриптов; индекс также входит в полное удаление организации.
  • Когда Aelo сдаётся: два ответа позволяют закрыть запись со своей причиной, а не ждать аудио. «Записи у источника нет» — звонок есть в индексе с исходом, который говорит, что оператор её не делал. «Подходит несколько звонков» — после сужения кандидатов осталось больше одного, а угадывать нельзя: чужая запись в карточке хуже отсутствующей. Всё остальное ждёт обычные сутки и затем закрывается с причиной «Звонок не найден у источника» — если в этот момент оператор отвечает. Если нет, запись завершается ошибкой: замолчавший оператор ничего не говорит о самом звонке.