Настроювання сервера телефонії asterisk з нуля. Встановлення та налаштування телефонії Asterisk у Linux Ubuntu. Короткий огляд наявних модулів: керування модулями

23.02.2012 15:56

Стаття, що дозволяє програмістам-початківцям виконати базове налаштування asterisk

Asterisk є одним із найпоширеніших серверів ip-телефонії поряд з такими системами, як Switchwox та 3CX. Велику популярність дана системазнайшла з поширенням у нашій країні якісного інтернету, а також безлічі телефонних провайдерів, що надають телефонні номериу SIP-форматі або так звані SIP-номери. Однією з таких компаній є Датагруп, яка зарекомендувала себе одним із лідерів ринку послуг зв'язку. З здешевленням SIP-номерів з'явився сенс використати сучасні телефонні системи ip-телефонії замість старого аналогового міні-атс. Це з широкими функціональними можливостями call-центрів з урахуванням Asterisk. При цьому вартість обладнання та налаштування Asterisk практично не поступається у грошових витратах.

Установка asterisk проводиться шляхом скачування і подальшої компіляції вихідного коду, що безкоштовно розповсюджується, розробленого компанією Digium. Вихідники asterisk існують тільки для unix-сумісних операційних систем, найпоширенішими з яких є Linux та FreeBSD. Встановлення asterіsk під Windows можливе лише шляхом реалізації віртуальної машини. Завантажити останні версії asterisk можна за наступним посиланням. на Наразірозвивається відразу 4 версії цього сервера. Найбільшу стабільність всіх модулів мають версії Asterisk 1.4 і Asterisk 1.6. З іншого боку, у функціональному плані вигідно відрізняється версія asterisk 1.8, в якій є підтримка багатьох нових модулів і функцій, серед яких можна відзначити підтримку протоколу SRTP, роботу з IPv6 та покращені показники при роботі SIP та ISDN.

У цій статті буде розглянуто встановлення asterisk v 1.6.22 на Linux Fedora Core.

Для початку установки, завантажуємо вихідні астеріскі. Для цього виконуємо в консолі сервера команди:

# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.22.tar.gz

# tar -xzvf asterisk-1.6.2.22.tar.gz

Перед тим як компілювати вихідні коди, встановимо всі необхідні супутні модулі та утиліти:

# yum install gcc

# yum install gcc-c++

# yum install make

# yum install libxml2-devel

# yum install ncurses-devel

Після того, як всі додаткові утиліти встановлені, робимо установку самого Asterisk:

# cd asterisk-1.6.2.22

Після вдалої установки в каталозі /etc/asterisk ви знайдете конфігураційні файли asterisk"a. Налаштування asterisk здійснюється шляхом редагування файлів конфігурації, що мають дуже специфічну структуру та оператори. Основу конфігурації при налаштуванні астериск складають файли sip.conf і extensions.conf. Вивчивши та відредагувавши ці файли, можна досягти правильної роботи сервера.

Файл sip.conf включає налаштування всіх sip-пристроїв, зареєстрованих на сервері, який згодом взаємодіють між собою шляхом з'єднання двох і більше sip-каналів, завдяки чому ініціюється телефонне з'єднання- Тобто дзвінок.

Приклад файлу sip.conf:


qualify=yes
nat = no


defaultexpiry=3600
disallow=all
allow=alaw
allow=ulaw
fromuser=044XXXXXXX
host=80.91.169.2
insecure=invite,port
secret=xxxxxxxxxxx
type=peer
username=044XXXXXXX
context=incoming
language=ua
qualify=yes
dtmfmode=auto


type=friend
host=dynamic
insecure=invite,port
username=fxo
secret=xxxxxxxx
context=incoming
qualify=yes
nat = no
canreinvite=no
allowtransfer=no
dtmfmode=auto
disallow=all
allow=alaw
allow=ulaw


type=friend
regexten = 101
secret=xxxxxxxxxxxxx
context=internal
host=dynamic
callerid="101"
disallow=all
allow=alaw
allow=ulaw
language=ua
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat = no

У цьому прикладі наведено найпростіший список sip-пристроїв. Неважко помітити, що у конфігурації є блоки, укладені у квадратні дужки. Саме такими блоками описується конфігурація будь-яких пристроїв (бенкетів) при налаштуванні Asterisk. Пройдемося коротко по блоках і за основними параметрами.

Блок є обов'язковим. До нього входять параметри та параметри, які застосовуються до всіх блоків за промовчанням. Іншими словами, якщо при описі того чи іншого пристрою не вказано будь-який параметр, Asterisk читає його з цього блоку.

Наступні три блоки описують безпосередньо sip-пристрої. Для наочності усі три пристрої мають різні призначення. Блок описує параметри для sip-номера компанії Датагруп, блок описує параметри для з'єднання з VOIP-шлюзом, а блок описує параметри звичайного внутрішнього sip-пристрою, яким може програмний або апаратний ip-телефон.

Пробіжимося за основними параметрами sip пристроїв. Параметр context визначає, який алгоритм дій застосовувати до того чи іншого пристрою. Callerid визначає номер та ім'я бенкету, які будуть висвічуватись при вихідному дзвінку з нього. Опції disallow та allow визначають, які кодеки використовувати для зв'язку. Опція secret – це пароль для реєстрації даного бенкету. Паролі бажано складати досить складними, щоб уникнути зломів недоброзичливцями.

Файл extensions.conf описує взаємодії між контекстами та каналами зв'язку, яких може бути безліч. По суті, цей файл є основним при налаштуванні asterіsk.

Приклад файлу extensions.conf:


exten => _XXX,1,Dial(SIP/$(EXTEN),120,tT)
exten => _XXX,n,Hangup

Exten => _X.,1,Dial(SIP/datagroup/$(EXTEN),120,tT)
exten => _X.,n,Hangup


exten => _X.,1,Dial(SIP/101,60,tT)
exten => _X.,2,Hangup

Exten => h,1,Hangup

У цьому найпростішому прикладі ми маємо два алгоритми дій (контексту) – internal та incoming. Нагадаємо, що прив'язка до контекстів здійснюється при створенні бенкетів у файлі sip.conf і надалі присвоюється вже extensions.conf при спробі ініціації зв'язку з бенкетом.

Опишемо докладніше два контексти. Вже за назвами стає зрозуміло, що вони застосовуються для алгоритмів внутрішніх абонентів (internal) і вхідних дзвінків (incoming). Розібратися в конструкції цього файлу допоможе узагальнений приклад, який можна виразити рядком:

Exten => _XXX,n,Command(Options)

Розшифровуються ці опції так:

