Установка Asterisk 11 + FreePBX + dongle

Published on 08.10.2015

 

 

Поставили задачу запилить Астериск на тонкий клиент, где всего 2гб памяти. Потому FreePBX Distro не захотел ставится (1400 по систему, 500 под бут, 500 под свап). Пришлось ставить все поштучно и по порядку.
UPD в экстеншене донгла смотрим кол-во запятых

CentOS

Пришлось поизвращаться. Тонкие клиенты от HP старые, потому CentOS на них ставится только 6 (я выбрал конкретно 6.7). Причем архитектура i386. Вы же берите, что подходит под вашу систему.

Памяти мало, потому режем все. Создаем раздел 100мб с точкой монитрования /boot.  затем делаем volume group и добавляем разделы — 192 мб под своп, остальное под /.

Делаем минимальную установку.

Затем обновляем пакеты и ставим пакеты для продолжения установки

yum -y update
yum groupinstall core
yum groupinstall base
yum install gcc gcc-c++ lynx bison mysql-devel mysql-server doxygen php php-mysql php-pear php-mbstring tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel subversion kernel-devel git subversion kernel-devel php-process crontabs cronie cronie-anacron sqlite-devel

Отключим SELinux, он мешает запуску консоли:

nano /etc/selinux/config
set SELINUX=disabled

Временно отключим iptables

chkconfig Iptables --list
chkconfig --level 0123456 iptables off
service iptables stop

Автозапуск MySQL

chkconfig --level 345 mysqld on
service mysqld start

Автозапуск Apache

chkconfig --level 345 httpd on
service httpd start

Установка PearDB (warning игнорим)

pear install db-1.7.14

С этим разобрались. Перезагружаемся.
Asterisk

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

fdisk  -l

Ищем нашу флешку (я ориентировался по размеру)

mkdir /mnt/flash
mount -t vfat -o rw /dev/sdb1 /mnt/flash

Первая строчка — создаем папку под монитрование, вторая — монтируем файловую систему FAT (-t vfat), доступную для чтения и записи (-o rw), устройство (/dev/sbd1) в точку монтирования (/mnt/flash).

После этого я добавил монтирование в cron.

crontab -e

и добавляем туда строчку.

@reboot mount -t vfat -o rw /dev/sdb1 /mnt/flash

А теперь приступим к астериску. Качаем на флешку исходники

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

И устанавливаем

UPD На пером тонком клиенте у меня ./configure прошел отлично, второй раз начал ругаться на asteriskssl.so. Я SSL все равно не использую, потом добавил --disable-asteriskssl

tar xvfz asterisk-11-current.tar.gz
cd asterisk-*
make clean && make distclean
./configure --disable-asteriskssl
make menuselect

В окне выбираем «Save & Exit». Продолжаем установку

make
make install
make config
make progdocs

Последний пункт формирует доки по программе, у меня он этого сделать не смог, т.к. я предварительно снес папку docs (экономил место). Без выполнения этой команды тоже прекрасно работает.

FreePBX

Работаем все с той же флешки

export VER_FREEPBX=2.11
git clone http://git.freepbx.org/scm/freepbx/framework.git freepbx
cd freepbx
git checkout release/${VER_FREEPBX}

Создаем пользователя и даем права

adduser asterisk -M -c "Asterisk User"
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk
mkdir /var/www/html
chown -R asterisk. /var/www/

Редактируем Apache

sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_orig
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
service httpd restart

Создаем базу

export ASTERISK_DB_PW=amp109
mysqladmin -u root create asterisk
mysqladmin -u root create asteriskcdrdb
mysql -u root asterisk < SQL/newinstall.sql
mysql -u root asteriskcdrdb < SQL/cdr_mysql_table.sql

Даем права пользователю в MySQL

mysql -u root -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
mysql -u root -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
mysql -u root -e "flush privileges;"

И, собственно, ставим сам FreePBX

./start_asterisk start
./install_amp
amportal a ma installall
amportal a reload
ln -s /var/lib/asterisk/moh /var/lib/asterisk/mohmp3
amportal start

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

chan_dongle

А теперь пора прикрутить модем. Мне достался E1550 с разлоченым голосом, так что настроек осталось минимум. Продолжаю работать на флешке, т.к. места все меньше. Качаем исходники модуля:

yum install asterisk-devel
wget https://github.com/jstasiak/asterisk-chan-dongle/archive/asterisk11.zip

Разархивируем и подготавливаем:

unzip asterisk11.zip
cd asterisk-chan-dongle-asterisk11
aclocal
autoconf
automake -a

Тут может возникнуть много проблем. Мне помогло

autoremake -a -i

Как вариант

ln -s /usr/share/automake-*/config.sub config.sub
ln -s /usr/share/automake-*/config.guess config.guess

Но это нельзя делать на FAT32 флешке.

И пошли дальше.

# ./configure && make
# cp chan_dongle.so /usr/lib64/asterisk/modules/
# cp etc/dongle.conf /etc/asterisk

Сразу добавим правило для доступа астериска к модему

nano /etc/udev/rules.d/10-modem.rules
KERNEL=="ttyUSB*", OWNER="asterisk", GROUP="dialout"

Рестартим Астериск и в консоли пишем

dongle show devices

Тут мы должны увидеть наш модем. IMEI и ISEI переносим в конфиг в /etc/asterisk/dongle.conf.z

Для вхоядщих звонков в файле /etc/asterisk/extension_custom.conf доавляем

[default]
exten => phonenumber,1,Set(CALLERID(all)=${CALLERID(num):3})
exten => phonenumber,n,Dial(SIP/Phone,,KTt)

Где phonenumber это номер телефона, определившийся ранее и Phone это внутренний номер телефона.

Для исходящих создаем кастомный сип транк, в качестве номера указываем IMEI и поле Custom Dial String заполняем так

dongle/i:imeinumber/$OUTNUM$

Где imeinumber собственно imei/

Taz
Author: Taz

Posted in:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *