Налаштування Asterisk з нуля
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.
Для початку установки, завантажуємо вихідні астеріскі. Для цього виконуємо в консолі сервера команди:
# cd /usr/src
# 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
# ./configure
# make
# make install
# make samples
Після вдалої установки в каталозі /etc/asterisk ви виявите конфігураційні файли asterisk'a. Налаштування asterіsk здійснюється шляхом редагування файлів конфігурації, що мають дуже специфічну структуру та оператори. Основу конфігурації при налаштуванні астериск складають файли sip.conf та extensions.conf. Вивчивши та відредагувавши ці файли, можна досягти правильної роботи сервера.
Файл sip.conf включає налаштування всіх sip-пристроїв, зареєстрованих на сервері, який згодом взаємодіють між собою шляхом з'єднання двох і більше sip-каналів, завдяки чому ініціюється телефонне з'єднання – тобто дзвінок.
Приклад файлу sip.conf:
[general]
qualify=yes
nat=no
[datagroup]
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
[fxo]
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
[101]
type=friend
regexten=101
secret=xxxxxxxxxxxxx
context=internal
host=dynamic
callerid="101" <101>
disallow=all
allow=alaw
allow=ulaw
language=ua
callgroup=1
pickupgroup=1
qualify=yes
canreinvite=yes
call-limit=4
nat=no
У цьому прикладі наведено найпростіший список sip-пристроїв. Неважко помітити, що у конфігурації є блоки, укладені у квадратні дужки. Саме такими блоками описується конфігурація будь-яких пристроїв (бенкетів) при налаштуванні Asterisk. Пройдемося коротко по блоках і за основними параметрами.
Блок [general] є обов'язковим. До нього входять параметри та параметри, які застосовуються до всіх блоків за промовчанням. Іншими словами, якщо при описі того чи іншого пристрою не вказано будь-який параметр, Asterisk читає його з цього блоку.
Наступні три блоки описують безпосередньо sip-пристрої. Для наочності усі три пристрої мають різні призначення. Блок [datagroup] описує параметри для sip-номера компанії Датагруп, блок [fxo] описує параметри для з'єднання з VOIP-шлюзом, а блок [101] описує параметри звичайного внутрішнього sip-пристрою, яким може програмний або апаратний ip-телефон.
Пробіжимося за основними параметрами sip пристроїв. Параметр context визначає, який алгоритм дій застосовувати до того чи іншого пристрою. Callerid визначає номер та ім'я бенкету, які будуть висвічуватись при вихідному дзвінку з нього. Опції disallow та allow визначають, які кодеки використовувати для зв'язку. Опція secret – це пароль для реєстрації даного бенкету. Паролі бажано складати досить складними, щоб уникнути зломів недоброзичливцями.
Файл extensions.conf описує взаємодії між контекстами та каналами зв'язку, яких може бути безліч. По суті, цей файл є основним при налаштуванні asterіsk.
Приклад файлу extensions.conf:
[internal]
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
[incoming]
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 є така послідовність. Єдина відмінність – команди, що виконуються asterisk’ом, нумеруються. Обов'язковою є вказівка першої сточки явно. Як ви встигли помітити, всі контексти починаються зі рядків:
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
Подальші дії можуть виконуватися з командного рядка астериску, який запускається командою:
# asterisk -rvvvvd
Потрапивши в консоль, ви можете перевірити роботу вашого сервера. Вона відображатиме всі дії, які він виконує.
P.S. У випадку, якщо у вас не вдалося налаштувати сервер, або вам потрібна більш складна конфігурація, з радістю допоможемо в налаштуванні asterisk. Наші контакти тут.
← Перейти до списку