Exten => _XXX - службовий префікс, з якого починаються майже всі рядки у цьому файлі. Він визначає уявлення вхідного контексту. Іншими словами, якщо на цей контекст звернувся бенкет з номером 101, то алгоритм для нього повинен починатися з конструкції exten => 101. Префікс підтримує регулярні вирази і може бути узагальнено. Наприклад, exten => _XXX говорить про те, що під даний алгоритм потрапляють усі бенкети, які складаються з трьох цифр.

N – номер рядка алгоритму. У будь-якому програмному коді є послідовність операторів, які виконуються по черзі. Так само і в налаштуваннях asterіsk є така послідовність. Єдина відмінність - команди, що виконуються asterіsk'ом, нумеруються. Обов'язковою є вказівка ​​першої сточки явно. Як ви встигли помітити, всі контексти починаються зі рядків:

Exten => _XXX,1,…..
exten => _X.,1,…..
exten => h,1,……

А ось подальші рядки можуть нумеруватися неявно, тобто так:

Exten => _XXX,n,…..
exten => _X.,n,…..
exten => h,n,……

При неявному вказівці номера рядка, астеріск виконує їх послідовно зверху вниз, як це відбувається з будь-яким іншим кодом.

Command - команда виконувана asterisk'ом. Основних команд не так багато. Для базового налаштуваннядостатньо знати синтаксис команди Dial (зателефонувати), на прикладі якої ми розглянемо опції, що залишилися.

Наприклад:
exten => _X.,1,Dial(SIP/101,60,tT) - asterisk набере внутрішній номер 101 і намагатиметься додзвонитися до абонента протягом 60 секунд з можливістю перехоплення дзвінка з боку бенкету (опції tT)
exten => _X.,1,Dial(SIP/datagroup/$(EXTEN),120,tT) asterisk набере номер, який переданий у змінній $(EXTEN) за допомогою бенкету datagroup раніше вказаного в sip.conf

Перший приклад застосовувався у контексті incoming. Це говорить про те, що всі вхідні дзвінки, що надходять на цей контекст, перенаправляються на внутрішнього абонента, який відповідає на ці дзвінки. Другий приклад у свою чергу показує, як здійснюється вихідний дзвінокпередаючи набраний номер у службовій змінній $(EXTEN).

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

Подальші діїможуть вироблятися з командного рядкаастериску, яка запускається командою:

# asterisk -rvvvvd

Потрапивши в консоль, ви можете перевірити роботу вашого сервера. У ній відображатимуться всі дії, які він виконує.

P.S. У випадку, якщо у вас не вдалося налаштувати сервер, або вам потрібна більш складна конфігурація, з радістю допоможемо в налаштуванні asterisk. Наші контакти .


Файл конфігурації для каналів у як для вхідних, так і для вихідних дзвінків.

Кожен SIP клієнт або сервер визначається в цьому файлі як текстовий блок, наведений нижче:


type=yyy
parameter1=value
parameter2=value

Де xxx - це ім'я, яке асоціюється з SIP клієнтом, або це може бути довільним ім'ям SIP пристрою, на яке можна посилатися з інших конфігураційних файлів. Зазвичай, якщо SIP телефон має номер екстеншена 123, тоді відповідні йому налаштування в цьому файлі починається з рядка . Зверніть увагу, що для того, щоб можна було зателефонувати на цей екстеншен 123, ви повинні описати його у плані набору. може бути: "user", "peer" чи "friend".

Сервер Asterisk визначає відповідність вхідного виклику з ім'ям пристрою для клієнтів з type=user, ґрунтуючись на заголовку From: ім'я користувача (ігноруючи SIP домен). Інший шлях обробки вхідних SIP запитів - це визначення їх відповідності секції в цьому файлі, використовуючи IP адресу запиту, що надійшов, для визначення того, від кого цей запит надійшов, і пошук відповідного значення параметра Host = в секції користувача . Якщо цей параметр заданий як Host=dynamic, тоді буде відповідних збігів, доки SIP клієнт не зареєструється на сервері.

Asterisk у ролі SIP клієнта У файлі конфігурації в секції додайте визначення register:

Формат:
register => user [:secret[:authuser]] @host [:port]

Приклад:
; Зареєструвати 2345 у sip провайдера, як номер 1234 в нашій стороні.
register => 2345: [email protected]/1234

user - ідентифікатор користувача, який використовується для SIP сервера (наприклад, 2345) authuser - не обов'язкове ім'я користувача для авторизації на SIP сервері secret - пароль користувача host - ім'я домену або хоста SIP сервера. Цей SIP-сервер повинен бути визначений у своїй секції файлу sip.conf, де мають бути задані його параметри (mysipprovider.com). port - який номер порту посилати запити на реєстрацію на сервері host. За замовчуванням - 5060/1234 - номер екстеншена для прийому дзвінків у Вашому Asterisk. 1234 - вставляється в SIP заголовок contact, SIP-запиту на реєстрацію. Цей екстеншен використовується віддаленим SIP-сервером, коли йому необхідно здійснити виклик у бік Вашого Asterisk. Дивись приклади, наведені нижче. За замовчуванням використовується контекстний "s".
Це, звичайно, все добре, але використання незашифрованих паролів у текстовому файлі - не вдала ідея, але що ж можна зробити зараз.
Вам необхідно реєструватися, тільки якщо: a) має бути можливість зателефонувати до Вас; b) одна зі сторін має динамічну IP адресу. Перевірити, чи успішно зареєструвався Ваш сервер, можна за допомогою CLI команди: "SIP SHOW REGISTRY", аналогічно, можна отримати список клієнтів, зареєстрованих на Вашому сервері, за допомогою команди: "SIP SHOW PEERS". Ви можете переглянути більше детальну інформаціюпро зареєстрованого клієнта за допомогою команди: "SIP SHOW PEER". Виконайте команду "HELP SIP" у консолі CLI, щоб отримати список додаткових команд.

Визначення сервера для здійснення вихідних дзвінків має бути приблизно таким:


type=peer
secret=password
username=2345
host=sipserver.mysipprovider.com
fromuser=2345
fromdomain=fwd.pulver.com
nat=yes
context=from-mysipprovider ; цей контест має бути визначений у extensions.conf

У файлі extensions.conf, для здійснення вихідних дзвінків, у Вас має бути правило набору, приблизно такого вигляду:

Exten => _9.,1,Dial(SIP/$(EXTEN:1)@mysipprovider-out,30,r)

Зверніть увагу, що конструкція $(EXTEN:1) витягує весь вміст змінної, в якій міститься екстеншен, що викликається (збігається з шаблоном), за винятком першої цифри, в даному випадку: 9 + набір цифр. Для отримання докладнішої інформації зверніться до розділу роботи з підрядками в описі .


exten => 1234,1, Answer; 1234 - екстеншен з контактної інформації, за умовчанням - "s"
exten => 1234,2,Dial(SIP/111,25,Ttr) ; вхідний дзвінок перенаправляємо на SIP телефон з номером 111
exten => 1234,3,Hangup

Конфігурація SIP - секція general Секція , файлу sip.conf, включає наступні змінні:

= : Дозволені кодеки, порядок вибору кодека, визначається порядком їх опису в цій команді (Спочатку використовуйте: DISALLOW=ALL, перед тим, як дозволити якісь конкретні кодеки) allowtransfer= yes | no: З'явилася з версії 1.4.0. При установці значення "no" - забороняє всі види перекладу викликів. (за винятком тих, що дозволені в описі налаштувань користувача). =all:Забороняє використання всіх кодеків (глобальне налаштування) allowguest = yes (за замовчуванням) | no: Дозволити або заборонити гостьові дзвінки (за замовчуванням - yes, як значення можна вказати параметр "osp", якщо asterіsk зібраний з підтримкою OSP) = yes | no: Якщо дозволено будь-хто може використовувати сервер як бенкет (без перевірки на можливість доступу; може бути зручно, при роботі з SER SIP проксі). bindaddr = 0.0.0.0:IP адреса, на яку Asterisk прийматиме IP пакети SIP викликів bindport=5060:номер порту, на який Asterisk прийматиме IP пакети SIP викликів callerid = : Інформація для Сaller*Id, використовується, коли немає нічого з того , Що можна було б використовувати як це значення. За замовчуванням – "asterisk". (Можливість перепризначити значення за замовчуванням є у версії Asterisk 1.0.9. Щодо інших версій немає повної впевненості.) = update | yes | no (глобальне налаштування). З деяких причин, значення за замовчуванням - "Yes", будьте уважні... context = :Це використовується за замовчуванням, який використовується, коли для клієнта не визначено свій . Цей , визначений клієнта, використовується для маршрутизації викликів від цього клієнта до потрібного призначення. Зміст описується у файлі плану набору - extensions.conf. defaultexpirey=120:Тривалість періоду вхідної або вихідної реєстрації. : inband | info | rfc2833 (глобальне налаштування) = domains: Список доменів, розділених комами, за які відповідає сервер Asterisk. (з'явилося в Asterisk 1.2.x) = 200.201.202.203: IP адреса, яка буде використовуватися в SIP повідомленнях, якщо наш сервер знаходиться за NAT. externhost = hostname.tld: ( новий параметр Asterisk 1.2.x) externrefresh = xxx: Цим параметром ми визначаємо, як часто буде здійснюватися пошук запису в DNS імені хоста, визначеному в параметрі "externhost" (новий параметр Asterisk 1.2.x) = 192.168.1.0/255.255.255.0: визначення локальної мережі та її маски. fromdomain= : Установка домену за замовчуванням у полі From: SIP повідомлень, при роботі як SIP ua (клієнта). maxexpirey=3600: Максимально дозволена тривалість реєстрації. minexpiry=60: (Змінна з'явилася з версії Asterisk 1.4.0) Мінімально дозволена тривалість реєстрації. = yes | no (установка для з'єднань з бенкетами) Зверніть увагу, що в Asterisk 1.0.x, параметр natможе набувати значень: no | never | route | yes. notifymimetype=text/plain:Дозволяє перевизначити mime type у повідомленнях MWI NOTIFY, які використовуються у повідомленнях, які надсилаються системою . pedantic = yes|no:Включити повільну, педантичну перевірку полів Call-ID та всіх рядків у багаторядковому заголовку SIP повідомлення та кодованих URI заголовків port = : SIP порт, який використовується за умовчанням. (це не той порт, на якому Ваш Asterisk чекає на IP пакети. Дивись параметр: bindport) promiscredir=yes | no: Увімкнення підтримки повідомлень 302 Redirects; (No - буде переадресувати все до локального екстеншену, який отримано в полі Contact, а не до екстеншену, який вказаний у полі призначення виклику.) realm = realm (Цим налаштуванням можна змінити realm для авторизації, зі значення за замовчуванням - Asterisk, на будь-яке вибране Вами.Працює, починаючи з Asterisk версії 1.x) register => @ / :Зареєструватися на сервері SIP провайдера. = yes|no: Включити пошук для викликів tos= : Цей параметр видалено, починаючи з версії Asterisk 1.4.0. Встановлення параметрів IP QoS для вихідних медіапотоків. t1min= : (Змінна з'явилася, починаючи з версії Asterisk 1.4.0) Мінімальна затримкапроходження повідомлень до хоста і назад (roundtrip time), котрим відстежується стан (monitored host). Значення за замовчуванням – 100 ms. = : (Змінна з'явилася, починаючи з версії Asterisk 1.4.0) Встановлення параметрів IP QoS для пакетів SIP. = : (Змінна з'явилася, починаючи з версії Asterisk 1.4.0) Встановлення параметрів IP QoS для пакетів, що передають аудіодані за протоколу RTP. = : (Змінна з'явилася, починаючи з версії Asterisk 1.4.0) Встановлення параметрів IP QoS для пакетів, що передають відео дані протоколу RTP.
videosupport=yes|no: Включає підтримку SIP відео: Параметр дозволяє змінити значення SIP заголовка "User-Agent". = yes|no: Якщо увімкнено, то отриманому значенню Remote-Party-ID можна довіряти.

Конфігурація SIP - клієнти та бенкети Нижченаведені змінні можуть бути задані в описі кожного SIP клієнта:

