На что лучше ставить asterisk. Установка Asterisk. Затем было дело

Для установки из репозитория в debian / Ubuntu запустите из командной строки:

sudo apt-get install asterisk

Для установки из репозитория в RHEL / CentOS запустите из командной строки:

yum install asterisk

При этом будут проанализированы зависимости, и в случае отсутствия необходимых пакетов сначала будут установлены эти пакеты, а затем уже - Asterisk.

Главным недостатком такого подхода является то, что Вы не можете контролировать, какая именно версия Asterisk будет установлена. Скорее всего, это будет стабильная версия, но достаточно старая. Поэтому настоятельно рекомендую установку Asterisk из исходников. В этом случае Вы не только контролируете, какая именно версия будет установлена, но также можете выбрать необходимые компоненты, включить или отключить нужные модули Asterisk.

Установка из исходников

Установка необходимых пакетов

Вначале нужно установить дополнительные пакеты, которые необходимы для установки и работы Asterisk. Без части из этих пакетов Asterisk вообще откажется устанавливаться (к примеру, если отсутствует gcc). Без некоторых пакетов Asterisk установится и даже будет работать, однако часть функционала будет недоступна. Например, пакет bison необходим для обработки выражений в файле extensions.conf. Еще пример: libnewt необходим для работы интерфейса управления astman. Для сервера Asterisk он не требуется, но без этого пакета у Вас не будет приложения astman, которое является отдельной программой.

Для Debian / Ubuntu:

Sudo apt-get install linux-headers-`uname -r` bison flex curl sox libncurses5-dev libssl-dev libxml2-dev binutils gcc g++ ncurses-dev libsqlite3-dev make uuid uuid-dev

Для RHEL / CentOS:

Yum -y install gcc gcc-c++ make ncurses-devel libxml2-devel sqlite-devel bison kernel-headers kernel-devel openssl openssl-devel newt newt-devel flex curl sox binutils

после чего выполнить команду:
yum update
(чтобы загрузить последние обновления пакетов)

Дополнение для asterisk 12 / 13

Для asterisk 12 / 13 необходимо также установить библиотеки uuid и libjansson.

Для установки библиотеки uuid в RHEL / Centos выполните команду:
yum -y install libuuid-devel

Для установки пакета libjansson необходимо сначала подключить дополнительный репозиторий EPEL .

После этого в RHEL / CentOS нужно поставить пакет jansson-devel, выполнив команду:
yum -y install jansson-devel

Автоматизация установки необходимых пакетов

DAHDI и LibPRI

Перед установкой самого Asterisk необходимо решить для себя, устанавливать ли компоненты DAHDI и/или libpri. На официальном сайте Asterisk, в wiki-разделе () разработчики настоятельно рекомендуют устанавливать эти пакеты, даже если Вы не планируете их использовать (libpri предназначен для работы с ISDN соединениями, а DAHDI - с аналоговыми телефонными линиями - PTSN).

Если Вы решите устанавливать DAHDI и/или LibPRI, инструкции по скачиванию и установке можно взять здесь:

Загрузка и распаковка Asterisk

Переходим в каталог исходников Linux:

Cd /usr/src

для версии 1.8 это будет:

Wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8-current.tar.gz

Для версии 11 это будет:

Wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz

распаковываем asterisk - для этого выполняем команду tar:

Tar -xvzf asterisk-...tar.gz

где asterisk...tar.gz - это имя архива с asterisk, например:

Tar -xvzf asterisk-1.8-current.tar.gz

Tar -xvzf asterisk-11-current.tar.gz

Теперь нам нужно перейти в папку, которая создалась при распаковке архива. Название папки может совпадать, а может и не совпадать с именем архива. Узнать, какие папки есть в /usr/src, можно с помощью команды ls. Найдя папку, переходим в нее:

Cd asterisk-X.Y.Z

Компиляция asterisk

