Перейти до вмісту

Підключення IP-телефонії

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

Загальний принцип

  1. У розділі Джерела → Телефонія оберіть провайдера й введіть облікові дані.
  2. Скопіюйте в налаштування провайдера адресу вебхука, яку показує майстер, — а не голу webhookUrl з API. Усім провайдерам, крім Binotel, потрібен і згенерований Aelo webhook-секрет, без нього всі вебхуки відхиляються: у Stream Telecom адреса з майстра вже містить його як ?token=…, в Unitalk і Ringostat секрет іде в заголовок Authorization.
  3. Натисніть Перевірити з’єднання — Aelo звернеться до CDR API провайдера.

Stream Telecom

  • Облікові дані: username + password + api_key (Адміністрування → Профіль компанії → API KEY). Не Bearer-токен.
  • Webhook: потік подій; термінальна — Hangup із синхронним recordUrl. Налаштовується листом у support@streamtele.com.
  • Адреса вебхука секретна: у ній є токен (?token=…), і дзвінок на адресу без нього відхиляється. Майстер вставляє повну адресу в лист до підтримки; щоб отримати її пізніше, відкрийте Налаштування → Джерела даних → Підключення → Вебхук дзвінків у реальному часі й натисніть Показати адресу — доступно власнику та адміністраторам. Надсилайте адресу лише до підтримки Stream Telecom.
  • CDR backfill: вікно ≤30 днів.

Binotel

  • Облікові дані: key + secret (видає support@binotel.ua за прив’язкою до IP).
  • Подія: apiCallCompleted (form-urlencoded). У вебхуку немає URL запису — Aelo отримує його на вимогу перед завантаженням (посилання живе ~15 хв).
  • IP-allowlist: публічні IP Binotel дозволені за замовчуванням.
  • Aelo завжди відповідає 200, щоб уникнути повторних спроб провайдера.

Unitalk

  • Облікові дані: API key проєкту (заголовок Authorization).
  • Налаштування: після збереження Aelo згенерує webhook-секрет. Вставте його у заголовок Authorization обробника подій Unitalk — інакше всі вебхуки будуть відхилені.
  • Як побачити секрет пізніше: за замовчуванням він не показаний, бо стан підключення видно будь-якому учаснику організації. Відкрийте Налаштування → Джерела даних → Підключення → Вебхук дзвінків у реальному часі й натисніть Показати секрет — доступно власнику та адміністраторам. Секрет не змінюється ні при заміні API-ключа, ні при перепідключенні джерела: копія, вже вставлена в Unitalk, працює далі.
  • Часовий пояс: дати Unitalk без зсуву; за замовчуванням Europe/Kyiv (змінюється у формі).
  • Подія: CALL_END. Запис стає доступним за ~10–15 хв (Aelo дочекається).

Ringostat

  • Облікові дані: API key — єдине поле форми.
  • Налаштування: у Ringostat відкрийте Інтеграції → Webhooks 2.0, вкажіть видану URL адресою призначення та додайте заголовок Authorization зі значенням Bearer <секрет> — це webhook-секрет, який Aelo генерує після збереження. Без заголовка всі вебхуки відхиляються. Секрет показується в майстрі, а пізніше — за кнопкою Показати секрет, як в Unitalk.
  • Запис: надходить прямо у вебхуку, додатковий запит не потрібен.
  • CDR backfill відсутній: історичні дзвінки завантажити не можна — лише ті, що надійдуть після підключення.
  • Статус: бета. Схема payload успадкована від попередньої інтеграції й жодного разу не підтверджена на живих даних; тому Перевірити з’єднання відповідає успіхом, не звертаючись до Ringostat.

Гібридний режим: телефонія як джерело лише аудіо

Деякі CRM реєструють дзвінок, але не додають його запис. Bitrix24, наприклад, може зафіксувати дзвінок активністю, яка лише посилається на веб-архів оператора телефонії — замість файлу. Для такого випадку встановлення телефонії може служити джерелом лише аудіо замість ролі за замовчуванням джерело записів: власних записів воно не створює і постачає запис для дзвінка, якому його бракує в CRM. Телефонію, яка саме зараз приносить записи, на місці не перемикають — спочатку відключіть її, потім додайте джерелом аудіо.

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