Как установить asterisk на ubuntu 18.04 lts

Установка Asterisk

Уста­нов­ка асте­ри­с­ка выпол­ня­ет­ся путем сбор­ки исход­ни­ков. Сама про­це­ду­ра про­хо­дит в 3 этапа:

  1. Уста­нов­ка DAHDI (драй­ве­ров плат интерфейсов);
  2. Уста­нов­ка LibPRI (биб­лио­те­ка для рабо­ты с пото­ко­вы­ми TDM-интерфейсами);
  3. Соб­ствен­но, сбор­ка и уста­нов­ка Asterisk.

1. Сборка DAHDI

Уста­нав­ли­ва­ем исход­ни­ки для исполь­зу­е­мо­го ядра:

yum install «kernel-devel-uname-r == $(uname -r)»

Загру­жа­ем исход­ник, рас­па­ко­вы­ва­ем его и пере­хо­дим в рас­па­ко­ван­ный каталог:

wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

tar -xvf dahdi-linux-complete-current.tar.gz

cd dahdi-linux-complete-*/

Выпол­ня­ем сбор­ку и установку:

make

make install

make install-config

Выхо­дим из ката­ло­га с исходником:

cd ..

2. Сборка LibPRI

Про­це­ду­ра, во мно­гом, похо­жа на сбор­ку DAHDI. Загру­жа­ем исход­ник, рас­па­ко­вы­ва­ем его и пере­хо­дим в рас­па­ко­ван­ный каталог:

wget https://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz

tar -xvf libpri-current.tar.gz

cd libpri-*/

Выпол­ня­ем сбор­ку и установку:

make

make install

Выхо­дим из ката­ло­га с исходником:

cd ..

3. Установка самого астериска

Для нача­ла, загру­жа­ем исход­ник на сер­вер. Так как мы пла­ни­ру­ем уста­но­вить LTS вер­сию, захо­дим на стра­ни­цу https://www.asterisk.org/downloads/asterisk/all-asterisk-versions, раз­дел «Long Term Support (LTS) Releases» и копи­ру­ем ссыл­ку на загруз­ку пакета:

* Certified Asterisk — биз­нес вер­сия с под­держ­кой для ком­мер­че­ских клиентов.

Исполь­зуя ссыл­ку, ска­чи­ва­ем на сер­вер программу:

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz

Рас­па­ко­вы­ва­ем архив и пере­хо­дим в него:

tar -xvf asterisk-*.tar.gz

cd asterisk-*

Исполь­зу­ем встро­ен­ный скрипт, что­бы уста­но­вить зави­си­мо­сти для астериска:

./contrib/scripts/install_prereq install

./contrib/scripts/install_prereq install-unpackaged

Чистим обра­зо­вав­ши­е­ся вре­мен­ные файлы:

make distclean

Добав­ля­ем биб­лио­те­ку для рабо­ты с mp3:

./contrib/scripts/get_mp3_source.sh

Кон­фи­гу­ри­ру­ем исходник:

./configure —prefix=/usr —sysconfdir=/etc —localstatedir=/var —libdir=/usr/lib64 —with-dahdi —with-pri —with-iconv —with-libcurl —with-speex —with-mysqlclient —with-jansson-bundled —with-pjproject-bundled

* пол­ный пере­чень опция и что они озна­ча­ют мож­но посмот­реть коман­дой ./configure -h.

Про­дол­жа­ем настройку:

make menuselect

Выби­ра­ем необ­хо­ди­мые ком­по­нен­ты (в дан­ном при­ме­ре res_config_mysql, app_mysql, cdr_mysql):

Запус­ка­ем сбор­ку и установку:

make

make install

Уста­нав­ли­ва­ем скрип­ты для авто­за­пус­ка АТС и гото­вые кон­фи­гу­ра­ци­он­ные файлы:

make config

make samples

Уста­нов­ка завершена!

Возможности Asterisk

Asterisk в комплексе с необходимым оборудованием обладает всеми возможностями классической АТС, поддерживает VoIP протоколы и предоставляет богатые функции управления звонками:

  • голосовую почта,
  • конференции,
  • IVR — Interactive Voice Response,
  • центр обработки вызовов (постановка звонков в очередь и распределение их по агентам используя различные алгоритмы),
  • Подробная запись о вызове (CDR)
  • Архив аудио записей разговоров

Возможности Asterisk 1.8.0:

  • Поддержка шифрования RTP-потоков;
  • Поддержка IPv6 в канальном драйвере SIP;
  • Поддержка расширения «Connected Party Identification», позволяющего обеспечить идентификацию присоединенного абонента, т.е. гарантировать звонящему абоненту, что на другом конце линии именно тот кого он вызывал (например, звонок может быть перенаправлен кому-то другому);
  • Поддержка интеграции с календарями-планировщиками, для управления представлен специальный «Calendaring API«. Календарь поддерживает задание событий, приоритетов, категорий, обмен информацией с популярными календарными сервисами. Поддерживаются форматы Exchange/Outlook, CalDAV и iCal. Новый API позволяет организовать запись в календарь информации о звонках (история звонков будет доступна через стандартный интерфейс календаря, при этом звонки легко ассоциировать с пересекающимися во времени событиями) или принимать решение о перенаправлении звонков на основании данных в календаре ( например, определив занятость абонента при наличии записи о срочном деле).
  • Добавлена альтернативная система ведения лога звонков — Channel Event Logging (CEL), позволяющая детально отследить все связанные со звонком события (перенаправления звонков, выбор в голосовом меню и т.п.) и просмотреть данные о всех участвовавших при обработке звонка подсистемах;
  • Возможность распределенного обмена данными о состоянии устройств через Jabber/XMPP расширение PubSub (отправка уведомлений по подписке);
  • Поддержка добавочных сервисов завершения вызова (H.450.9, Call Completion Supplementary Services), например, позволяющих звонящему пользователю A определить свободность абонента B без попытки совершения нового звонка, когда первый звонок остается незавершенным из-за занятости линии абонента B или когда он не отвечает;
  • Поддержка GTalk и Google Voice с возможностью осуществления прямых исходящих звонков;
  • Поддержка AoC (Advice of Charge), дополнительного GSM-сервиса, позволяющего оператору передать абоненту данные о стоимости звонка.

Пункт третий. Устанавливаем ПО для пользователей телефонии.

Как известно, FreePBX предназначен для администрирования системы телефонии. Его использует системный администратор для настройки. Директор и секретарь, а также другие руководители каждый день работают со статистикой звонков и записями разговоров. Для этих целей FreePBX им не подойдет. Пользователь в IT не разбирается. Часто это неуверенный пользователь ПК. Поэтому ему нужна русифицированная интуитивно понятная программа.

По моему мнению, наиболее соответствует этим критериям программа HelloAsterisk. Программа имеет бесплатную версию. В этой бесплатной версии огромное количество нужных функций. Есть и платные функции. Описание можно найти на официальном сайте программы.

Я приведу видео обзор одной из бесплатных функций HelloAsterisk:

Частые ошибки в установке и настройке Asterisk

Если не планируется принимать анонимные звонки, надо их отключить.

Отсутствие библиотеки sqlite или ее компонентов для разработчиков для сборки программ.

Чтобы решить эту проблему, надо использовать CentOS с пакетом sqlite-devel: yum -y install sqlite-devel

Не получается зарегистрировать Asterisk на сервере ru.

Для решения этой проблемы надо проверить правильность ввода пароля, SIP ID. Также необходимо проверить, как сотрудник создан в «Личном кабинете»: правильно или нет.

Отклонение входящего вызова Астериксом.

Надо проверить, находится ли пользователь в регистрации. Необходимо ввести команду sipshowregistry в консоле Астериск.

Прохождение звука через одну сторону.

Нужно выбрать либо поддержку nat в Asterisk, либо поддержку SIP. Второй вариант решения проблемы – установка directmedia=nonat. Еще одним способом станет установка debug в Asterisk, с помощью которого можно будет отслеживать все запросы и аудио-трафик.

Не получается исходящему вызову пройти.

Для этого надо написать: exten => _XXXXXX,1,Dial(DAHDI/g1/$)

Изменив номер, можно решить проблему.

Asterisk + Ubuntu + VDS = IP-PBX

Существуют и другие серверы VoIP, при этом некоторые коммерческие продукты ограниченное время можно использовать бесплатно. Считается, что они гораздо проще в настройке, но требуют для работы Windows или установки с собственного дистрибутива Linux. Это сразу отсекает большинство недорогих VDS, а собственное железо с каналом передачи данных или аренда выделенного аппаратного сервера обходятся дороже. Бесплатный Asterisk разворачивается на любой виртуальной машине, к тому же внедрить его не так сложно. Для этого не потребуется даже сборка из исходных текстов. С помощью Asterisk нетрудно наладить телефонную связь между IP-телефонами (аппаратными и программными), а если подключиться к внешнему провайдеру VoIP, то за небольшую сумму денег вы получите полноценную IP АТС (IP-PBX). Если потребность в ней исчезнет, отказаться можно в любой момент — аренда выгоднее вложений в железо и софт.

Установка FreePBX

Вносим необходимые правки в файлы конфигураций php, apache и применяем сделанные изменения в них:

1
2
3
4
5
6
7

sed -i ‘s/\(^upload_max_filesize = \).*/\1 256M/’ /etc/php/5.6/apache2/php.ini
sed -i ‘s/\(^memory_limit = \).*/\1 256M/’ /etc/php/5.6/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i ‘s/^\(User\|Group\).*/\1 asterisk/’ /etc/apache2/apache2.conf
sed -i ‘s/AllowOverride None/AllowOverride All/’ /etc/apache2/apache2.conf
a2enmod rewrite
service apache2 restart

Создаем файл конфигурации /etc/odbcinst.ini:

1
2
3
4
5
6

cat <<EOF > /etc/odbcinst.ini

Description = ODBC for MySQL (MariaDB)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
FileUsage = 1
EOF

Создаем файл конфигурации /etc/odbc.ini

1
2
3
4
5
6
7
8
9
10
11

cat <<EOF > /etc/odbc.ini

Description = MySQL connection to ‘asteriskcdrdb’ database
Driver = MySQL
Server = localhost
Database = asteriskcdrdb
Port = 3306
Charset = utf8
Socket = /var/run/mysqld/mysqld.sock
Option = 3
EOF

Создадим базу данных для работы FreePBX:

1 mariadb

1
2
3
4
5
6

CREATE DATABASE asterisk default charset utf8;
CREATE DATABASE asteriskcdrdb default charset utf8;
GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘asterpass’;
GRANT ALL PRIVILEGES ON asteriskcdrdb.* to asteriskuser@localhost IDENTIFIED BY ‘asterpass’;
FLUSH PRIVILEGES;
EXIT

Переходим в каталог с дистрибутивом FreePBX, запускаем Asterisk и выполняем установку:

1
2
3

cd freepbx/
./start_asterisk start
./install -n —dbuser=asteriskuser —dbpass=asterpass

Установка завершена, через Web браузер заходим в консоль FreePBX:

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

Далее вам нужно будет ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти в систему с другим именем пользователя, используя ту же команду, а затем изменить root на свое имя пользователя:

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

Устанавливаем DAHDI, LibPRI

Для удобства дальнейшей инсталляции скачиваем все необходимые исходники (dahdi, libpri, asterisk, freepbx) и распаковываем их:

1
2
3
4
5
6
7
8
9
10