: Користувач може бути асоційований з певним кодом доступу (accountcode). Використовується для . : Дозволені та заборонені кодеки. : Категорія для CDR записів . Можна вибрати: default, omit, billing, documentation. Дивись: .allowoverlap: Починаючи з версії 1.4.x. Значення: yes/no, за замовчуванням: yes. Встановлення "no" забороняє підтримку "overlap dialing".allowsubscribe: Починаючи з версії 1.4.x. Значення: yes/no, за замовчуванням: no. Встановлення "no" забороняє відстеження стану (subscriptions) даного клієнта.allowtransfer: Починаючи з версії 1.4.x. Дозволити (yes) або заборонити (no) переклад виклику для цього користувача. auth: Починаючи з версії 1.4. Посилання на запис із секції (тільки для типу peer). autoframing: Починаючи з версії 1.4.x. Увімкнення (yes) або вимкнення (no) autoframing"a.buggymwi: Починаючи з 1.4.x. Встановіть значення цього параметра в "yes", щоб не отримувати повідомлення про помилку, при відправці MWI телефонам з цією проблемою: Визначає групу дзвінків (call group) для дзвінків через цей пристрій. , значення дивись у файлі doc/callingpres.txt з дистрибутива asterisk.call-limit: Починаючи з версії 1.4.x__ Обмеження на кількість викликів для користувача Для типу "peer" - на вихідні, для "user" - на вхідні : Увімкніть, якщо тільки на клієнті підтримується функція: .cid_number: Починаючи з версії 1.4.x Номерна частина поля CallerID.context: Контекст плану набору, в який потрапляють виклики, що надходять від даного клієнта. host= визначено як DYNAMIC Використовується, якщо клієнт ще не зареєструвався, за необхідності його виклику. : Як клієнт обробляє сигналізацію DMTF : Вказуємо ім'я користувача для поля "from", коли відбувається дзвінок з використанням цього запису. = : Встановлення домену за замовчуванням у полі From:, SIP повідомлень, коли відбувається виклик за допомогою цього запису. fullname: Починаючи з версії 1.4.x. Частина з ім'ям поля CallerID.g726nonstandard: Починаючи з версії 1.4.x. Значення: yes/no, за замовчуванням: no. Якщо клієнт збирається для сеансу зв'язку "домовлятися" використовувати звуковий кодек G726-32, з використанням компресії AAL2, замість RFC3551 (що потрібно для апаратів фірми Sipura та шлюзів від Grandstream, і може іншим). То це суперечить специфікації RFC3551, клієнт _должен_ замість цього "договоритися" використовувати AAL2-G726-32:-(host: Як нам знайти нашого клієнта - IP адресу або ім'я хоста. Якщо Вам потрібно, щоб телефон самостійно зареєструвався, використовуйте значення dynamic замість IP адреси чи імені хоста. : Обмеження на кількість одночасних з'єднань з нашим клієнтом SIP. Ці параметри застаріли, у версії 1.4.x не використовуються. : very|yes|no|invite|port: Визначає як обробляти з'єднання з бенкетами. За промовчанням значення "no" (автентифікація для всіх з'єднань включена). (invite та port додано у версії 1.2.x). : Код мови, визначений у файлі indications.conf - де визначається мова вітань та специфічні для кожної країни налаштування сигналів телефонів. : Екстеншен голосової скриньки (для роботи індикатора нових повідомлень)maxcallbitrate: Починаючи з версії 1.4.x. Максимальний бітрейт для відео в kbit/s. Типово: 384 kbit/s.mohsuggest: Починаючи з версії 1.4.x. Призначення див. у sip.conf. : MD5-Hash рядки: " :asterisk: " (може використовуватись замість параметра secret).musiconhold: Встановлює клас музики очікування (musiconhold) для дзвінків з цього SIP телефону. Для викликів, які надходять на цей телефон, завдання цього класу необхідно робити командою, розташованою вище за пріоритетом (менше значення пріоритету в плані набору), ніж Dial у плані набору. Параметр MusicOnHold встановлюється для дзвінків, а не для телефонів, і якщо для обробки виклику для екстеншена використовується команда , то вона перевизначить, задане цим параметром значення, для цього виклику. : Ця змінна змінює образ дії сервера Asterisk для клієнтів, що знаходяться за файрволом з трансляцією адрес (NAT). Але цей параметр не вирішує проблеми, якщо сам Asterisk знаходиться за таким файрволом, а клієнт зовні (в мережі internetз нормальною IP адресою). outboundproxy: Адреса проксі сервера для вихідних дзвінків (тільки для типу peer). Примітка: у версії 1.4.x параметр mask не використовується. : Група для "pickup" викликів, що надходять вашим товаришам по службі, використовуючи комбінацію "*8" і додаток Pickup() для роботи з екстеншеном *8.port: SIP порт клієнта.progressinband: Починаючи з версії 1.4.x. Значення: yes/no/never, за промовчанням: never. Чи повинен asterіsk генерувати самостійно звуковий сигнал виклику для абонента (in-band ringing). Використовуйте значення "never", щоб ніколи не здійснювалася генерація цього сигналу, навіть якщо деякі дивні пристрої не можуть генерувати його самостійно. promiscredir: Починаючи з версії 1.4.x. Значення: yes/no, за замовчуванням: no. Якщо встановлено значення "yes", то ми дозволяємо відправляти SIP повідомлення з кодом 302 або повідомлення для переадресації виклику, для SIP клієнтів з не локальними IP адресами. Варто відзначити, що поведінка promiscredir при скоєнні переадресації виклику, який здійснюється в локальній системі, може призвести до зациклювання виклику, т.к. Asterisk не вміє обробляти "hairpin" виклики. : Періодична перевірка доступності клієнта restrictcid: (yes/no) Цей параметр не використовується, замість нього використовуйте callingpres. rfc2833compensate: Починаючи з версії 1.4.x. Значення: yes/no, за замовчуванням: no. Увімкнення компенсації передачі DTMF сигналів з інших серверів asterіsk версії до 1.4.*. У цих випадках, Ви повинні включити цю функцію або прийом DTMF сигналів не буде працювати належним чином. : Переривати дзвінок, якщо немає активності RTP медіапотоку більш ніж x секунд і якщо лінія не перебуває в режимі утримання (hold). : Переривати виклик, якщо немає активності RTP медіапотоку більш ніж x секунд, у режимі утримання лінії (hold) (значення має бути більше, ніж rtptimeout). shared secret). Якщо ж Asterisk виступає в ролі SIP клієнта, який працює з віддаленим SIP сервером, для якого потрібна авторизація для запитів "SIP INVITE", тоді це поле буде використано для авторизації в повідомленнях "SIP INVITE", які наш Asterisk надсилатиме віддаленому SIP серверу. : Надсилати чи ні заголовок Remote-Party-Id цього SIP клієнта. Значення: yes/no, за промовчанням: yes.setvar: Починаючи з версії 1.4.x. У значенні вказується пара "змінна=значення" для змінної каналу при викликах з даного девайса.subscribecontext: Починаючи з версії 1.4.x. Вказується назва контексту, в якому будуть оброблятися запити SIP SUBSCRIBE.subscribemwi: Починаючи з версії 1.4.x. Значення "yes" та "no". Призначення див. на sip.conf.t38pt_udptl: Починаючи з версії 1.4.x. Значення: yes/no, за замовчуванням: no. Включити/вимкнути підтримку T.38 для клієнта. : Значення: yes/no, за замовчуванням: no. Встановлюється "yes", якщо можна довіряти отриманому від SIP клієнта Remote-Party-ID. : Тип клієнта - тільки вихідні дзвінки, тільки вхідні або всі разом?useclientcode: Починаючи з версії 1.4.x. Значення: yes/no, за промовчанням: no.usereqphone: Починаючи з версії 1.4.x. Значення "yes" та "no". Додати або ні ";user=phone" в URI, яке містить нормальний номер, що викликається. : Якщо Asterisk виступає у ролі SIP клієнта, який працює з віддаленим SIP сервером, для якого потрібна авторизація для запитів "SIP INVITE", тоді це поле буде використано для авторизації в повідомленнях "SIP INVITE", які наш Asterisk буде відправляти віддаленому SIP серверу. А також, для бенкетів, які реєструються на нашому сервері Asterisk, якщо це ім'я користувача використовується в повідомленнях INVITE, доки він зареєстрований на сервері. videosupport: Значення: yes/no, за замовчуванням: yes. Параметр для увімкнення підтримки SIP відео. Вам може знадобитися увімкнути підтримку відео для конкретного SIP клієнта, якщо, наприклад, у глобальній частині конфігурації вона вимкнена, і Ви хочете вибірково її включити тільки для конкретних користувачів. Призначення див. sip.conf (лише тип peer).

