Предисловие
Здравствуйте, меня зовут Артём, и я расскажу в этом посте Вам о том, как установить и настроить Asterisk.
Задача заключается в создании связи между несколькими android-устройствами через сервер Asterisk. Asterisk должен быть установлен и настроен на серверном компьютере с операционной системой Linux Ubuntu 12.04 LTS. Итак, начнём.
Установка
- Первым делом скачиваем Asterisk с официального сайта.
Я использовал Asterisk 1.8.10.1(11.4.0). - Распаковываем архив в текущую директорию:
tar -zxvf asterisk-11-current.tar.gz
- Дальше необходимо установить утилиту make, компилятор gcc, и несколько библиотек. Всё это выполняем командой:
sudo apt-get install make gcc libncurses5-dev openssl libxml2-dev build-essential
- Переходим в директорию исходников:
cd ./asterisk-11.4.0
- Запускаем:
./configure
- Компилируем (это может занять продолжительное время):
sudo make install
И:
sudo make config
Asterisk установлен!
Его можно запустить командой:
sudo /etc/init.d/asterisk start
Настройка
Консоль Asterisk вызывается командой:
sudo /usr/sbin/asterisk -r
Я советую запустить 2 терминала: один для действий в консоли Asterisk, а другой для прочих действий.
Конфигурация SIP.
Конфигурация протокола SIP записывается в файл /etc/asterisk/sip.conf. Изначально этого файла нет, поэтому мы должны его создать:
sudo cd /etc/asterisk
sudo touch ./sip.conf
Открываем файл для редактирования:
sudo gedit -b ./sip.conf
Устройств у нас будет много, поэтому создадим стандартный шаблон:
[standart](!)#(!) - указывает на то, что это шаблон.
type=friend#Тип SIP-клиента.
context=phones#Контекст, нужен для отделения одних груп пользователей от других.
host=dynamic#Разрешаем регистрироваться с разных ip-адресов.
Дальше пишем:
[101](standart)#Здесь указаны отдельные добавочные номера, присваеваемые устройству. (standart) указывает на то, что параметры этого номера берутся из созданного нами шаблона.
[102](standart)
В итоге sip.conf должен выглядеть так:
[general]#Про general и более подробно про структуру sip.conf опишу в следующем посте.
[standart](!)
type=friend
context=phones
host=dynamic
[101](standart)
[102](standart)
В консоли Asterisk выполняем:
sip reload#Обновление конфигурации SIP протокола. Наши настройки сохранены и вступили в силу!
Диалплан
Конфигурация диалплана находится в файле /etc/asterisk/extensions.conf
В директории /etc/asterisk создаём файл extensions.conf:
sudo cd /etc/asterisk
sudo touch ./extensions.conf
Открываем файл для редактирования:
sudo gedit -b ./extensions.conf
Структура extensions.conf:
exten => ИМЯ,ПРИОРИТЕТ,Приложение()
Имя — имя отдельного добавочного номера.
Приоритет — порядковый номер приложения для имени, т.е. Asterisk выполняет приложения для какого-то добавочного номера по порядку(значению приоритета).
Приложение() — какое-то действие.
extensions.conf должен выглядеть так:
[globals]
[general]
autofallthrough=yes
[default]
[incoming_calls]
[internal]
exten => 101, 1, Verbose(1|Extension 101)#Соединение
exten => 101, n, Dial(SIP/101, 30)#Разговор
exten => 101, n, Hangup()#Отсоединение
exten => 102, 1, Verbose(1|Extension 102)
exten => 102, n, Dial(SIP/102, 30)
exten => 102, n, Hangup()
Про струтуру extensions.conf подробнее также в следующем посте.
Выполняем в консоли Asterisk:
dialplan reload
Настройки диалплана всупили в силу!
Первый звонок
Как я говорил, вызовы будут осуществлятся между андроид-устройствами. Следовательно нужен SIP клиент, например 3CXPhone, доступный по ссылке.
Скачиваем и устанавливаем. Открываем приложение:
Заходим в меню => Profiles => Add New.
В полях Name, Display name, User и ID пишем добавочный номер(один из указанных в sip.conf).
Если доступ осуществляется не из локальной сети сервера ставим галочку I Am Out Of Office.
External PBX IP — внешний ip-адрес сервера. Local PBX IP — ip-адрес сервера внутри локальной сети.
Остальные поля не трогаем. Сохраняем профиль, устройство регистрируется и слева над клавиатурой должно быть написано On Hook.
Те же действия проделываем со всеми устройствами! Теперь можно осуществить первый вызов!
Автор: artem_tam