Перейдя в папку с исходными кодами asterisk, запускаем конфигурирование пакета перед компиляцией:

./configure

Если конфигурирование было успешным, то в конце выполнения команды на экране появится значок астериска (звездочка).

Теперь запускаем выбор компонентов пакета:

Make menuselect

Здесь Вы можете выбрать любые необходимые компоненты. Компоненты, которые выбрать нельзя, отмечены крестиками (XXX). Чтобы появилась возможность их выбрать, надо выйти из этого меню, установить недостающие пакеты (например, кодеки, приложение Festival, и так далее), и заново запустить компиляцию asterisk (начиная с команды configure).

На данном этапе рекомендуем установить поддержку русских звуковых файлов в asterisk . Если коротко: для этого перейдите в раздел Core Sound Packages, и отметьте галочками пакеты CORE-SOUNDS-EN-WAV и CORE-SOUNDS-RU-WAV. Кроме того, перейдите в раздел Extras Sound Packages и отметьте галочкой EXTRA-SOUNDS-EN-WAV. В данном случае мы выбрали установку базового голосового пакета для русского языка, а также установку базового и расширенного голосовых пакетов для английского языка (расширенного пакета звуковых файлов для русского языка непосредственно в дистрибутиве asterisk пока нет). Английский пакет рекомендуем устанавливать, поскольку в случае отсутствия нужных файлов в русском пакете, будет воспроизведен файл из английского пакета - и проблемы будет легче обнаружить.

После выбора требуемых пакетов обязательно выберите "сохранить изменения и выйти": "Save and exit".

Теперь мы запускаем самую главную (и самую длительную) часть компиляции пакета - сборку:

Если сборка прошла успешно, то в результате на экране появится текст в рамочке, сообщающий что-то вроде: "Asterisk build complete", "Asterisk has successfully been built...". Если этого не произошло, то это значит, что возникли проблемы при установке asterisk . Вероятнее всего, не установлен какой-то из пакетов, требующихся для работы asterisk (список нужных астериску пакетов см. выше, "Установка необходимых пакетов"). Как вариант, Вы можете попробовать установить другую (более новую или более старую) версию asterisk.

Если все прошло удачно, выполняем саму установку asterisk:

Make install

Если при этом на этапе make menuselect были выбраны дополнительные звуковые пакеты, asterisk скачает их из интернета перед установкой.

Если установка была успешной, Вы увидите сообщение в рамке, вида "Asterisk Installation Complete".

Если Вы делаете установку первый раз, то необходимо также создать конфигурационные файлы. Если же Вы переустанавливаете / обновляете asterisk, обязательно убедитесь, что Ваши конфигурационные файлы сохранены (или не выполняйте команду создания конфигов).

Создаем конфигурационные файлы:

Make samples

А теперь добавляем asterisk в сценарии запуска linux:

Make config

Если у Вас RHEL/CentOS, то понадобится выполнить еще одну команду:

Chkconfig asterisk on

Теперь до перезагрузки компьютера Вы можете проверить, работает asterisk или нет. Для этого в командной строке linux наберите:

Если Вы увидите сообщение "Asterisk ready", значит asterisk установлен успешно. После чего из командной строки asterisk (Asterisk CLI) наберите:

Core stop now

для остановки астериска.

Теперь Вы можете перезагрузить компьютер, и убедиться, что asterisk автоматически запускается при старте. Для этого после перезапуска (и логина под root) запустите следующую команду:

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

Проблемы при установке asterisk

При возникновении проблем, возникающих в процессе компиляции / установки / запуска asterisk, смотрите .

Asterisk, установка которого будет рассмотрена в данном материале, представляет собой программное обеспечение для организации так называемой офисной телефонной станции или IP-АТС (англ. Private Branch eXchange, PBX). Оно объединяет все телефоны в офисе в одну информационную сеть, на базе которой работают разнообразные службы голосовой связи. Asterisk работает на Linux, BSD, OS X и на Windows с использованием эмулятора.