Зверніть увагу Asterisk (поки що) не підтримує протокол SIP через TCP транспорт. Підтримується лише через протокол UDP. Для телефонів Grandstream: встановлюйте параметр dtmfmode=info, а для GXP2000 dtmfmode=inband Asterisk використовує вхідний потік як джерело для таймінгу (timing) для відправлення вихідного потоку. Якщо вхідний потік переривається через роботу функції придушення тиші (silence suppression), тоді якість музики очікування (musiconhold) буде дуже поганою. Як наслідок Ви не можете використовувати функцію придушення тиші в паузах (silence suppresion). Обов'язково переконайтеся, що у ВСІХ SIP телефоніввиключена можливість придушення тиші (silence suppression). Нижче наводиться кілька прикладів:


type=friend; може бути: "friend" (це: peer+user), "peer" або "user"
context=from-sip
username=grandstream1; зазвичай цей параметр збігається з назвою секції -
fromuser=grandstream1 ; перепризначає callerid, наприклад,
; буває необхідно для форварда викликів - FWD
callerid = John Doe
host = 192.168.0.23; У нас використовується статична та інтранетовська IP адреса
nat = no; між нашим телефоном та Asterisk немає трансляції IP адрес (NAT)
canreinvite=yes ; змушує весь голосовий RTP трафік проходити через Asterisk
dtmfmode=info; можливо, як INBAND, так і INFO, наприклад, для телефонів BudgeTone
mailbox=1234@default; клієнт має голосову скриньку 1234 у контексті голосових скриньок: "default"
disallow=all; необхідно задати disallow=al, перш ніж використовувати параметр allow=
allow=ulaw; Зверніть увагу: у клієнтських секціях, порядок вибору кодека
; описаний у параметрі allow= немає ніякого значення!
;allow=alaw
;allow = g723.1; Asterisk підтримує кодек g723.1 лише в режимі pass-thru!
;allow = g729; Тільки в режимі Pass-thru , якщо у Вас немає ліцензії на використання кодеку g729


Вимкніть функцію придушення тиші (silence suppression) у клієнті X-Lite ("Transmit Silence" = YES)!
;Зверніть увагу, що Xlite сам посилає NAT пакети keep-alive, отже, потреби в qualify=yes немає.
type=friend
username=xlite1
callerid="Jane Smith"
host=dynamic
nat = yes; клієнт X-Lite перебуватиме за роутером з трансляцією IP адрес (NAT)
canreinvite=no ; Зазвичай встановлюється в "NO", якщо клієнт знаходиться за NAT
disallow=all
allow = gsm; Кодек GSM вимагає набагато меншу смугу пропускання, тим більше.
allow=ulaw
allow=alaw


type=friend
secret=blah
host=dynamic
dtmfmode = inband; Можна вибрати з: inband, rfc2833, або info
defaultip=192.168.0.59
mailbox = 1234,2345; Голосова скринька для роботи індикатора "отриманих нових повідомлень"
disallow=all
allow=ulaw; якщо режим dtmf встановлено "inband",
allow=alaw; то ми повинні використовувати лише кодек g.711


type=friend
username=user2_pingtel
secret=blah
host=dynamic
qualify=1000; Розглядаємо клієнта як непрацюючого,
; якщо від нього йде більше 1 сек.
callgroup = 1,3-4; Клієнт є членом груп викликів: 1, 3 та 4
pickupgroup = 1,3-4; Ми можемо здійснювати "pick-up" викликів, натиснувши *8,
; для викликів із груп 1, 3 та 4
defaultip=192.168.0.60
disallow=all
allow=ulaw
allow=alaw
allow=g729

Type=friend
username=user3_cisco
secret=blah
nat = yes; Цей телефон знаходиться за роутером із NAT
host=dynamic
canreinvite=no ; Апарати Cisco іноді підвисають,
; через деяку кількість reinvite запитів
qualify = 200; Розглядаємо бенкет як неробочий,
; якщо відгук від нього приходить довше, ніж 200ms
defaultip=192.168.0.4
disallow=all
allow=ulaw
allow=alaw
allow=g729


type=friend

Username=user4_cisco
fromuser=markster; Визначаємо ім'я користувача, що розміщується у полі "from" замість callerid
secret=blah
defaultip=192.168.0.4; використовуйте або host=dynamic або defaultip=...
amaflags=default ; Можливо: default, omit, billing, documentation
accountcode=markster; Користувач асоціюється з аккаунтом коду для спрощення білінгу.
disallow=all
allow=ulaw
allow=alaw
allow=g729
allow = g723.1

Нижченаведений опис взято з Digium Asterisk handbook.

Після того, як Ви визначите ці SIP облікові записи для Ваших клієнтів у файлі SIP.conf, то у цих клієнтів з'являється можливість зареєструватися на сервері asterisk і здійснювати вихідні дзвінки. Для того, щоб вони могли приймати дзвінки, Вам необхідно описати екстеншени для них у файлі плані набору . Приклад:

Exten => 1010,1, Dial(SIP/user3_cisco,10,t)

Якщо хтось здійснить виклик на номер 1010, тоді буде спроба викликати SIP клієнта, зареєстрованого як user3_cisco.

