Створення шаблону VoIP-провайдера в 3CX Phone System

В даній статті, призначеної для інженерів VoIP операторів, ми розповімо про те, як створити шаблон VoIP оператора для 3CX Phone System. Шаблон містить основні параметри підключення, значно спрощують підключення лінії оператора до системи.

Введення
Більшість VoIP операторів сьогодні використовують більш менш стандартний набір параметрів, який описаний в універсальному шаблоні VoIP провайдера Generic. Шаблон Generic ми й візьмемо за основу при створенні індивідуального шаблону. Перш за все пояснимо різницю між двома типами VoIP операторів, використовуваними в 3CX:

VoIP Provider – VoIP оператор, який використовує авторизацію по імені користувача та паролю. Більшість шаблонів VoIP операторів в 3CX розраховані на цей тип підключення.

SIP Trunk – VoIP оператор, який використовує автентифікацію за публічному IP адресу сервера 3CX. Публічний IP адреса сервера повинен бути вказаний у оператора як адреса, на який оператор маршрутизує виклики, і з якого він очікує виклики.

Після установки системи, файли шаблонів VoIP операторів розташовані в папці c:\ProgramData\3CX\Data\Http\Templates\provider\. Універсальні шаблони називаються:

GenericVoIPProvider.pv.xml – VoIP оператор з авторизацією по імені користувача та пароля

GenericSIPTrunk.pv.xml – VoIP оператор з авторизацією по IP адресою (SIP Trunk)

Вибирайте шаблон залежно від типу авторизації, який ви підтримуєте!

Створення шаблону
Перш за все, зробіть копію універсального шаблону і назвіть файл по імені вашого оператора (наприклад, myprovider.pv.xml).

Файл містить наступні розділи:

Заголовок файлу оператора (Header)
У заголовку XML файлу шаблону вказується ім'я VoIP оператора, країна, назва файлу іконки логотипу і веб сайт.

im1

Версія (Version)

Цей параметр визначається постачальником шаблону (як правило, VoIP оператором) і може містити тільки число. Починається з 1 і збільшується при кожному оновленні шаблону. Оновлення може знадобитися при виході нової версії 3CX або при зміні параметрів оператора.

URL

Посилання на веб-сайт оператора, який, наприклад, може містити тарифи або іншу важливу інформацію.

Логотип (Image)

Важливо дотримати прості правила створення логотипу провайдера:

Логотип повинен мати формат PNG 16×16

Ім'я графічного файлу повинне збігатися з ім'ям файлу провайдера (без розширення), тобто myprovider.pv.xml > myprovider.png

Адреси і порти серверів VoIP провайдера (Hostmames and Port Numbers)
В цьому розділі вказані адреси та порти серверів SIP VoIP оператора, до яких буде підключатися 3CX Phone System.

im2

RegistrarHost

Тут вказується IP адреса або FQDN ім'я сервера VoIP оператора. Якщо параметр ProxyHost/Port не вказаний, а RegistrarHost вказаний як FQDN, 3CX спробує визначити IP-адресу сервера SIP VoIP оператора через SRV запис (_sip._udp.myprovider.com) DNS сервера:

Якщо буде отримана відповідь з SRV записами, 3CX буде використовувати сервери з зазначеним пріоритетом.

Якщо SRV записів не існує, 3CX буде використовувати запис DNS сервера.

RegistrarPort

Зазвичай тут вказується порт сервера SIP VoIP оператора 5060. Якщо сервер оператора працює на нестандартному порту введіть номер порту в шаблоні.

ProxyHost (опціонально)

Якщо визначено параметр ProxyHost, 3CX Phone System не робить пошук по SRV записів, а використовує А запис ProxyHost. Запит реєстрації від 3CX Phone System буде спрямований на RegistrarHost через проксі сервер ProxyHost. Часто SIP проксі сервер і SIP сервер реєстрації поєднані в одному сервері

ProxyPort (опціонально)

Зазвичай тут вказується SIP proxy сервер VoIP оператора 5060. Якщо проксі сервер оператора працює на нестандартному порту введіть номер порту в шаблоні.

Параметри реєстрації (Registration Settings)
У цій частині шаблону зазначаються тип і параметри авторизації 3CX Phone System на сервері VoIP провайдера.

im3

RegistrationExpiry

Цей параметр вказує період підтвердження реєстрації 3CX Phone System на SIP-сервері провайдера. Мінімально допустиме значення – 60 сек. Однак 3CX приймає значення, передане сервером VoIP оператора, тобто час VoIP оператора завжди має пріоритет. Час в шаблоні 3CX за замовчуванням — 600 с. Якщо тип підключення SIP Trunk, цей пункт не застосовується, однак все одно має бути в шаблоні.

RequiredAuthFor

Цей параметр вказує, чи потрібно аутентифікація підключення до VoIP оператору. Як було сказано, якщо оператор використовує автентифікацію за IP адресою, аутентифікація не потрібно. 1 означає, що аутентифікація не потрібно. Як правило, все ж, аутентифікація потрібно як для вихідних, так і для вхідних викликів. У цьому випадку, значення повинно бути 4. 2 – аутентифікація тільки вхідні дзвінки. 3 — аутентифікація тільки вихідних дзвінків.

Підключення типу Trunk (авторизація по IP адресою)

Параметри аутентифікації не повинні вводиться користувачем, якщо 3CX Phone System використовує автентифікацію за IP адресою. Тому їм слід надати статус «тільки для читання».

<field name=«LineAuthenticationPassword» status="readonly"></field>
<field name=«3wayauthenticationid» status="readonly"></field>

Можливості VoIP оператора (Provider Capabilities)
Дані параметри необхідно визначати для всіх VoIP операторів, оскільки 3CX Phone System також виступає проксі сервером для своїх внутрішніх користувачів.

im4

IsBindToMS

Цей параметр визначає, чи буде медіапотік RTP від VoIP оператора проходити через сервер 3CX, або направлятися безпосередньо на кінцеве SIP пристрій всередині мережі (тобто на IP телефон користувача). Настійно рекомендується залишити значення за умовчанням 1 (пропускати через сервер 3CX).

IsSupportReinvite

Параметр, що визначає, чи підтримує VoIP оператор SIP метод Re-invite. Включення або відключення цього параметра допомагає, якщо утримання, відновлення або переведення виклику від провайдера працює нестабільно. Можливі значення Yes=1 і No=0, але рекомендується залишити за замовчуванням 0.

IsSupportReplaces

Параметр, що визначає, чи підтримує VoIP оператор SIP заголовок Replaces. Включення або відключення цього параметра допомагає, якщо утримання, відновлення або переведення виклику від провайдера працює нестабільно. Можливі значення Yes=1 і No=0, але рекомендується залишити за замовчуванням 0.

Disable Video

Цей параметр дозволяє прибрати SDP опис відео в медиапотоке. Якщо VoIP сервер підтримує передачу відео в медиапотоке RTP, ви можете явно вимкнути цю можливість. Можливі значення Yes=1 і No=0

Наявні кодеки (Codecs)
У цьому розділі визначаються голосові кодеки і їх пріоритет в SDP описі потоку. Пріоритет кодеків визначається розташуванням відповідних рядків. Ви можете визначити до трьох кодеків, але якщо потрібно менше – просто видаліть зайві рядки.

im5

Доступні параметри: pcmu, pcma, gsm, g729, g722.

Ідентифікація джерела виклику (Source Identification)
При отриманні вхідного INVITE запиту, 3CX намагається ідентифікувати джерело виклику і зіставити йому відповідний VoIP транк. Процедура ідентифікація джерела проводиться різними способами.

im6

Рекомендації

