Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Організація VoIP-зв’язку на базі IP-АТС ASTERISK.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.9 Mб
Скачать

2.4.2 Приклад налаштування послуги повтору останнього набраного номера

Необхідно:

1. реалізувати послугу повтору останнього набраного номера;

2. перевірити правильність налаштування послуги повтору останнього набраного номера.

Послідовність дій

    1. За допомогою VirtualBox запустити образ операційної системи Ubuntu 10.04.

    2. Для внесення змін в конфігураційні файли IP-АТС Asterisk необхідно зайти в «Терминал». Виконаємо наступні дії: «Приложения» → «Стандартные» → «Терминал».

    3. Для того, щоб отримати права доступу адміністратора вводимо команду # sudo su, після чого з’явиться запит паролю. Необхідно ввести пароль адмінністратора.

    4. Після того, як отримали права адміністратора (root) стає можливим редагування конфігураційного файлу, який відповідає за налаштування повтору останнього набраного номера, а саме: extensions.conf.

    5. Відкриваємо файл extensions.conf за допомогою текстового редактору nano, попередньо перейшовши в каталог з конфігураційними файлами:

# cd /etc/asterisk.

# nano extension.conf

    1. В контексті, який визначає план набору для абонентів, для яких необхідно включити дану послугу треба додати такі екстеншни:

  1. до плану набору номеру додати естеншни, які відповідатимуть за збереження номеру, який викликається:

exten => _XXX!,1,Answer //ініціюємо відповідь каналу при наборі номеру;

exten => _XXX!,n,Set(DB(RepeatDial/Number)=${EXTEN}) //записуємо набраний додатковий номер в базу даних до сімейства RepeatDial з ключем Number;

exten => _XXX!,n,Set(GLOBAL(TEMP/${CALLERID(NUM)})=${DB(RepeatDial/Number)}) //записуємо це значення з бази даних у зміну TEMP/${CALLERID(NUM)}, де {CALLERID(NUM)} – ідентифікатор абонента, що викликає, щоб для кожного абонента ця змінна була унікальною, щоб абонент повторював останній виклик саме зі свого терміналу;

exten => _XXX!,n,Dial(SIP/${EXTEN},60) набираємо номер абонента, відповідного до номеру канала, що викликається (за це відповідає змінна ${EXTEN}, яка зберігає в собі номер каналу, який був викликаний), та очікуємо на відповідь протягом 60 секунд;

exten => _XXX!,n,Hangup() //кладемо слухавку.

  1. додати екстеншни, які відповідатимуть за повторний набор останнього набраного номеру. Для прикладу обрано системний номер «**». В прикладі послуга має інтерактивний характер і відтворює номер, на який повторно відбуватиметься виклик та не з’єднує з каналом, якщо до цього не було набрано жодного номера (наприклад, якщо сервер був відключений):

exten=> **,1,GotoIf($[${ISNULL($(TEMP/$(CALLERID(NUM)}})}]?invalid:redial) //перевіряємо чи є в змінній, яка має містити останній набраний номер, дані. Якщо вона пуста, то перенаправляємо абонента на пріоритет з міткою invalid, якщо ж в ній містяться дані, то перенаправляємо на пріоритет з міткою redial;

exten => **,n(invalid),Playback(invalid) //якщо змінна з останнім набраним номером пуста, то абоненту буде відтворено звуковий файл invalid, який є стандартним з бібліотеки Asterisk, і сповістить про те, що цей номер не може бути набраний;

exten => **,n,Hangup() //кладемо слухавку після того, як було відтворено файл;

exten => **,n(redial),Playback(vm-num-i-have) //якщо змінна з останнім набраним номер містить в собі данні, то абонент буде перенаправлений на даний екстеншн, який відтворить йому стандартний звуковий файл з інформацією про те, що в пам’яті міститься номер;

exten => **,n,Set(CHANNEL(language)=en) //встановлюємо мову, якою буде відтворено номер, en - англійська;

exten => **,n,Playback(num:${TEMP/${CALLERID(NUM)}},say) //відтворюємо номер, який записаний в змінній TEMP/${CALLERID(NUM)} за допомогою файлу say.conf;

exten => **,n,Playback(vm-dialout) //вітворюємо звуковий файл, який просить зачекати, поки відбудеться з’єднання;

exten => **,n,Wait(2) //даємо абоненту 2 секунди на те, щоб відмінити дзвінок через те,що останній набраний номер не є тим, на який необхідно дзвонити;

exten => **,n,Dial(SIP/${TEMP/${CALLERID(NUM)}},60) //набираємо номер, який міститься у змінній TEMP/${CALLERID(NUM)}та очікужмо на відповідь протягом 60 секунд;

exten => **,n,Hangup() //кладемо слухавку.

    1. Зберігаємо внесені зміни за допомогою комбінації клавіш cntr+O та виходимо з редактору: cntr+Х.

    2. Після того як всі конфігураційні файли були налаштовані, ініціюємо запуск IP-АТС Asterisk. Для цього необхідно виконати наступні дії:

# asterisk start

# asteriskr (вхід до консольного режиму IP-АТС Asterisk).

    1. Якщо сервер Asterisk вже був запущений до початку редагування конфігураційних файлів, то необхідно виконати зчитування нової інформації за допомогою команди, яка вводяться в консолі Asterisk:

> dialplan reload //зчитування змін в файлі extensions.conf

На рисунку 16 зображено вигляд файлу extensions.conf для реалізації послуги повтор останнього набраного номера.

Рис. 16 Реалізація послуги набору останнього набраного номера.

Перевірка правильності налаштування послуги

    1. В ОС Windows запускається програма X-Lite (софтфон).

    2. Для встановлення з’єднання між софтфоном та програмним комутатором Asterisk необхідно налаштувати параметри користувача (наприклад, student1).

    3. Перевіряємо, чи відтворюється інформація про те, що номер не може бути набраний через відсутність даних в змінній. Для цього здійснюємо дзвінок на системний номер **.

    4. Далі викликаємо іншого абонента набравши його номер.

    5. Перевіряємо, що при наборі системного номера ** здійснюється повтор останнього набраного номера.