Примітки Змінна $(VXML_URL) може бути використана для додавання додаткового елемента у заголовку SIP повідомлення "To:". Значення цієї змінної буде додано через точку з комою в кінець заголовка "To:" SIP повідомлення. Зверніть увагу, що попередній опис використання цієї можливості містив помилки; використання цієї змінної не має жодного ефекту при завантаженні повідомлень у телефон Cisco 7960 (щось зараз відключено в SIP firmware телефонів Cisco). Ця проблема описана в: author"s e-mailЗмінна $(ALERT_INFO) може використовуватися для створення нового заголовка з ім'ям "Alert-Info:", він може використовуватися для завдання певного типу дзвінка на телефонних апаратахфірми Cisco, які працюють із протоколом SIP, на яких встановлено firmware версії 6.0 або вище. Для телефонів змінна ALERT_INFO може приймати наступні значення, для заданого вбудованого сигналу виклику: - Bellcore-BusyVerify
- Bellcore-Stutter
- Bellcore-MsgWaiting
- Bellcore-dr1
- Bellcore-dr2
- Bellcore-dr3
- Bellcore-dr4
- Bellcore-dr5
На даний момент немає можливості визначити інший дзвінків, можна вибрати тільки варіанти програвання будь-якого дзвінка. Потрібно дуже ретельно слухати, щоб сказати, що сигнали виклику справді чимось відрізняються. Існує багрепорт Cisco: Cisco bug ID CSCec42938, в якому пропонується зробити можливість вибору сигналів виклику. Приклад 1 John Todd, loligo.com: http://www.loligo.com/asterisk/current/sip.confЗ'єднання з Free World Dialup (без використання NAT) [general]
disallow=all
allow=gsm
allow=ulaw
allow=alaw
context=from-sip
maxexpirey=180
defaultexpirey=160
tos=reliability
register => : @fwd.pulver.com/CONTACT

[fwd.pulver.com]
type=friend
secret=
username=
host=fwd.pulver.com
insecure=very ; необхідно для підтримки вхідних FWD дзвінків

Тепер йдемо до опису файлу , і дивимося, як нам налаштувати контексти і в плані набору.

Приклад 2 Використання Asterisk у зв'язці з SIP проксі SER [general]
context=OUTGOING
autocreatepeer=yes

[Provider]
type=friend
username=XXXXX
secret=XXXXX
host=xxxxx.FakeProvider.com

Отже, тепер коли Asterisk отримує виклик з SER, він виконує дію "autocreatepeer" і дозволяє обробити цей виклик у контексті OUTGOING.

Управління sip.conf з зовнішніх джерел: Використання механізму RealTime для SIP каналів. Так само, як і в інших .conf файлах, може використовуватися директива #include, для включення друга файлу в конфігурацію sip.conf. різних версій: Додаткові можливості, додані, починаючи з версії 0.7.2 2004-01-23: Додано CLI команду "sip reload", для перезавантаження sip каналу, щоб зміни внесені до файлу sip.conf набрали чинності, без перезавантаження сервера Asterisk. 2004-01-25: Підтримка зберігання визначень SIP бенкетів у базі даних. Зберігання зміни у базі даних у цей час було реалізовано в повному обсязі, але працює. Дивись: 2004-06: Підтримка зберігання визначень SIP користувачів у базі даних.

Asterisk – це рішення для комп'ютерної телефонії з відкритим вихідним кодом, що підтримує протоколи VoIP, SIP та PJSIP для операційної системи Linux. Якщо підключити до комп'ютера відповідне обладнання, Asterisk можна створити повноцінну станцію ATC. Серед основних можливостей програми можна відзначити голосову пошту, конференції, інтерактивне голосове менюта розподіл дзвінків.

У цій статті ми розглянемо, як виконується установка Asterisk 13 на Ubuntu 16.04. Самої нової версіїПрограми немає в офіційних репозиторіях, тому що використовується вона рядовими користувачами на так часто, тому нам доведеться зібрати її з вихідників.

Установка Asterisk на Ubuntu 16.04

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

Зверніть увагу, що якщо ви заходите зайти на свій сервер по ssh від імені root, то вам все одно доведеться підключатися від імені звичайного користувача, а потім перемикатися в консоль root. Далі вам потрібно встановити залежність для роботи програми:

apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion

cd /usr/src
$wget downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

Для розпакування вихідних джерел наберіть:

tar zxvf asterisk-13-current.tar.gz

Перед тим як компілювати програму нам потрібно зібрати та встановити pjproject. Спочатку завантажуємо вихідники:

git clone git://github.com/asterisk/pjproject pjproject
$ cd pjproject
$ ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS="-O2 -DNDEBUG"
$ make dep make && make install
$ldconfig
$ldconfig -p|grep pj

Нарешті тепер ми готові виконати складання та встановлення Asterisk на Ubuntu 16.04:

cd .. contrib/scripts/get_mp3_source.sh
$contrib/scripts/install_prereq install

Ці команди дозволять вам встановити деякі залежності для відтворення mp3. Виконання може зайняти деякий час, а також потрібно ввести код країни. Далі починаємо складання:

./configure && make menuselect && make && make install

Коли інсталяцію буде завершено, виконайте таку команду, щоб не створювати сотні конфігураційних файлів вручну:

Щоб встановити скрипти ініціалізації, які дозволять запускати asterіsk автоматично, під час кожного завантаження виконайте:

make config ldconfig

Тепер ви можете запустити asterisk сервер і переконатися, що все дійсно працює:

service asterisk start

І дивимося інформацію про утиліту через термінал:

Якщо все було зроблено правильно і установка Asterisk на Ubuntu 16.04 пройшла успішно, все буде працювати.

Налаштування Asterisk в Ubuntu 16.04

Програма запускається від суперкористувача. Але нам потрібно, щоб її можна було запустити від користувача asterіsk, а тому потрібно виконати ще кілька налаштувань. Так ваша система буде в більшої безпеки. Для початку потрібно зупинити запущений сервіс:

groupadd asterisk
$useradd -d /var/lib/asterisk -g asterisk asterisk

Далі нам потрібно змінити скрипт ініціалізації так, щоб програма запускалася від імені потрібного користувача. Ми можемо вручну відредагувати файл /etc/default/asterisk, але простіше використовувати такі команди:

sed -i "s/#AST_USER="asterisk"/AST_USER="asterisk"/g" /etc/default/asterisk
$ sed -i "s/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g" /etc/default/asterisk

Для того, щоб все працювало правильно, користувачу asterisk потрібно дати доступ до всіх каталогів програми:

chown -R asterisk:asterisk /var/spool/asterisk /var/run/asterisk /etc/asterisk /var/(lib,log,spool)/asterisk /usr/lib/asterisk