Asterisk может осуществлять передачу голоса по четырем различным протоколам VoIP и взаимодействовать практически со всеми стандартизованными телефонными аппаратами (включая мобильные) при помощи относительно недорогого оборудования. Asterisk реализует различные возможности голосовой почты (voicemail), включая телефонный справочник, конференц-связь, интерактивный голосовой ответ и очереди вызовов.

В данном материале мы рассмотрим процесс установки Asterisk на ОС Linux, в частности на популярных дистрибутивах CentOS и Debian, а также базовые процедуры настройки сервера голосовой почты.

Установка сервера Asterisk из исходников

Для начала рассмотрим алгоритм инсталляции сервера IP-телефонии, который доступен абсолютно на любом дистрибутиве Linux, а именно сборку и установку программного обеспечения из исходного кода. Данный метод позволяет выполнить установку Asterisk с нуля.

Перед установкой сервера IP-телефонии в системе должен быть обеспечен ряд условий. Asterisk должен устанавливаться на систему, работающую на ядре версии не ниже 2.6, при этом в системе должны присутствовать файлы заголовков, чтобы программа успешно скомпилировалась. Asterisk написан на языке C, поэтому для сборки в системе должен быть установлен компилятор gcc с сопутствующими библиотеками, такими как termcap и openssl. Для сборки дополнений Asterisk также требуются предустановленные библиотеки и клиент mysql, а также соответствующие им файлы заголовков.

Когда система подготовлена для установки, вам будет необходимо перейти в раздел Download на официальном сайте и загрузить с него следующие архивы:

  1. asterisk.
  2. asterisk-sounds.
  3. asterisk-addons.
  4. zaptel.
  5. libpri.

Файлы необходимо скопировать на сервер, который будет осуществлять функции офисной АТС. Разместите их в папке /usr/src/.

После этого запустите на Перейдите в каталог с архивами и распакуйте каждый из них командой:

tar-xzf<имя_архива>tar.gz

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

cd<имя_папки>

И выполните в каждой папке нижеуказанные команды.

1. Подготовка к сборке:

2. Сборка:

3. Установка:

Если вышеприведенные команды завершатся с успешным результатом, вы соберете и установите Asterisk на своем сервере.

Процедура установки из исходников одинакова для всех дистрибутивов Linux, но не всем привычна. Как правило, большинство пользователей предпочитает методы установки, предлагаемые конкретным дистрибутивом.

В связи с этим, рассмотрим процедуры инсталляции Asterisk на двух популярных платформах для создания офисных АТС: CentOS и Debian GNU/Linux.

Установка Asterisk на CentOS

В рамках данного примера мы будем устанавливать Asterisk 13. Мы выполним установку Asterisk на CentOS 7.

Предполагается, что инсталляция будет выполняться в текстовом консольном режиме от имени суперпользователя (root).

Для начала необходимо установить все необходимые пререквизиты. Убедитесь, что в системе присутствуют все пакеты, указанные ниже. Их достаточно много:

В результате в системе будут присутствовать все зависимости, требующиеся для успешной сборки сервера телефонии Asterisk.

Следующим шагом должно стать отключение SELinux. Система безопасности Security-Enhanced Linux в CentOS включена по умолчанию и очень часто препятствует нормальному функционированию Asterisk. Поэтому для успешной настройки и работы сервера ее необходимо отключить.

Проверим статус активности системы SELinux следующей командой:

Если система сообщает, что SELinux включен, выполним процедуру отключения. Для этого необходимо внести изменения в конфигурационный файл в папке /etc/selinux, установив соответствующий флаг.

sed -i "s/\(^SELINUX=\).*/\SELINUX=DISABLED/" config

timedatectl set-timezone <имя_зоны> (например, America/Los_Angeles)

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

​timedatectl status

После этого потребуется перезагрузить систему, чтобы активировать изменения. Для этого используйте команду reboot .

Теперь непосредственно перейдем к установке Asterisk.

Фактически, установка Asterisk на CentOS сводится к той же самой сборке из исходников, с которой мы познакомились в предыдущем разделе. Здесь же мы рассмотрим процесс сборки с учетом особенностей конкретного дистрибутива Linux, а именно CentOS 7.

Для начала загрузим и установим сам сервер IP-телефонии.

Скачаем из раздела Downloads на официальном сайте продукта архив с Asterisk 13 и сохраним его в папку /usr/src. Распакуем архив командой:

tar zxvf <имя_архива>

Перейдем в папку с распакованным архивом и выполним команды, приведенные ниже.

./configure --libdir=/usr/lib64 --with-pjproject-bundled

Данная последовательность команд позволит подготовить исходники к сборке.

make menuselect.makeopts

После настройки опций компиляции выполните следующую последовательность действий:

1. Создайте отдельную учетную запись пользователя для сервера IP-телефонии.

adduser asterisk -s /sbin/nologin -c "Asterisk User"

2. Соберите и установите сервер.

make && make install

3. Задайте права доступа к Asterisk для вновь созданного пользователя.

chown -R asterisk. /var/lib/asterisk

В результате базовый сервер Asterisk будет собран и установлен.

Помимо самого Asterisk, аналогичным способом на CentOS можно установить полезные дополнения к серверу. Об этом читайте ниже.

FreePBX

FreePBX - это полнофункциональный графический Web-интерфейс, предназначенный для настройки и управления офисной АТС. Установка Asterisk с FreePBX осуществляется в нижеприведенной последовательности.

Запустим базу данных:

systemctl start mariadb

Скачаем с сайта GitHub в папку /usr/src исходный код FreePBX:

git clone -b release/13.0 https://github.com/FreePBX/framework.git freepbx

./start_asterisk start

И ряд команд для настройки FreePBX:

DAHDI

DAHDI - это драйвер, обеспечивающий взаимодействие Asterisk с различным телефонным оборудованием. Он отвечает за работу плат интерфейсов телефонии, устанавливаемых непосредственно в сервер, на котором работает Asterisk. Процедура установки DAHDI описана ниже.

Скачайте в каталог /usr/src архив с драйвером, распакуйте его и перейдите в разархивированную папку. В ней выполните команды:

PJSIP

PJSIP - это библиотека, написанная на С, которая отвечает за поддержку различных протоколов IP-телефонии. С версии Asterisk 13.8 включительно библиотека PJSIP может устанавливаться отдельно. Впрочем, если Asterisk компилируется с флагом --with-pjproject-bundled (что мы и сделали в предыдущем разделе), библиотека PJSIP будет установлена непосредственно при компиляции сервера.

Для того, чтобы установить PJSIP отдельно, требуется произвести следующую процедуру.

Скачайте с сайта pjsip.org в каталог /usr/src архив с драйвером, распакуйте его и перейдите в разархивированную папку. В ней выполните команды:

Пост-инсталляционные процедуры

По завершению установки Asterisk необходимо выполнить ряд дополнительных действий. Данные процедуры являются обязательными.

1. Установить защиту для сервера базы данных:

mysql_secure_installation

Для выполнения процедуры просто ответьте Y на все вопросы.

2. Изменить настройки веб-сервера:

3. Открыть доступ к службам и портам, необходимым для работы Asterisk:

firewall-cmd --permanent --zone=public --add-service={http,https} --add-port=5060-5061/tcp --add-port=5060-5061/udp --add-port=10000-20000/udp

4. Настроить автозагрузку базы данных:

systemctl enable mariadb

5. Настроить загрузку веб-сервера при запуске системы:

systemctl enable httpd

6. Настроить автозапуск FreePBX при загрузке системы:

nano /etc/systemd/system/freepbx.service

systemctl enable freepbx

7. Настроить соединение с базой данных через ODBC. Если установлен устаревший модуль cdr_mysql.so, этот пункт опционален, но все же рекомендуется:

nano /etc/odbc.ini

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

isql -v asteriskcdrdb

8. Перезагрузите систему, чтобы применить сделанные изменения:

Установка Asterisk 13 на Debian

В данном разделе мы рассмотрим процедуру установки на другой популярной платформе - Debian. Хорошая новость для пользователей: она относительно проста, несмотря на то, что также включает в себя сборку из исходников. В качестве примера мы выполним установку Asterisk на Debian 8.

Установка производится от имени суперпользователя (root). Откройте терминал, получите соответствующие права, после чего можно приступить к инсталляции.

Сначала загрузите Asterisk 13 с официального сайт и распакуйте загруженный архив. Перейдите в папку с распакованными исходниками.

Теперь установим необходимые зависимости. Самая важная - компилятор gcc - в Debian уже есть. Поэтому просто загрузим оставшиеся:

После того, как все зависимости загружены и установлены, выполните в папке с распакованным архивом Asterisk следующую команду:

Команда должна завершиться без ошибок. Если в результате возникнет сообщение об отсутствии некоторых зависимостей, установите их.

Перед компиляцией Asterisk есть возможность включить или отключить отдельные модули:

Будет открыто консольное приложение со списком модулей. Перемещаясь клавишами вниз и вверх по списку, вы можете включать и отключать их. Некоторые дополнительные модули требуют установки зависимостей. Это можно сделать при помощи apt-get.

Теперь приступим к компиляции Asterisk. Введите в консоли уже знакомые команды:

1. Сборка исходников:

2. Установка в системные каталоги:

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

На этом завершается установка. Asterisk успешно проинсталлирован на ваше сервер. Следующая команда вызовет консоль управления Asterisk:

asterisk -vvvvvvgc

Настройка Asterisk

Теперь рассмотрим базовые процедуры настройки сервера телефонии Asterisk. Они принципиально одинаковы для всех дистрибутивов Linux.

Для начала нужно добавить следующий текст в файл sip.conf:

Тем самым мы создадим пять учетных записей, которые могут использоваться любым клиентом SIP (Cisco SIP Phone, xlite, ATA и тому подобные). Все пользователи будут зарегистрированы в Asterisk. Если данная конфигурация не работает, попробуйте отключить сетевой экран до завершения настройки программного обеспечения.

Создание первого номерного плана

Номерной план (диалплан) предоставляет собой формализованное описание процессов обработки телефонных звонков. Диалплан в деталях указывает системе, что нужно делать с исходящими и входящими звонками. Например, Asterisk может переадресовывать их, отвечать на них при помощи автоответчика и так далее.

Откройте файл extension.conf в папке /etc/asterisk и добавьте в него строку:

exten=> _XXXX,1,Dial(SIP/${EXTEN})

Теперь все сконфигурированные клиенты SIP смогут принимать и отправлять звонки. Благодаря простоте настройки диалплана, Asterisk и является одной из самых дружелюбных платформ IP-телефонии. Не так уж и много навыков требуется, чтобы поднять офисную АТС.

Создание первого транка SIP

Asterisk может выполнять исходящие и входящие вызовы. Для исходящих вызовов нам требуется провайдер, который будет перенаправлять вызовы в нашу систему, а также публичный IP-адрес.

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

Для создания транка добавьте следующий код в файл sip.conf:

После этого нужно будет внести в extension.conf еще одну строку:

exten => _XXXXXXX.,1,Dial(SIP/trunk1/${EXTEN})

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

Заключение

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

23.02.2012 15:56

Статья, позволяющая начинающим программистам выполнить базовую настройку asterisk

Asterisk является одним из самых распространенных серверов ip-телефонии наряду с такими системами, как Switchwox и 3CX. Большую популярность данная система обрела с распространением в нашей стране качественного интернета, а также множества телефонных провайдеров, предоставляющих телефонные номера в SIP-формате или так называемые SIP-номера. Одной из таких компаний является Датагруп, которая зарекомендовала себя одним из лидеров рынка услуг связи. С удешевлением SIP-номеров появился смысл использовать современные телефонные системы ip-телефонии взамен старым аналоговым мини-атс. Это связано с широкими функциональными возможностями call-центров на базе Asterisk. При этом стоимость оборудования и настройка Asterisk практически не уступает в денежных затратах.

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

В данной статье будет рассмотрена установка asterisk v 1.6.22 на Linux Fedora Core.

Для начала установки, скачаем исходники asterisk. Для этого, выполняем в консоли сервера команды:

# 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=ru
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" <101>
disallow=all
allow=alaw
allow=ulaw
language=ru
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 описывает взаимодействия между контекстами и каналами связи, которых может быть большое множество. По сути, этот файл является основным при настройке asterisk.

Пример файла 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 - номер строчки алгоритма. В любом программном коде имеется последовательность операторов, которые выполняются по очереди. Точно также и в настройках asterisk есть такая последовательность. Единственное отличие - команды, выполняемые asterisk’ом, нумеруются. Обязательным является указание первой сточки явно. Как вы успели заметить, все контексты начинаются со строчек:

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

А вот дальнейшие строчки могут нумероваться неявно, то есть так:

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

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

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. Наши контакты .


Это статья заметка, на случай если мне нужно будет вспомнить, как настроить Asterisk для приема и отправки вызовов. Этой заметки должно хватить для настройки офисной станции на ip pbx Asterisk . До сих пор у меня не было сильного понятия и опыта, как настроить Asterisk для работы не используя FreePbx , то есть, используя только конфигурационные файлы и консоль. Да и сейчас я только учусь этому. В интернете все настройки сводятся к решению той или иной задачи, но я не увидел статьи способной дать хотя бы базу для минимальной настройки IP станции. Может плохо искал.

Итак, я собрал и установил asterisk в папке /etc/asterisk уйма конфигурационных файлов. Что же дальше?

1. Возможность внутренним абонентам совершать вызовы друг другу

2. Настройка внешних линий с целью получения станцией услуги выхода на городские, междугородние номера и приема входящих звонков

3. Настройка возможности совершать вызовы абонентам на городские и междугородние номера. И принимать вызовы из города.

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

Поэтому первое, что мы делаем - создаем внутренних абонентов (peer) в файле sip.conf

Абонент А будет иметь следующие настройки :

Disallow=all
allow=ulaw
allow=alaw
type=friend
username=101
secret=password
qualify=yes
context=101
callerid=101
host=dynamic
call-limit=1
canreinvite=yes
accountcode=101
amaflags=billing
deny=0.0.0.0/0
permit=192.168.0.66

Где:
disallow=all , запрещаем использовать все кодеки кроме G.711
allow=ulaw
allow=alaw

type=friend, этот параметр может принимать три значения:

- peer , этот тип используется для совершения входящих и исходящих вызовов. Для входящих вызовов, никогда не будет проверяться соответствие имени пользователя и пароля, а только соответствие с IP адресом и номером порта источника вызова.

- user запись, которая может только совершать входящие вызовы

- friend запись, которая одновременно и peer и user
username=101
secret=password
Логин и пароль соответственно

Периодически отправлять SIP сообщение типа Options, для проверки мониторинга доступности устройства для регистрации, полезно использовать при работе через NAT для сохранения значений в таблице трансляций

Имя контекста, с правилами маршрутизации

АОН нашего номера

host=dynamic
host ip с которого будет происходить регистрация

call-limit=1
(callcounter)
Ограничение одновременных вызов, здесь можно установить количество каналов

canreinvite=yes
(directmedia)