Краще всього зберегти налаштування ідентифікації джерела без змін. Як правило, запит INVITE включає поле, яке ідентифікує транк, для якого цей запит направлений. Це поле має бути унікальним. Для VoIP провайдерів, які використовують ім'я користувача та пароль, як правило, використовується параметр AuthenticationID в одному із стандартних SIP полів. Тому рекомендується розкоментувати параметр Match Strategy і привласнити йому значення 1. Далі вкажіть, в якому SIP поле (наприклад, Contact User Part), VoIP оператор передає AuthID.

Якщо VoIP оператор передає AuthID в поле Contact User Part, ви можете створити кілька VoIP підключень до одного і того ж оператора з різними параметрами реєстрації (тобто декілька незалежних VoIP ліній), і 3CX буде коректно визначати джерело виклику.

<field name=«MatchStrategy»>1</field>
<field name=«Source» parameter=«ContactUser» custom="">$AuthID</field>

Якщо реєстрація на VoIP операторі не проводиться (тобто використовується підключення типу Trunk), доведеться вибрати статичний параметр ідентифікації джерела, наприклад IP адресу або FQDN ім'я вузла, який надіслав запит INVITE. В шаблоні він відповідає описаному вище параметру RegistrarHost.

У цьому випадку користувач 3CX може використовувати тільки єдине VoIP підключення до даного оператора, оскільки ідентифікатор джерела при декількох однотипних з'єднання буде дублюватися.

field name=«MatchStrategy»>1</field>
<field name=«Source» parameter=«FromHostPart» custom="">$GWHostPort</field>

Тут параметр GWHostPort має приходити від VoIP-провайдера в тому ж форматі, в якому він зазначений у параметрі RegistrarHost і RegistrarPort шаблону.

Вхідні/Вихідні параметри (Inbound/Outbound Parameters)
Секція Вхідних і Вихідних SIP параметрів визначає, як 3CX Phone System формує вихідний INVITE запит до VoIP провайдера, або обробляє вхідний запит INVITE від VoIP провайдера.

im7

SIP параметри (Parameter)

SIP параметри – це SIP поля по RFC, в яких очікується певне значення від VoIP оператора, або куди 3CX повинна помістити SIP значення при створенні INVITE запиту. В шаблон включені всі доступні поля, тому не додавайте ніякі X або P заголовки – 3CX їх просто проігнорує.

Всі SIP поля представлені в стандартному SIP форматі.

Invite: RequestLineURIUser@RequestLineURIHost
ContactUser@ContactHost
ToDisplayName: ToUserPart@ToHostPart
FromDisplayName: FromUserPart@FromHostPart
RemotePartyIDCalledPartyDisplayName: RemotePartyIDCalledPartyUserPart@RemotePartyIDCalledPartyHostPart
RemotePartyIDCallingPartyDisplayname: RemotePartyIDCallingPartyUserPart@RemotePartyIDCallingPartyHostPart
P-AssertedIdentityDisplayName: P-AssertedIdentityUserPart@P-AssertedIdentityHostPart
ProxyAuthID@ProxyAuthRealm


Використовуйте тільки необхідні і достатні (для вашого VoIP оператора) SIP поля для формування вихідного INVITE запиту. Наприклад, не визначайте RPID полі, якщо воно не використовується оператором.

У вхідних INVITE запитах найважливіші поля для 3CX Phone System – розташування номера абонента CallerNum і ідентифікатор транка VoIP оператора. Приклад таких полів наведено нижче, однак для різних VoIP операторів може бути розширений.

<field name=«ParameterIn» custom="" parameter=«ToUserPart»>$CalledNum</field>
<field name=«ParameterIn» custom="" parameter=«FromUserPart»>$CallerNum</field>
<field name=«ParameterIn» custom="" parameter=«RequestLineURIHost»>$DevHostPort</field>

XML змінні (Variables)