Також вкажемо правильні налаштування користувача для полів runuser та rungroup у файлі asterisk.conf:

sed -i "s/;runuser=asterisk/runuser=asterisk/g" /etc/asterisk/asterisk.conf

$ sed -i "s/;rungroup=asterisk/rungroup=asterisk/g" /etc/asterisk/asterisk.conf

Коли все буде готове, запустіть раніше зупинену службу або перезавантажте, якщо не зупиняли:

sudo service asterisk start

Потім перевіряємо:

Якщо користувач і група - asterіsk, то ми зробили все правильно.

Висновки

От і все. Установка Asterisk 13 на Ubuntu 16.04 завершена. Тепер ви можете перейти до подальшому налаштуваннімережі для здійснення дзвінків між вашими абонентами прямо через інтернет. Як клієнтське програмне забезпечення можна використовувати будь-яку програму, яка підтримує потрібні протоколи, наприклад Jitsi або Linphone.

про автора

Засновник і адміністратор сайту, захоплююсь відкритим програмним забезпеченням та операційною системою Linux. Як основну ОС зараз використовую Ubuntu. Крім Linux цікавлюся всім, що пов'язано з інформаційними технологіямита сучасною наукою.

Налаштування Asterisk присвячено сайтам, форумам та цілим порталам типу voip-info.org. Але завжди є люди, для яких ця тема – дрімучий ліс, а продукт запустити треба «вчора». Ще півтора місяці тому я про Asterisk знав тільки те, що він є. Ця праця покликана лише трохи полегшити життя тим, хто опиниться у такій ситуації після мене. У ньому можуть бути помилки будь-якого ступеня «чайниковості». Якщо ви гуру налаштування Asterisk – вкажіть на помилку, я виправлю, нащадки будуть вам вдячні.

Спочатку було слово

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

Потім була справа

Загалом, на папері все було красиво та легко. Справа встала тільки за розгортанням та налаштуванням Asterisk.
Спочатку було закуплено два простенькі сервери. Core i7-930, 12GB пам'яті та по 12ТБ на SATA-дисках. На ці сервери було встановлено безкоштовний Xen Server і розгорнуто віртуальні серверита робочі станції для віддалених співробітників.
В якості зовнішнього сховищавикористовується QNAP-івський NAS, який дістався у спадок.
Терабайтні локальні сховища потрібні лише для зберігання медіабанку, який досить великий. Самі сервери всі разом важать менше трьох терабайт.
Одним із серверів став Asterisk на заміну дідку Panasonic TDE-200. Т.к. компанії необхідний дешевий зв'язок, прямі номери різних країнах, і безкоштовні переговори між співробітниками, то альтернативи йому за 12 шекелів загалом немає.

День перший: Make World

Налаштовувати Asterisk було вирішено рідною для Citrix Xen операційній системі CentOS. Той же, тільки збоку. Обмовлюся відразу: я все життя адмінив Windows, а * nix-ами тільки "грав" у віртуалках, не рахуючи пари веб-серверів на залозі. Тому, розгортання Asterisk в Citrix Xen віддає деякою наївністю з погляду навчених досвідом людей.
Загалом, я пішов перевіреним шляхом: відкривається на ноуті докладна how-to інструкція для чайників з офіційних мануалів і виконується на сервері буквально і безініціативно. Грати в героїв-наладчиків можна буде пізніше, коли все буде налаштовано та працюватиме в стані “за умовчанням” і буде зроблено перший full backup.

День другий: yum install asterisk -y

Не те щоб я був дуже здивований, але, проте, я пішов до знайомого зв'язківця за порадою з налаштування Asterisk, коли виявив, що живих астерісків аж три практично самостійні форки: 1.4, 1,6 і 1.8. У кожного з них свої таргани та примочки. Т.к. я не спокушався надією здолати астериск з наскоку, то вирішив поставити версію 1.4, як у друга, щоб мати максимально можливу сумісність конфігів. Хоча згодом довелося підніматися до 1.6 через відсутність підтримки TCP в 1.4, коли виникла така потреба.
Для цього до CentOS був доданий digium-овский репозиторій і Asterisk ставився з нього.
Установка пройшла цілком очікувано, без сучка та задирки. В основному, використовувався тямущий покроковий roadmap з voip-info.
Відразу були поправлені iptables, щоб дозволити трафік по SIP-портах.
Не відразу ж, але майбутнім поколінням рекомендую встановити та налаштувати негайно пакет на ім'я fail2ban. Цілком не зайва програма на сервері, виставленому в інтернет. У мене через день після встановлення весь Тайвань у drop пішов, судячи з iptables.

День третій: ТЗ на функціонал АТС

Починаємо найцікавіше – планування. Перед будь-яким процесом налаштування треба записати та структурувати всі побажання замовника та обов'язково підписати угоду, щоб уникнути надалі конфліктів виду “ні, я говорив зовсім інше”. У моєму випадку замовник – це компанія, в якій я працюю, але це нічого не змінює. Пишемо технічне завдання на функціонал, обговорюємо його з відповідальними людьми, утрушуємо розбіжності та підписуємо фінальний варіант та приступаємо до налаштування Asterisk.
ТЗ на конфігурацію вийшло таке:

  • Нумерація телефонів чотиризначна.
  • Перша цифра номера – ознака країни розташування офісу.
  • Нумерація у кожному відділі починається з першої цифри чергової сотні.
  • Кожен відділ є окремою дзвінковою групою.
  • Якщо абонент, що викликається, будь-яким чином недоступний для виклику, то дзвінок перекидається на всю групу.
  • Логіка обслуговування вхідних дзвінків:
  • Підняти трубку.
  • Привітання програти.
  • Програти рекламу про поточні акції.
  • Програти варіанти дзвінка різних відділів або запропонувати набрати номер абонента.
  • Починаючи з пункту 2 чекатиме введення будь-яких команд.
  • Після закінчення п.4 чекатиме введення команд ще 10 секунд.
  • У разі відсутності команд знову програти варіанти дзвінка.
  • Якщо абонент все одно тупить, то перекинути дзвінок на секретаря.
  • Користувачам, яким потрібний такий сервіс, прикрутити голосову пошту. У разі, якщо користувач недоступний для виклику, перекинути дзвінок на голосову пошту.
  • За замовчуванням, дозволені виклики лише на Росію та Італію – країни, де здебільшого працює наша компанія. Інші напрями відкриваються при необхідності найвужчими масками, т.к. всі ми пам'ятаємо страшні історіїпро "кубінських телефоністів" і не хочемо, щоб одного прекрасного дня у нас АТС раптово у всі свої 50 каналів почала дзвонити в Сьєрра-Леоне по 14 доларів на хвилину для кожного каналу.

