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

Контрольні питання

  1. Якими полями визначається абонент у конфігураційному файлі sip.conf?

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

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

  4. Яка інформація може відображатися при виклику абонента?

Лiтература

  1. Меггелен Дж., Мадлен Л., Смит Дж. Asterisk: будущее телефонии, 2-е издание. – Пер. с англ. – СПБ: Символ_Плюс, 2009. – 656 с., ил.

  2. Asterisk Dialplan - план набора (одной страницей). [Електронний ресурс] // – Режим доступу: http://asterisk-pbx.ru/wiki/doku.php/asterisk_dialplan

  3. Команда CALLERID(). [Електронний ресурс] // – Режим доступу: http://asterisk.ru/knowledgebase/Asterisk+func+callerid

  4. Офіційний сайт IP-ATC Asterisk. [Електронний ресурс] // – Режим доступу: www.asterisk.org

2.4 Повтор останнього набраного номеру

2.4.1 Короткі теоретичні відомості

Дана послуга дозволяє повторити виклик останнього набраного абонента без повторного набору його номера, а набираючи лише спеціальний системний номер, який може бути самостійно обраний для кожної АТС [1, 4].

Для того, щоб повторити останній набраний номер, необхідно його спочатку зберегти. Для цього в Asterisk використовується спеціальна база даних, яка має назву AstDB [2]. База даних Asterisk зберігає дані в групах, які називаються сімействами, значення котрих ідентифікується ключами. Під одним ідентифікатором (ключем) може зберігатись лише одне значення. Після присвоєння ідентифікатору нового значення, старе значення буде втрачене.

Для збереження нового значення та для доступу до цього значення в AstDB використовується команда Set().

В Asterisk широко використовуються шаблони [3], для того, щоб зберегти час адміністратора, та не вводити план набору для кожного користувача окремо, а використовувати загальний план для всіх абонентів, що додаються.

Запис додаткового номеру екстеншну, який починається з символу «_» є шаблоном і в залежності від того, які символи стоять після нього, визначає план набору для цілого діапазону номерів:

  • X відповідає будь-якому числу від 0 до 9;

  • Z відповідає будь-якому числу від 1 до 9;

  • N відповідає будь-якому числу від 2 до 9;

  • [1236-9] відповідає будь-якому числу або діапазону чисел, котрі знаходяться в квадратних дужках (в даному випадку: 1,2,3,6,7,8,9);

  • . спеціальний символ, відповідає одному або більше символів (не тільки цифрам);

  • ! спеціальний символ, відповідає відсутності, одному або більше символів (не тільки цифрам).

Проте, необхідно пам’ятати, що Asterisk використовує контекст, додатковий номер якого найбільш подібний до додаткового номеру, набраного абонентом. Тож, при дзвінку на номер 101, екстеншн з додатковим номером _ХХХ буде використовуватись, якщо в плані набору будуть відсутні більш подібні до номеру 101 додаткові номери, наприклад: 101, _1ХХ, _10Х! і т.д..

Реалізація більш складних послуг в Asterisk не можлива без використання змінних.

Запис, який починається з символу «$» та заключний в фігурні дужки є змінною. В ASTERISK є змінні, які визначаються адміністратором та змінні, які заздалегідь визначені та є специфічними для каналів.

Змінні, які визначає адміністратор бувають трьох типів:

  • Глобальні змінні можуть бути визначені або у контексті [globals] файлу конфігурації extensions.conf або використовуючи команду Set(GLOBAL(змінна) = значення) в плані набору. Якщо змінна одного разу визначена, тоді вона може бути використана для будь-якого каналу в будь-який час.

  • Змінні специфічні для кожного каналу задаються за допомогою команди Set. Кожен канал використовує ізольований простір для імен змінних, отже, для різних викликів не буде колізій у значеннях змінної з одним і тим же ім'ям і змінна буде автоматично очищена, коли виклик по якомусь каналу буде завершено.

  • Змінні оточення забезпечують доступ з Asterisk до змінних оточення Unix.

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

Для набуття послугою більш інтерактивного характеру в Asterisk широко використовується відтворення музичних файлів та перенаправлення по плану набору.

Команда Playback() відтворює заданий звуковий файл абоненту, що викликає. Її синтаксис:

exten => s,n,Playback(filename[,option])

Де

  • filename – назва файлу, який буде відтворено;

  • option – опція (не обов’язкова для заповнення)б яка може приймати значення:

  • skip: звуковий файл відтворюється, якщо канал здійснив відповідь. Якщо з’єднання відсутнє, Playback відразу закінчить роботу без відтворення файлу.

  • noanswer: звуковий файл відтворюється, поки канал не відповів (якщо до цього канал був роз’єднаний). Проте не всі канали підтримують відтворення файлів в роз’єднаному стані.

Якщо опції skip та noanswer не задані, то команда Playback спочатку з’єднується з каналом і лише після цього починає відтворювати файл.

Подібною командою є команда Background(), проте, під час відтворення файлу за допомогою цієї команди можуть виконуватися інші команди, які не очікують на її завершення. Її синтаксис:

exten => s,n,Background(filename)

Asterisk відтворює файли з директорії /var/lib/asterisk/sounds, в цій директорії знаходяться стандартні звукові файли, які встановлюються разом з Asterisk. Для відтворення звукових файлів, які знаходяться поза даною директорією, необхідно замість аргументу filename вказати повний шлях до цього файлу разом з його ім’ям. Стандартно, разом з Asterisk встановлюються звукові файли англійською мовою, проте вільно розповсюджуються і файли, записані на інших мовах.

Також Asterisk може відтворювати цифри та дати. Для цього в файлі say.conf записані параметри, за допомогою яких відбувається відтворення. За умовчуванням, Asterisk «розмовляє» англійською, проте мовний запас можливо розширювати.

Синтаксис команд для відтворення цифр та дат:

exten => s,n,Set(CHANNEL(language)=en)

exten => s,n,Playback(num:digits,say)

Першим екстеншном вказуємо, якою мовою буде відтворюватись інформація, якщо в файлі say.conf їх є декілька, а в другому указуємо, що відтворюватись буде число (num), вказуємо саме число для відтворення (digits) та вказуємо, що Asterisk має використовувати файл say.conf для відтворення.

Для перенаправлення абонента по плану набору використовуються команди Goto() та Gotoif().

Команда Goto() забезпечує перехід на вказаний пріоритет, екстеншн або контекст. Її синтаксис:

exten => s,n,Goto([[context|]extension|]priority),

де

  • context – назва контексту, до якого буде перенаправлено абонента;

  • extension – назва екстеншну(додаткового номеру), до якого буде перенаправлено абонента;

  • priority – номер пріоритету, до якого буде перенаправлено абонента є обов’язковим аргументом та може задаватися міткою. Мітка – будь-яке значення, яке покращує зрозумілість плану набору та має синтаксис: exten => s,n,(label),Command(argument), де label – мітка.

Команда GotoIf() забезпечує перехід на вказаний пріоритет, екстеншн або контекст при виконанні деякої умови. Її синтаксис:

exten => s,n,GotoIf(condition?label1[:label2]),

де

  • condition – умова, за якої буде здійснено перехід до команди label1, яка задається таким же чином, як і в команді Goto();

  • label1 – ідентифікатор команди, тобто контекст, до якого вона входить, її додатковий номер та пріоритет або мітка;

  • label2 – ідентифікатор команди, тобто контекст, до якого вона входить, її додатковий номер та пріоритет або мітка, до якого перейде абоненти у випадку хибності умови.

За умови відсутності аргументу label2 буде здійснено перехід до наступної, за пріоритетом, команди для цього ж додаткового номеру за умови хибності умови.

Інший варіант синтаксису даної команди:

exten => s,n,GotoIf(condition?[label1]:label2).

Її відмінність полягає у тому, що при відсутності аргументу label1 буде здійснено перехід до наступної, за пріоритетом, команди для цього ж додаткового номеру за умови істинності умови.

Умовою, що перевіряється в даній лабораторній роботі буде наявність у змінній даних, за що відповідає функція ISNULL.