cd /opt/
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz
 
tar -zxvf dahdi-linux-complete-current.tar.gz
tar -zxvf libpri-current.tar.gz
tar -zxvf asterisk-18-current.tar.gz
tar -zxvf freepbx-14.0-latest.tgz

Собираем по очереди (dahdi, libpri) из исходников и устанавливаем:

1
2
3
4
5

cd dahdi-linux-complete-3.*
make all
make install
make config
cd ..

1
2
3
4

cd libpri-1.*
make
make install
cd ..

Звонки с/на Skype

Для запуска Skype в консольном Linux используем Xvfb (X Virtual Frame Buffer) и для настройки Skype с другой машины — x11vnc:

apt-get install xvfb x11vnc
dpkg -i skype.deb

Для работы SipToSis необходима Java версии не ниже 1.5.

sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update

Установим java:

sudo apt-get install oracle-java7-installer

Разархивируем в и проставим на исполняемый файл:

chmod +x /etc/siptosis/SipToSis_linux

man hier не согласится с этим

Теперь настроим asterisk.

В добавим:

username=Skype
type=friend
context=Skype
secret=
host=dynamic
nat=no
dtmfmode=auto
canreinvite=no
incominglimit=1
outgoinglimit=1
call-limit=1
busylevel=1

В добавим

exten => 1001,1,Dial(SIP/Skype/echo123)

И перезагрузим asterisk.

sudo /etc/init.d/asterisk restart

Теперь правим конфиг SipToSis:

sudo nano /etc/siptosis/siptosis.cfg

Закомментируем блок настроек, начинающийся с «#Sample AUTO config with NO registration»
Раскомментируем блок «#Sample Asterisk registration example», поправим:

host_port=5070
contact_url=sip:[email protected]:5070
from_url="Skype" <sip:[email protected]:5060>
username=Skype
realm=asterisk
passwd=
expires=300
do_register=yes
minregrenewtime=120
regfailretrytime=15

Запускаем:

sudo /usr/bin/Xvfb :101 -ac &
sudo DISPLAY=:101 /usr/bin/skype &
sudo x11vnc -display :101 &

Подключаемся с другой машины (в моем случае, с Windows XP через VNC Viewer), вводим в Skype логин-пароль, отключаем все лишнее.

Теперь запускаем :

DISPLAY=:101 /etc/siptosis/SipToSis_linux

Если все сделано правильно, SipToSis запустится и попытается подключиться к Skype. Skype выдаст вопрос — разрешить ли подключение. Разрешаем и ставим галку «запомнить».

Проверяем: набираем с подключенного к Asterisk клиента 1001 — мы должны услышать тестовый звонок Skype.

Чтобы принимать входящие звонки, в прописываем соответствующее правило. Например:

*,sip:[email protected]:5060

-перенаправлять все входящие звонки Skype SIP-юзеру «user1».

Естественно, нужно создать в контекст «», в котором разрешить звонки на этот extension.

Настройка поддержки интерфейсных карт

Если планируется подключение сервера Asterisk с помощью специальных интерфейсных плат к обычным телефонным сетям, следует позаботиться о наличии соответствующих драйверов, реализованных в виде модуля ядра. Но даже если таких устройств в компьютере нет, эти драйверы все равно рекомендуется установить. Дело в том, что во всех Zaptel-устройствах есть таймер, и для полноценной работы сервера IP-телефонии он является необходимым. Но если Zaptel-устройства под рукой нет, для его эмуляции можно использовать специальный драйвер — ztdummy.

Из репозитария устанавливаем пакеты zaptel, zaptel-source и собираем модули под свою систему:

В /usr/src появится пакет zaptel-modules-*_i386.deb, устанавливаем его с помощью dpkg. После этого проверяем работу модулей ядра:

И если нужна поддержка устройств:

Чтобы обеспечить их автоматическую загрузку, выполняем следующую команду:

Создаем правила для UDEV:

KERNEL=»zapctl», NAME=»zap/ctl»
KERNEL=»zaptimer», NAME=»zap/timer»
KERNEL=»zapchannel», NAME=»zap/channel»
KERNEL=»zappseudo», NAME=»zap/pseudo»
KERNEL=»zap0-9*», NAME=»zap/%n»

Также можно использовать исходные тексты или CVS-версию драйвера. При самостоятельной компиляции понадобятся заголовочные файлы ядра (или исходные тексты):

Создадим символическую ссылку, чтобы Asterisk нашел исходники ядра:

Теперь получаем последнюю версию драйверов:

Компилируем и устанавливаем:

И чтобы вручную не создавать конфигурационные файлы:

После этой команды будет создан скрипт для автоматического запуска модулей, входящих в состав Zaptel, и конфиг /etc/default/zaptel (или /etc/sysconfig/zaptel), в котором будет указано, какие модули необходимо загружать. Рекомендую в этом файле оставить только необходимое. Пробуем загрузить модуль:

Все нормально. После установки в системе появятся еще два файла:

  1. /etc/zaptel.conf – описывает конфигурацию аппаратного обеспечения;
  2. /etc/Asterisk/zapata.conf — настройки сервера Asterisk для работы драйвера Zap-канала.

Подробные указания для всевозможных устройств даны в документации. На русском по этому поводу можно почитать в документе «Конфигурация драйвера ядра Zaptel». Но на этом не останавливаемся, впереди у нас еще много работы. После настройки проверяем работу командой ztcfg -vv.

Call Detail Record (CDR)

Теперь настро­ем хра­не­ние жур­на­ла вызо­вов в базе данных.

Откры­ва­ем сле­ду­ю­щий файл:

vi /etc/asterisk/cdr_adaptive_odbc.conf

Добав­ля­ем в самый низ:

YAML

connection=asterisk-conf
table=cdr
alias src => source
alias channel => source_channel
alias dst => dest
alias dstchannel => dest_channel

1
2
3
4
5
6
7

connection=asterisk-conf
table=cdr
aliassrc=>source
aliaschannel=>source_channel
aliasdst=>dest
aliasdstchannel=>dest_channel

Пере­за­пус­ка­ем астериск:

systemctl restart asterisk

Про­бу­ем позво­нить через наш асте­риск и после звон­ка смот­рим запи­си в базе:

mysql -uasteruser -pasterpassword123 -e «SELECT * FROM asterisk.cdr»

Полу­чим при­мер­но следующее:

YAML

| accountcode | src | dst | dcontext | clid | channel | dstchannel | lastapp | lastdata | start | answer | end | duration | billsec | disposition | amaflags | userfield | uniqueid | linkedid | peeraccount | sequence |
+————-+——+——+————+—————+——————-+——————-+———+————-+———————+———+———————+———-+———+————-+—————+————+—————+—————+————-+———-+
| NULL | 1001 | 1004 | outcaling | «1001» <1001> | SIP/1001-00000000 | SIP/1004-00000001 | Dial | SIP/1004,,m | 2017-12-07 16:11:24 | NULL | 2017-12-07 16:11:32 | 7 | 0 | NO ANSWER | DOCUMENTATION | NULL | 1512652284.0 | 1512652284.0 | NULL | 0 |

1
2
3

|accountcode|src|dst|dcontext|clid|channel|dstchannel|lastapp|lastdata|start|answer|end|duration|billsec|disposition|amaflags|userfield|uniqueid|linkedid|peeraccount|sequence|

+————-+——+——+————+—————+——————-+——————-+———+————-+———————+———+———————+———-+———+————-+—————+————+—————+—————+————-+———-+