Этот параметр отвечает за процедуру RE- Invite , если no, то все вызовы будут проходить через Asterisk , если yes RTP поток будет отправляться между двумя устройствами минуя Asterisk

accountcode=101
amaflags=billing

CDR запись для поля accountcode будет иметь значение 101
Значение поля AMA flag для исходящих вызовов от этого SIP пользователя

deny=0.0.0.0/0
permit=192.168.0.66
ACL ip, кому разрешим регистрацию

Аналогично для абонента Б :

Disallow=all
allow=ulaw
allow=alaw
type=friend
username=102
secret=password
qualify=yes
context=102
callerid=102
host=dynamic
call-limit=1
canreinvite=yes
accountcode=102
amaflags=billing
deny=0.0.0.0/0
permit=192.168.0.67

Еще часть опций в пире которая может быть полезна:

transport=tcp,udp
Могу работать не только используя udp, требует установки tcpenable=yes в general
rtptimeout=180
rtpholdtimeout=420

Полезно для SIP клиентов, которые не выполняют Hangup при закрытии или отключении. В данном случае RTP сессия сможет сброситься самостоятельно по таймауту, rtpholdtimeout – если вызов на удержании

nat=force_rport,comedia

Если устройство находится за NAT, то фиксируем работу через rport, отправляем RTP пакеты обратно на IP адрес и порт, с которого они были получены, игнорируя информацию из SDP

defaultexpiry=60
Срок действия регистрации в секундах для входящих и исходящих регистраций

dtmfmode=rfc2833

Как будем работать с DTMF сигналами

1. Итак, задача один, настроить маршрутизацию между sip клиентами 101 и 102, в простейшем варианте решается одной строчкой в файле sip.conf и конфигах по include


exten => _XXX,1,Dial(SIP/${EXTEN},20,T)

sip.conf удобно эксплуатировать вот так:

Include => in_out_peer_local

Теперь абонент 101 сможет общаться с абонентом 102 и наоборот 102 сможет позвонить 101

2. Для создания условий, при которых внутренние абоненты смогут выходить на внешние линии, подключим станцию к оператору связи, используя все тот же sip

То есть создадим транк
type=peer
host=XX.XXX.XXX.XX
port=5060
fromdomain=ip нашей станции
nat=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
canreinvite=no
;allow=g722
trustrpid=yes
sendrpid=yes
dtmfmode=rfc2833
qualify=yes
insecure=invite,port
deny=0.0.0.0/0.0.0.0
permit=XX.XXX.XXX.XX/255.255.255.255
context=provide

Настройки транка очень похожи на настройки пира, в принципе это и есть пир, важные опции
fromdomain – устанавливаем fromdomain в sip пакете, чтобы можно было понять, куда вернуть sip пакеты нашей станции
trustrpid=yes
sendrpid=yes

Доверять или нет полученному Remote- Party- ID

insecure=invite,port

Не требуем аутентификацию входящих сообщений INVITE, не проверяем номер порта только соответствие ip адреса

3. Дело за малым, как только транк активирован, нужно прописать исходящую маршрутизацию для совершения вызовов абонентам А и Б
Стандарт де факто как бы гласит всегда сначала настраивать исходящую связь

Создаем контекст для совершения исходящих вызовов

Для исходящих вызовов на город


exten => _XXXXXX,1,Dial(SIP/ provider /${EXTEN})
exten => _XXXXXX,n,Hangup

Для исходящих вызовов на междугородние направления


exten => _8.,1,Dial(SIP/ provider /${EXTEN})
exten => _8.,n,Hangup

После того как исходящая связь заработала, настраиваем входящую

В простом случае без автоинформатора, групп и очередей это будут выглядеть так


exten => 2466754,1,Dial(SIP/${EXTEN})
exten => 2466754,n,Hangup

Аналогичным образом настраивается любая станция по принципу рассмотренных пунктов

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

  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.