На перший погляд, завдання просте і налаштування Asterisk не займе багато часу, а на практиці на його узгодження пішло досить багато крові. Особливо на узгодження заборони всіх напрямків, крім явно дозволених. З цим клієнту довелося погодитися тільки перед неминучою, в іншому випадку, необхідності конфігурації VPN на кожному пристрої, що підключається до АТС. Просто я намагаюся дотримуватися максимально простих і зрозумілих конфігурацій, а клієнту завжди здається, що додати якийсь функціонал до системи - це лише пару кнопок натиснути.

День четвертий: nano sip.conf

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


context=default ;контекст за замовчуванням
allowguest=no ;ніяких гостей, ми нікого не чекаємо
allowoverlap=no ;Цей параметр визначає дозволяємо ми чи ні передачу виклику з додатковими цифрами. Ми – не дозволяємо.
alwaysauthreject=yes Цей параметр означає, що всі помилки для зовнішнього клієнта виглядають однаково - помилка авторизації. Покликаний ускладнювати зламування АТС.
useragent=Orgue de Barbaris ;Це - як ми представляємося в інших. Я назвався на ім'я першого патефона, щоб полегшити техпідтримці провайдерів пошук діалогів з АТС, т.к. періодично доводиться із нею спілкуватися.
defaultexpiry=360 ;Інтервал обов'язкової перереєстрації клієнтів.
callevents=yes ;Це на майбутнє, щоб клієнт міг пограти в управління music on hold
limitonpeer=yes ;Вважаємо вихідні та вхідні виклики бенкетів разом.
tcpenable=yes ;Дозволяємо протокол TCP для SIP.
rtptimeout=60 ;Скільки часу клієнт може не відгукуватися, перш ніж буде викинуто з системи.
language=ua ;Мова системи. Використовується для голосового меню.
bindport=5060 ;Порт за замовчуванням. Можна змінити для ускладнення обчислення та злому АТС, але рішення спірне.
bindaddr=0.0.0.0 ;у мене стоять нулі, т.к. АТС має два інтерфейси та на обох висять клієнти.
srvlookup=yes
tos_sip=cs3; http://www.voip-info.org/wiki/view/Asterisk+sip+tos
tos_audio=efdisallow=all ;спочатку забороняємо всі кодеки
allow = alaw; потім, дозволяємо тільки ті, що хочемо використовувати. Порядок значення немає.
allow=g729
allow=g723
allow=ulaw

canreinvite=no ;Цей параметр забороняє клієнтам спілкуватися безпосередньо. Спілкування відбувається лише через сервер. У мене це зроблено так, тому що мобільні клієнти використовують платні клієнти з протоколом g.729а, а стаціонарні сидять на безкоштовних клієнтівбез цього. Тому, я вважав за краще напружити сервер транскодингом alawg.729a на льоту на користь якості зв'язку для мобільних клієнтів. Тим більше, що Core i7-930 взагалі не помічає цього навантаження.

Linux-програма Asterisk потрібна для створення серверів телефонії та АТС. У неї багато корисних функцій, які будуть доречними в будь-якому офісі. Конференції, автовідповідачі, розподіл дзвінків, текстові повідомлення, відео, голосове меню та голосова пошта. Утиліта підтримує найпопулярніші протоколи зв'язку. Їх можна комутувати. Але встановлення Asterisk на Ubuntu - справа не найпростіша. Програма завантажується та налаштовується через термінал. Тож треба вивчити консольні команди.

  • Перейдіть до папки contrib/scripts/ за допомогою команди cd.
  • Відкрийте скрипт "get_mp3_source.sh".
  • Введіть "make install".
  • Зачекайте, поки завантажаться архіви.
  • Встановлений Asterisk треба налаштовувати через меню, і через термінал. Тому відкрийте консоль.

  • Виконайте конфігураційні файли. Можна як тест. Команда – «make samples».
  • Активуйте функцію автозапуску – «make config ldconfig».
  • Тепер можна запустити сервіс – «service asterisk start».
  • Або відразу відкрити його як демон - "/etc/init.d/asterisk start". Щоб увімкнути консоль, введіть команду «sudo asterisk -rvvvcd».
  • Поки що для роботи з Астериском вам потрібні права суперкористувача. Але краще створити окремого користувачата надати йому доступ до функцій програми. Для цього:

  • Тимчасово відключіть утиліту – «service asterisk stop».
  • Додати нового користувача - «adduser [Ім'я]». Ви можете створити групу, якій надаєте потрібні права. Вона знадобиться, якщо ви вирішите зробити кількох користувачів для роботи з різними службамиАстеріска.
  • Тепер потрібна директорія для запуску. Додати її за допомогою команди «mkdir». Після неї напишіть параметр -p і шлях до папки /var/run/asterisk.
  • Щоб програма відкривалася одночасно під корисним користувачем, відредагуйте файл «/etc/default/asterisk». Встановіть там такі параметри: "AST_GROUP="dialout"" і "AST_USER="asterisk"".
  • Можна зробити це простіше - впишіть скрипт sed -i 's/#AST_USER=asterisk/AST_USER=asterisk/g' /etc/default/asterisk.
  • Надайте користувачеві доступ до всіх папок програми - «chown -R [Ім'я-користувача] [Шлях-до-каталогу]».
  • Відкрийте файл «asterisk.conf», знайдіть у ньому параметр «runuser» і вкажіть у ньому щойно створеного користувача. Якщо робили групу, також перепишіть рядок "rungroup".
  • Перезавантажте систему - "reboot".
  • Зайдіть під ім'ям Asterisk-користувача - «su [Ім'я]».
  • І запустіть програму.
  • Щоб переглянути відомості про неї, введіть "asterisk -rvvvv".
  • Утиліта готова до роботи. Подальші дії залежать від того, за яких умов буде використовуватися станція. Є кілька файлів, у яких розписано конфігурацію:

    • conf - Загальні налаштуваннясервера. У ньому можна зазначити, скільки підключено абонентів. Там встановлюють правила додзвону.
    • conf - у ньому також налаштовують правила дозвону та виставляють параметри дзвінків.
    • conf - конфігурація абонентських облікових записів.

    З Asterisk ви створите АТС будь-якийскладності. У ньому багато корисних функцій та модулів. Після встановлення та налаштування ви зможете взаємодіяти зі станцією за допомогою клієнтського програмного забезпечення. Наприклад, Linphone.