XML змінні шаблону VoIP оператора укладені в теги > <. Замість них ядро 3CX підставляє фактичні SIP значення, або зчитує з них потрібні значення. Для парсингу вхідних повідомлень SIP необхідно, щоб мінлива використовувалась один раз, тобто не зустрічалася в декількох SIP полях. При формуванні вихідних повідомлень SIP, змінна може зазначатися в різних частинах INVITE запиту, згідно з вимогами VoIP оператора.

Важливо! Деякі VoIP оператори підтримують функцію Clip No Screening, при якій можна передавати оригінальний номер абонента, а не номер лінії VoIP оператора. Наприклад, на ваш додатковий номер 3CX подзвонив зовнішній абонент, вас не виявилося на місці, і виклик пішов на ваш мобільний. У такому разі ви не побачите номер лінії VoIP оператора, через якого вийшов виклик, а початковий Caller ID абонента абонента. У цьому випадку у Вихідних параметрах використовуйте Originator Caller ID, а не Outbound Caller ID.

Відповідність змінних

Майте на увазі, що не всі змінні можна комбінувати в SIP запитах. Ми рекомендуємо перевірити можливість спільного використання тих чи інших змінних у відповідному розділі налаштування VoIP оператора в інтерфейсі 3CX.



















Мінлива
Опис
§GWHostPort Сервер і порт VoIP провайдер, який встановлюється при створенні підключення в інтерфейсі 3CX $OutHostPort Сервер і порт VoIP проксі, який встановлюється при створенні підключення в інтерфейсі 3CX §DevHostPort Сервер і порт VoIP провайдера, від якого приходить запит INVITE $ContactURI Вміст поля Contact $CalledName Ім'я одержувача дзвінка (за замовчуванням: To → display name) $CalledNum Номер одержувача дзвінка (за замовчуванням: To → User) $CallerName Ім'я джерела виклику (за замовчуванням: From → display name) $CallerNum Номер джерела виклику (за замовчуванням: From → User) $LineNumber Зовнішній номер лінії $LineID Внутрішній номер лінії (Virtual extension) $AuthID ID аутентифікації $OrginatorCallerID Caller ID оригінального джерела виклику $OutboundLineId Вихідний Caller ID лінії, взятий з поля Вихідний Caller ID в параметрах VoIP оператора в інтерфейсі 3CX $OutboundCallerID Вихідний Caller ID лінії, взятий з поля Вихідний Caller ID в параметрах додаткового номера в інтерфейсі 3CX $CallerDispName Відображуване ім'я абонента з заголовка From, переданого SIP телефоном $CustomField Настроюване поле

Користувальницькі змінні

Якщо 3CX не пропонує підстановку значення для змінної в інтерфейсі управління (використовується у вхідних і вихідних параметрів, а також при ідентифікації джерела) ви можете встановити значення вручну (Custom value). У прикладі, наведеному нижче, вручну встановлено значення mysource.com для ідентифікації джерела. To:HostPart – це власне значення, встановлене у відповідності з вимогами VoIP оператора.

<field name=«Source» parameter=«ToHostPart» custom=«mysource.com»>$CustomField</field>

Висновок
Очевидно, що представлена інформація буде корисна не тільки інженерам оператора, організовує підключення систем 3CX Phone System, але і адміністраторам 3CX, оскільки допомагає зрозуміти призначення різних опцій в інтерфейсі налаштування нового зовнішнього підключення.

Після завершення редагування файлу оператора, додайте xml файл шаблону і png файл логотипу в тому ж каталозі, в якому зберігаються інші шаблони. Ви також можете викласти ці файли на своєму веб сайті, супроводивши інструкціями для користувачів. Якщо ви хочете включити файли VoIP оператора в дистрибутив системи для того, щоб користувач відразу міг вибрати вас, як рекомендованого оператора, зв'яжіться з представником 3CX у вашому регіоні.

Додаткова інформація
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.