Після об’єднання внутрішніх обласних IP PBX транками для дзвінків між головними офісами залишилося невирішеним одне завдання. Це віддача правильного CID при дзвінку в інші області.
Згідно із затвердженою схемою нумерації, абонентам присвоюється 4-значний номер. Дзвінок в іншу область для всіх однотипний і виглядає як 8-ХХ-YYYY. Де ХХ – код області, а YYYY – номер абонента. Схема працює, дзвінки надходять, начебто все добре, але… вхідний дзвінок надходить з внутрішнім 4-значним номером і абсолютно не зрозуміло, звідки він надійшов. Відкриваємо список пропущених дзвінків і бачимо, хто нам дзвонив, але з якої області – незрозуміло. За такої схеми не працюватиме кнопка redial.
Отже, подивимося, що являє собою схема об’єднання наших станцій. Схема називається «зірка».
Перевага даної схеми – відправляй все на Київ, а там самі розберуться, куди доставити дзвінок. А головний недолік – у разі «відмови» центру – «ляже» все.
Розглянемо, як на даний момент проходить дзвінок з ГУ в ДСНС.
Як бачимо, CID змінюється при проходженні через ДСНС на повний номер з кодом 8151190. Все це робить правило на АТС ДСНС за умови, що дзвінок йде на номери ДСНС. У разі, якщо дзвінок проходить транзитом через ДСНС в іншу область, то CID просто видаляється і абоненту відправляється Anonymous.
Щоб уникнути такої схеми, необхідно адміністраторам АТС в ГУ самостійно контролювати вихідний CID, а не покладатися на ДСНС, що цю роботу зробить хтось інший.
Розуміючи, що в ГУ немає необхідного рівня фахівців серед співробітників, які обслуговують Asterisk, і оплачувати сторонні організації теж ніхто не буде, пропоную найпростіший спосіб контролю відправленого CID.
Отже, приступимо.
1. У налаштуваннях розширення є поля Outbound CID і Emergency CID.
Для відомчої маршрутизації будемо використовувати поле Emergency CID. Прописуємо в ньому потрібний номер, тобто до існуючого номера додаємо спочатку «815».
2. Налаштовуємо вихідну маршрутизацію. Вибираємо необхідний маршрут.
Після чого, всі дзвінки, що йдуть за цим правилом, будуть брати CID з поля Emergency CID.
Ось так, досить просто можна вирішити цю проблему, але…
У нас залишається невирішена проблема транзитних дзвінків зі старих відомчих АТС, які також підключені до Asterisk. Я думаю, майже у всіх схожа схема об’єднання АТС.
У моєму випадку абоненти, які дзвонять з АТС SIEMENS (наприклад, з номера 1650 на номер 8008193), пройдуть через PBX ASTERISK через транк на ДСНС з незмінним CID.
Як обійти такий варіант, я не знайшов легкого і простого способу, який можна використовувати штатною веб-мордою FreePBX. Якщо у Вас є рішення цієї ситуації – поділіться.
Звичайно, було б чудово, якби в FreePBX існувала штатна опція зміни CID при виході з транку – проблем би не було, але поки її немає – викручуємося як можемо.
Необхідно зупинитися додатково на схемі об’єднання обласних Asterisk. Зірка, з точки зору відмовостійкості, не годиться. Тому необхідно створити транки з усіма ГУ України. У налаштуваннях вказати, що першим транком буде використовуватися міжобласний, а в разі його виходу – транк ДСНС.
За допомогою цієї схеми ми завжди залишаємося на зв’язку, незалежно від центрального вузла, і не навантажуємо центральний сервер.
Примітка. Всі налаштування виконувалися на FreePBX 2.11.0.11. В інших версіях можливі невеликі відмінності.
Ще один нюанс (можливо, у когось таке є). Так склалося, що наша відомча АТС SIEMENS має 4-значні номери внутрішніх абонентів, але після того, як в Україні перейшли на 3-значні номери екстрених служб, АТСку довелося переналаштувати на 3-значні номери. З цього моменту CID абонентів SIEMENS не збігається за розрядністю з прийнятим стандартом. Налаштувальник SIEMENS зробив правило, яке всередині SIEMENS додає перед номером цифру «1» і для абонентів SIEMENS нічого не змінилося. Але, коли з SIEMENS дзвонять на IP Asterisk, то вхідний CID 3-значний. Щоб привести до нормального вигляду необхідно зробити наступне:
1. У файлі extensions_custom.conf прописуємо додаткові правила обробки вхідних.
[from-pstn-custom]
exten => _X.,1,ExecIF($[${VALID_EXTEN(16XX-cid,${CALLERID(num)})}]?Gosub(16XX-cid,${CALLERID(num)},1))
[16XX-cid]
exten => _6XX,1,Set(CALLERID(num)=1${CALLERID(num)})
exten => _6XX,n,Set(CALLERID(ANI-all)=${CALLERID(num)})
exten => _6XX,n,Return()
Після чого до нас вже приходить нормальний CID.







