Взаємодія з АТС
Взаємодія з АТС відбувається через SIP-підключення, які налаштовуються спільно як на стороні АТС, так і на стороні SIP.TG.
Щоб створити SIP-підключення на стороні SIP.TG:
- Запустіть бота @siptg_bot і перейдіть до розділу
/gateway
. - Оберіть сесію Telegram, яку хочете підключити до АТС, або створіть нову за допомогою кнопки «Підключити» (докладніше див. Покрокове підключення сесії).
- Натисніть одну з кнопок для створення нового SIP-підключення, що відповідає типу підключення: «🆕 PBX→SIP․TG», «🆕 SIP․TG→PBX» або «🆕 IP⇿IP».
Налаштування SIP-підключення до АТС
Більшість налаштувань відображаються прямо на кнопках у вигляді поточних значень. Щоб змінити ці налаштування, достатньо натиснути відповідну кнопку та ввести нове значення за запитом бота.
Однак деякі кнопки працюють інакше:
- Worker: при натисканні з’являється список доступних Worker-серверів. Оберіть потрібний сервер зі списку, щоб побачити його детальний опис і призначити.
- Кнопки з прапорцями, такі як «DTMF вх.», «DTMF вих.», «Передзвонити», «Лінії», «Обробка повідомлень», «Callback» і «Поділитися підпискою», працюють як перемикачі. Одне натискання активує або деактивує опцію.
- Протокол з’єднання (UDP/TCP/TLS): при кожному натисканні відбувається переключення на наступний доступний протокол.
- Показати акаунт і Скинути пароль: відображають параметри підключення до SIP.TG, які потрібно вказати на стороні АТС.
Worker сервер
Worker сервер
Дозволяє обрати сервер, який буде з’єднуватися з АТС або провайдером телефонії.
Передбачено 3 типи серверів:
Тип сервера | Опис | Позначення |
---|---|---|
Публічні сервери SIP.TG | Основні сервери, що підтримуються SIP.TG | ✅ |
Публічні сервери інших користувачів | Загальнодоступні сервери, розміщені іншими користувачами | 🌐 |
Приватні сервери | Ваші власні сервери, доступні тільки для ваших SIP-акаунтів | 🔑 |
На безкоштовній підписці доступні лише деякі з публічних серверів SIP.TG.
Аудіокодеки
Аудіокодеки
Вибір кодеків впливає на якість і сумісність голосового зв’язку. Підтримуються кодеки Opus, alaw, mulaw, GSM та інші.
Методи передачі DTMF
Методи передачі DTMF
DTMF необхідний для взаємодії з голосовим меню. Доступні методи RFC2833 (рекомендується), INFO та inband.
Правила перетворення номерів
Правила перетворення номерів
Дозволяють задати формат набору номера для сумісності з АТС. Докладніше в розділі «Правила перетворення номерів».
Пріоритет
Пріоритет
Пріоритет дозволяє задати порядок виклику SIP-акаунтів при дзвінку Telegram → SIP.
Застосовуються такі правила:
- Акаунти з однаковим пріоритетом викликаються одночасно.
- Чим менший пріоритет, тим раніше викликаються SIP-акаунти.
- Перехід до наступного пріоритету відбувається після невдалої спроби дозвону на всі SIP-акаунти попереднього пріоритету.
Caller ID і Caller Name
Caller ID і Caller Name
Правила формування ідентифікатора (Caller ID) і відображуваного імені (Caller Name) абонента під час дзвінка, які застосовуються до обох напрямків.
Докладніше див. Типи ідентифікаторів абонента.
Нижче наведено опис специфічних налаштувань для кожного типу SIP-підключення.
PBX → SIP.TG
У цьому режимі ваша АТС реєструється на SIP.TG як SIP-клієнт. Ви отримуєте SIP-логін і пароль від бота та вказуєте їх у вашій АТС.
Це найпростіший спосіб підключення і підходить для більшості систем (Asterisk, 3CX, FreePBX тощо).
Скріншот із налаштуваннями SIP-підключення PBX→SIP.TG
Показати акаунт і Скинути пароль
Показати акаунт і Скинути пароль
Показують логін, пароль і адресу підключення поточної SIP-лінії, яку необхідно зареєструвати на стороні вашої АТС.
«Скинути пароль» попередньо генерує новий SIP-пароль для цієї лінії. Після скидання його потрібно буде оновити на стороні АТС.
Довірені IP
Довірені IP
Список IP-адрес і підмереж, з яких дозволено підключення до цього акаунта.
SIP.TG → PBX
Тут Worker-сервер SIP.TG реєструється на вашій АТС. У боті ви задаєте параметри вашої АТС: логін, пароль і адресу.
Не забудьте додати IP-адреси SIP.TG до білого списку на вашій АТС. Актуальний список: files.sip.tg/fw.txt.
Скріншот із налаштуваннями SIP-підключення SIP.TG→PBX
Логін, Пароль, Домен і Проксі
Логін, Пароль, Домен і Проксі
Основні параметри підключення, які потрібно заповнити, щоб підключення до вашої АТС було можливим.
«Проксі» можна заповнювати лише в тому випадку, якщо він відрізняється від «Домена».
Номер на АТС
Номер на АТС
Коли користувач натискає кнопку дзвінка 📞 у додатку Telegram без надсилання будь-яких повідомлень — цей номер використовуватиметься як номер за замовчуванням, який надійде до АТС.
IP ⇿ IP
Обидві сторони знають IP-адресу одна одної. Використовується в випадках, коли реєстрація неможлива або не потрібна (наприклад, статична маршрутизація).
Підходить для досвідчених користувачів. Потребує налаштування маршрутів на стороні АТС.
Скріншот із налаштуваннями SIP-підключення IP⇿IP
Адреса:порт
Адреса:порт
IP-адреса і порт протилежної сторони (вашої АТС).
Щоб підключення відбулося, на стороні АТС також потрібно створити підключення з конкретною IP-адресою сервера SIP.TG. Для цього використовується IP-адреса Worker-сервера, призначеного SIP-підключенню.
Поточна IP-адреса використовуваного Worker-сервера відобразиться в повідомленні, коли ви запросите зміну поточного параметра.
Поле:Значення
Поле:Значення
Якщо ви хочете використовувати кілька SIP-підключень між однаковими IP-адресами, це поле дозволяє задати додатковий SIP-заголовок для коректної ідентифікації підключення.
Параметр задається у вигляді пари {назва SIP-поля}:{значення SIP-поля}
, розділеної двокрапкою :
.
Номер на АТС
Номер на АТС
Коли користувач натискає кнопку дзвінка 📞 у додатку Telegram без надсилання будь-яких повідомлень — цей номер використовуватиметься як номер за замовчуванням, який надійде до АТС.
Типи ідентифікаторів абонента
Кожен користувач Telegram може мати до трьох типів ідентифікаторів:
- Номер телефону, на який зареєстровано акаунт. Він завжди присутній, але за замовчуванням прихований налаштуваннями конфіденційності для сторонніх користувачів. З великими обмеженнями, але за номером телефону можна встановлювати контакт із користувачем.
- Username — це унікальне буквене ім’я користувача. За замовчуванням його немає, багато користувачів його встановлюють, але, строго кажучи, воно може бути відсутнім. А може бути навпаки — користувач може мати кілька колекційних Username. За Username можна встановлювати контакт із користувачем, і обмеження значно м’якші, ніж для номера телефону, але хмарні АТС часто не передбачають використання нечислових ідентифікаторів абонента.
- User ID — внутрішній числовий ідентифікатор. Є завжди, ніколи не змінюється, але встановити контакт із користувачем лише за User ID неможливо — його можна використовувати тільки після того, як контакт було встановлено одним із інших способів.
Тип ідентифікатора | Формат | Можливість контакту | Обов’язковий | Змінюваний | Підтримка АТС |
---|---|---|---|---|---|
Номер телефону | числовий | обмежена | так | так | так |
Username | буквений | так | ні | так | обмежена |
User ID | числовий | ні | так | ні | так |
З таблиці видно, що кожен ідентифікатор має серйозні обмеження, які не дозволяють використовувати його в усіх сценаріях. SIP.TG підтримує всі типи ідентифікаторів і їх комбінації, а також дозволяє задавати пріоритет їх використання відповідно до ваших потреб.
Telegram → АТС
Для кожного SIP-підключення можна встановити правила формування Caller ID, який передаватиметься в полі From
у повідомленні INVITE
під час дзвінків Telegram → АТС.
Правила формування Caller ID складаються з кількох рядків, по одному правилу в кожному рядку. Кожне правило — це шаблонний рядок, у якому як шаблонні параметри допустимі {phone}
, {username}
і {userid}
. Під час формування остаточного Caller ID використовується перше правило, усі шаблонні параметри якого містять значення про користувача Telegram, що дзвонить.
Приклади формування Caller ID
Приклади формування Caller ID
Такий Caller ID у різних ситуаціях може приймати всі три типи ідентифікаторів залежно від того, які з них є у користувача:
- Якщо номер телефону не прихований — буде використано його.
- В іншому випадку, якщо встановлено Username — система вибере його.
- І лише в найвинятковішому випадку буде використано User ID із префіксом
0
— ця мітка дозволяє усунути неоднозначність в інтерпретації типу ідентифікатора.
Такий Caller ID у різних ситуаціях може приймати всі три типи ідентифікаторів залежно від того, які з них є у користувача:
- Якщо номер телефону не прихований — буде використано його.
- В іншому випадку, якщо встановлено Username — система вибере його.
- І лише в найвинятковішому випадку буде використано User ID із префіксом
0
— ця мітка дозволяє усунути неоднозначність в інтерпретації типу ідентифікатора.
Тут поведінка аналогічна Прикладу 1 з тією лише різницею, що якщо у користувача немає ні номера телефону, ні Username, такий дзвінок буде заборонений і не потрапить до АТС.
А цей приклад відрізняється від перших двох тим, що в разі відсутності у користувача номера телефону та Username дзвінок усе одно дійде до АТС, але з номером anonymous
.
Окрім Caller ID, поле From також може містити ім’я абонента (Caller Name), формуванням якого також можна керувати за допомогою аналогічних правил, але, крім перелічених вище параметрів, є ще два:
{name}
— відображуване ім’я в UTF-8 (через смайлики може викликати проблеми на стороні АТС);{name_ascii}
— відображуване ім’я, перетворене в ASCII (безпечний варіант).
Приклад формування Caller Name
Приклад формування Caller Name
Залежно від наявності у користувача номера телефону та Username, використовуватиметься:
- або номер телефону з префіксом
+
, за яким слідує відображуване ім’я, записане в дужках, - або Username із префіксом
@
, за яким також слідує відображуване ім’я, записане в дужках, - або в крайньому випадку — лише відображуване ім’я без сторонніх символів.
АТС → Telegram
Під час отримання запиту INVITE
зі сторони АТС викликаний ідентифікатор інтерпретуватиметься в повній відповідності з тим самим параметром Caller ID, який описано вище. Однак алгоритм визначення типу ідентифікатора та відсікання в ньому префіксів і сторонніх символів уже не виглядає так очевидно.
Детальний алгоритм обробки правил
Детальний алгоритм обробки правил
Як і у випадку дзвінків Telegram → АТС, правила перевіряються послідовно, і вибір зупиняється на першому, яке задовольняє заданим критеріям після перетворень:
- Усі шаблонні параметри в правилі замінюються відповідними регулярними виразами:
{phone}
→+?[1-9]\d*
: число, яке не може починатися з0
і опціонально може починатися із символу+
;{username}
→@?[a-zA-Z]\w*
: буквено-числовий рядок, який може починатися лише з літери і опціонально з префіксом@
;{userid}
→[1-9]\d*
: число, яке не може починатися з0
і не може мати префіксів.
- У результаті п.1 виходить комплексний регулярний вираз, на відповідність якому перевіряється ідентифікатор, отриманий із INVITE URI.
- У результаті задоволення регулярному виразу, хоча це має лише теоретичний сенс, в ідентифікаторі може бути розпізнано одразу кілька типів ідентифікаторів. У такому випадку буде обране перше значення в зазначеному порядку:
{userid}
,{username}
,{phone}
.
Таким чином забезпечується двонаправленість правил формування Caller ID і консистентність форматів ідентифікатора для обох напрямків виклику.
Інтеграція з CRM
Інтеграція з CRM зазвичай реалізується не безпосередньо з SIP.TG, а через АТС, до якої SIP.TG підключається як стандартний SIP-транк. Сама CRM «бачить» дзвінки та контакти завдяки можливостям АТС. Окремих модулів чи плагінів саме для SIP.TG у CRM, як правило, встановлювати не потрібно.
Найчастіше взаємодія влаштована так:
- Дзвінок із Telegram надходить на Шлюз SIP.TG (акаунт Telegram).
- Шлюз SIP.TG конвертує дзвінок у SIP і передає його до АТС (через SIP-транк).
- АТС, маючи потрібний модуль або плагін інтеграції з CRM, розпізнає вхідний виклик, відображає картку клієнта, реєструє дзвінок або виконує інші дії.
- Після закінчення розмови дані про дзвінок (наприклад, тривалість, результат) також зберігаються в CRM.
Як АТС дізнається про номер клієнта?
Як АТС дізнається про номер клієнта?
Майже будь-яка сучасна АТС під час вхідного або вихідного дзвінка може використовувати SIP-заголовки (CallerID, From тощо), щоб «передати» дані до модуля CRM. Під час дзвінків із Telegram через Шлюз SIP.TG у SIP-транк передається ідентифікатор того, хто дзвонить (найчастіше відображається як Telegram ID або username), а логіка в АТС зіставляє цей ідентифікатор із записами CRM.
Якщо ваша АТС уміє керувати CallerID для вихідних викликів (наприклад, «підставляє» потрібний номер), то CRM може автоматично записати в картку як реальний телефонний номер, так і контакти з Telegram. Але деталей у кожної CRM і АТС багато; загалом це не регулюється безпосередньо зі сторони SIP.TG.
Як ініціювати виклик із CRM?
Як ініціювати виклик із CRM?
Якщо CRM «уміє» ініціювати виклик (наприклад, клікнути на номер і зателефонувати), вона зазвичай робить це через АТС, надсилаючи туди команду Call API або AMI (Asterisk, 3CX тощо). Далі АТС переводить запит у SIP-транк SIP.TG, а Шлюз дзвонить у Telegram. Усе це знову стандартна взаємодія «CRM → АТС → SIP-транк», де SIP.TG просто виконує роль оператора зв’язку для Telegram.
Приклад налаштування
Приклад налаштування
- В АТС створіть обліковий запис (SIP-транк) із реквізитами, виданими під час налаштування
/gateway
у @siptg_bot. - У CRM активуйте готовий плагін або модуль (для Asterisk, 3CX, FreePBX, Yate тощо) або налаштуйте зовнішні запити до АТС через її API.
- Перевірте, що CRM отримує події про дзвінки (спливає картка, записуються логи) і за потреби підключіть глибшу логіку (розподіл викликів, прив’язка записів розмови, автоматизація).
- Для вихідних дзвінків із CRM — перевірте, що АТС може сформувати виклик через SIP-транк «SIP.TG» (зазвичай обирається маршрут або правило набору для такої лінії).
Коли потрібне додаткове налаштування
Розширені поля SIP-заголовків
Якщо ваша CRM формує або очікує якісь специфічні заголовки (наприклад, X-CRM-ID), такі ситуації вирішуються засобами вашої АТС (AGI-скрипти в Asterisk, кастомні налаштування в 3CX тощо). На стороні SIP.TG немає можливості безпосередньо впливати на довільні SIP-заголовки.
Потрібен CallerID, що перенаправляється
У деяких випадках CRM потрібно бачити вихідний номер того, хто дзвонить, повністю (наприклад, для «прив’язки» до конкретного клієнта). Якщо дзвінок із Telegram, то номер може бути будь-яким (або взагалі бути відсутнім), і тут уже від логіки вашої АТС залежить, як підставляти CallerID. Іноді додають додаткову базу відповідності «Telegram ID → телефон клієнта».
Увімкнення запису розмов у CRM
Запис розмов можна ввімкнути як у самій АТС, так і в режимі «Запис дзвінків» на стороні SIP.TG (у Софтфоні). Якщо ви хочете зберігати записи саме в CRM, уточніть, чи вміє ваша АТС передавати файли запису туди. З точки зору SIP.TG, це «прозора» передача звуку по SIP, і додаткових налаштувань для запису немає.
Додаткові поради
- Єдиний підхід: усі налаштування, пов’язані з CRM, зазвичай виконуються в інтерфейсі вашої АТС. Ви сприймаєте SIP.TG як звичайного оператора зв’язку (SIP-транк).
- Типові АТС (Asterisk, 3CX, FreeSWITCH, Yate, Oktell, Panasonic тощо) мають плагіни або REST-інтерфейси для інтеграції з CRM. Вивчіть документацію АТС: найімовірніше, там є готовий приклад.
- Сценарії прийому та маршрутизації викликів (IVR, черга операторів, автоматичне перенаправлення) — усе це загальні функції АТС. Шлюз SIP.TG не обмежує і не ускладнює такі сценарії: вони працюють так само, як і при інших SIP-транках.
Не ускладнюйте. Щоб «подружити» CRM із дзвінками Telegram, достатньо підключити Шлюз SIP.TG до вашої АТС і використати стандартні інструменти інтеграції CRM, які є в АТС.
Якщо виникли проблеми чи помилки, скористайтеся розділом Питання та вирішення проблем.