|NULL|1001|1004|outcaling|»1001″<1001>|SIP/1001-00000000|SIP/1004-00000001|Dial|SIP/1004,,m|2017-12-0716:11:24 | NULL   | 2017-12-07 16:11:32 |        7 |       0 | NO ANSWER   | DOCUMENTATION | NULL      | 1512652284.0 | 1512652284.0 | NULL        |        0 |

Или в более чита­е­мом виде:

Поле При­мер значения Опи­са­ние поля
accountcode NULL Допол­ни­тель­ное поле для иден­ти­фи­ка­ции кли­ен­та. Может исполь­зо­вать­ся, если не хва­та­ет стан­дарт­но­го набо­ра параметров.
src 1001 Кто зво­нит.
dst 1004 Кому позво­ни­ли.
dcontext outcaling Кон­текст (груп­па пра­вил обра­бот­ки звонка).
clid «1001» <1001> Caller identification или CID. Состо­ит из име­ни и номе­ра звонящего.
channel SIP/1001-00000000 Канал, кото­рый при­ни­ма­ет вызов.
dstchannel SIP/1004-00000001 Канал исхо­дя­ще­го вызова.
lastapp Dial Dialplan обра­бот­ки вызова.
lastdata SIP/1004,,m Что пере­да­ва­лось в lastapp.
start 2017-12-07 16:11:24 Нача­ло звонка.
answer NULL Вре­мя, за кото­рое под­ня­ли труб­ку. NULL — труб­ку не подняли.
end 2017-12-07 16:11:32 Дата и вре­мя окон­ча­ния звонка.
duration 7 Дли­тель­ность звон­ка в секундах.
billsec Вре­мя раз­го­во­ра (с момен­та под­ня­тия трубки).
disposition NO ANSWER Состо­я­ние вызо­ва. Воз­мож­ные варианты:
— ANSWERED — отвечен.
— NO ANSWER — отве­та нет.
— CONGESTION / FAILED — ошиб­ка вызова.
— BUSY — занято.
amaflags DOCUMENTATION Не исполь­зу­ет­ся.
userfield NULL Поль­зо­ва­тель­ские пара­мет­ры для канала.
uniqueid 1512652284.0 Уни­каль­ный иден­ти­фи­ка­тор кана­ла звонящего.
linkedid 1512652284.0 Уни­каль­ный иден­ти­фи­ка­тор кана­ла звонящего.
peeraccount NULL Код учет­ной запи­си кана­ла Сто­ро­ны 2.
sequence Номер после­до­ва­тель­но­сти канала.

Так­же суще­ству­ют про­дук­ты, поз­во­ля­ю­щие в гра­фи­че­ском интер­фей­се смот­реть CDR. Напри­мер, веб-при­ло­же­ние Asterisk CDR Viewer Mod.

Регистрация пользователей

Если теперь посмотреть в каталог /etc/Asterisk, можно обнаружить большое количество файлов. Но размер журнальной статьи позволит нам познакомиться только с некоторыми из них. Так, в Asterisk.conf указаны каталоги, которые будет задействовать Asterisk во время работы, расположение и владелец сокета, используемого для подключения удаленной консоли управления, а также дефолтные параметры запуска сервера. Некоторые каталоги во время установки не создаются, это придется сделать вручную:

Добавим пользователя Asterisk в группу audio:

Дальше нас интересует файл sip.conf, где определяются серверы и клиенты SIP, с которыми будет дружить наш Asterisk. Каждый из них представлен в файле отдельным блоком, который начинается с оглавления, заключенного в квадратные скобки. Параметров в sip.conf довольно много, ограничимся лишь добавлением SIP-аккаунта:

Поле type указывает, что может делать этот клиент. При значении user ему будет разрешено только принимать входящие звонки, при peer он сможет только звонить, а friend означает все действия сразу, то есть user+peer. В поле host указывается IP-адрес, с которого разрешено подключение этого клиента. Если он может подключаться с любого адреса, указываем host=dynamic. А чтобы в этом случае вызвать клиента, когда он еще не зарегистрирован, в defaultip следует записать IP-адрес, по которому его всегда можно будет найти. В username и secret указываем логин и пароль, используемые клиентом при подключении. Параметр Language задает код языка приветствий и специфичные настройки сигналов телефонов,
которые определены в файле indications.conf. При работе клиента за NAT’ом в соответствующем поле необходимо установить значение yes. Отключение canreinvite заставляет весь голосовой RTP-трафик проходить через Asterisk. Если клиенты поддерживают SIP re-invites, им можно разрешить соединяться напрямую, указав canreinvite=yes. Поле сontext определяет план набора, в который попадают вызовы, поступающие от этого клиента, а callerid — строку, которая будет выводиться при звонке от клиента. По умолчанию используется контекст default, который берет все настройки из контекста demo. Последний предназначен исключительно для демонстрационных целей, в рабочей системе необходимо создать свой контекст.
Поле mailbox указывает на голосовой ящик 1234 в контексте office. Остальные клиенты настраиваются аналогично.
После определения SIP-аккаунтов наши клиенты могут регистрироваться на сервере Asterisk и совершать исходящие вызовы. Чтобы у них была возможность принимать звонки, следует обратиться к файлу extensions.conf, в котором описывается план набора (Dialplan), распределяющий звонки в системе. Здесь же указываются все разрешенные расширения.

Здесь все просто. За пользователем grinder закрепляем номер 1234, и, если он не ответит на звонок, ему можно будет оставить сообщение в голосовой почте. Цифра после номера означает приоритет, который определяет последовательность выполнения задач. Теперь, если Asterisk запущен, следует подключиться к его консоли, выполнив на той же машине Asterisk -r, и с помощью команды reload заставить его перечитать конфигурационные файлы. Есть и команды для перезагрузки конкретного файла. Например, план набора перечитывается командой extensions reload.

Сервер готов к приему клиентов. По адресу www.Asteriskguru.com/tutorials/configuration_Asterisk_softphone.html выбираем себе софт-клиент и пробуем соединиться. Мне, например, нравится бесплатная версия простой и понятной в использовании программы ZoIPer (ранее Idefisk). Есть версии для Linux, Windows и Mac OS X. Еще один неплохой и также мультиплатформенный клиент — X-Lite.

Если все нормально, в консоли должно появиться сообщение вроде «Registered SIP ‘grinder’ at 192.168.0.1 port 5060», набираем номер и звоним.

Настройка Asterisk

Файлы конфигурации находятся в каталоге /etc/asterisk, причем их там огромное количество.

Продукт настраивается очень гибко и обладает массой возможностей, но для решения простых задач большинство из них нам не понадобится. В этой статье мы ограничимся правкой двух конфигурационных файлов: /etc/asterisk/sip.conf и /etc/asterisk/extensions.conf. Предварительно стоит сделать их резервные копии:

Переходим к редактированию новых конфигурационных файла (самые любопытные могут изучить резервные копии дистрибутивных, там много интересного):

В файл нужно добавить минимум двух пользователей (внутренних абонентов) с номерами 1001 и 1002, а также задать для них пароли (параметр secret). На вашем сервере внутренние номера и пароли будут другими:

type=friend
host=dynamic
secret=1234

type=friend
host=dynamic
secret=5678

Аналогично делаем новый extensions.conf:

Его содержание будет следующим:

exten => 1001,1,Dial(SIP/1001,10)
exten => 1002,1,Dial(SIP/1002,10)

Меняем владельца и права доступа к файлам, поскольку там лежат, в частности, пароли пользователей нашей АТС

Теперь нам остается только перезапустить службу и проверить ее работоспособность:

На этом настройка IP АТС с возможностью телефонной связи между внутренними абонентами завершена. Перейдем к проверке ее работоспособности.

Настройка

Теперь выберем параметры для телефонного сервера Ubuntu. Настройка с нуля Asterisk выглядит так.

Меню

  1. Зайдите в меню программы — «make menuselect».
  2. Активируйте все функции «MySQL».
  3. Откройте вкладку «Add-ons».
  4. Выберите опцию «format_mp3». Так голосовое меню будет в MP3-формате.
  5. Если вы хотите поставить поддержку русского языка (или какого-то другого), включите её в подразделе «Core Sound Packages».
  6. Вам нужны все три кодека. «ALAW» — основной. «G729» — для номеров, которые присоединяются через внешнюю сеть. «GSM» — для GSM-шлюзов.
  7. Скачайте модуль «meetme».
  8. В разделе «Extras Sound Packages» тоже подключите кодеки.
  9. Для использования FreePBX выберите «cdr_odbc».
  10. На вкладке «Music On Hold File» активируйте всё.
  11. Загрузите «MOH-OPSOUND-WAV». Это набор мелодий. Потом вы сможете их заменить на те, которые вам нужны.
  12. Нажмите «Save & Exit».

Консоль

Включили модуль MP3? Теперь скачайте пакеты голосовых сообщений.

  1. Перейдите в папку «contrib/scripts/» при помощи команды «cd».
  2. Откройте скрипт «get_mp3_source.sh».
  3. Введите «make install».
  4. Подождите, пока загрузятся архивы.

Установленный Asterisk надо настраивать и через меню, и через терминал. Поэтому откройте консоль.

  1. Сделайте конфигурационные файлы. Можно в качестве теста. Команда — «make samples».
  2. Активируйте функцию автозапуска — «make config ldconfig».
  3. Теперь можно запустить сервис — «service asterisk start».
  4. Или сразу открыть его в качестве демона — «/etc/init.d/asterisk start». Чтобы включить его консоль, введите команду «sudo asterisk -rvvvcd».

Пока для работы с Астериском вам нужны права суперюзера. Но лучше создать отдельного пользователя и предоставить ему доступ к функциям программы. Для этого:

  1. Временно отключите утилиту — «service asterisk stop».
  2. Добавьте нового юзера — «adduser ». Можете создать группу, которой предоставите нужные права. Она пригодится, если вы решите сделать нескольких пользователей для работы с разными службами Астериска.
  3. Теперь нужна директория для запуска. Добавьте её при помощи команды «mkdir». После неё напишите параметр «-p» и путь к папке «/var/run/asterisk».
  4. Чтобы приложение открывалось сразу под нужным юзером, отредактируйте файл «/etc/default/asterisk». Установите там следующие параметры: «AST_GROUP=»dialout»» и «AST_USER=»asterisk»».
  5. Можно сделать это проще — впишите скрипт «sed -i ‘s/#AST_USER=»asterisk»/AST_USER=»asterisk»/g’ /etc/default/asterisk».
  6. Предоставьте пользователю доступ ко всем папкам программы — «chown -R ».
  7. Откройте файл «asterisk.conf», найдите в нём параметр «runuser» и укажите в нём только что созданного пользователя. Если делали группу, также перепишите строчку «rungroup».
  8. Перезагрузите систему — «reboot».
  9. Зайдите под именем Asterisk-юзера — «su ».
  10. И запустите программу.
  11. Чтобы посмотреть информацию о ней, введите «asterisk -rvvvv».

Утилита готова к работе. Дальнейшие действия зависят от того, в каких условиях будет использоваться станция. Есть несколько файлов, в которых расписана конфигурация:

  • conf — общие настройки сервера. В нём можно указать, сколько подключено абонентов. Там устанавливают правила дозвона.
  • conf — в нём также настраивают правила дозвона и выставляют параметры звонков.
  • conf — конфигурация абонентских аккаунтов.

С Asterisk вы создадите АТС любой сложности. В нём много полезных функций и модулей. После установки и настройки вы сможете взаимодействовать со станцией при помощи клиентского программного обеспечения. Например, Linphone.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: