ФЭНДОМ


Для OS Ubuntu Server 12.04 LTS

Описание

Asterisk - это IP-PBX (IP-АТС) сокращение от PBX (УАТС) — учрежденческая телефонная станция на основе межсетевого протокола IP.

Как и обычная УАТС, IP-PBX призвана выполнять те же и другие функции. Так как почти все функции реализованы через программное обеспечение, то в IP PBX легко наращивать функционал, модернизировать их, исправлять ошибки.

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

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

FreePBX это полнофункциональный веб-интерфейс для конфигурации Asterisk IP-PBX. В то время, когда настройка Asterisk осуществляется при помощи конфигурационных файлов, FreePBX предлагает для конфигурирования и управления, простой и интуитивно понятный интерфейс .

Установка LAMPA

LAMPA - (Linux,Apache,Mysql,Php,Asterisk)

apt-get update
apt-get install lamp-server^ libmysqlclient18 asterisk-dev \
asterisk-mysql asterisk-moh-opsound-wav php-db selinux-utils audiofile-tools \
bison libset-intspan-perl curl openssl php5-gd lame sox libxml2 subversion \
dahdi-* linux-headers-`uname -r`
  • В процессе установки мастер попросит задать пароль для mysql сервера. Задаем например PaSs и запоминаем. Пустым пароль оставлять не надо!

FreePBX

Указываем пароль, который поставили при установке mysql

passwd=PaSs

Указываем версию которую хотим установить

fpbxver=2.10
  • посмотреть список доступных версий
wget -q -O- http://svn.freepbx.org/freepbx/branches/ | grep -Po "\d+.\d+(?=\/\")"

Загрузка и создание базы

svn co http://svn.freepbx.org/freepbx/branches/$fpbxver /usr/src/freepbx
cd /usr/src/freepbx
mysqladmin create asterisk -p${passwd}
mysqladmin create asteriskcdrdb -p${passwd}
mysql asterisk < SQL/newinstall.sql -p${passwd}
mysql asteriskcdrdb < SQL/cdr_mysql_table.sql -p${passwd}
echo "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${passwd}';" > /tmp/tmpfbpx
echo "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${passwd}';" >> /tmp/tmpfbpx
echo "flush privileges;" >> /tmp/tmpfbpx
echo "quit"  >> /tmp/tmpfbpx
mysql -p${passwd} < /tmp/tmpfbpx

Установка FREEPBX

Запускаем установку (заполняем параметры или оставляем по умолчанию):

rm /var/www/index.html
./install_amp --password=${passwd} --webroot=/var/www

Подтверждаем параметры

adduser www-data asterisk
/etc/init.d/apache2 restart
wget http://127.0.0.1/admin/config.php# -O /dev/null

Подготовка WEB сервера

Изменение конфигурации apache2, для корректной работы с русским языком, а так-же меняем пользователя www-data от имени которого стартует apache2 на пользователя asterisk

locale-gen ru_RU 
perl -pi -e 's/#AddDefaultCharset UTF-8/AddDefaultCharset UTF-8/g' /etc/apache2/conf.d/charset 
perl -pi -e 's/export APACHE_RUN_USER=www-data/export APACHE_RUN_USER=asterisk/g' /etc/apache2/envvars 
perl -pi -e 's/export APACHE_RUN_GROUP=www-data/export APACHE_RUN_GROUP=asterisk/g' /etc/apache2/envvars
echo "ServerName localhost" >> /etc/apache2/conf.d/vhosts.conf
rm /var/lock/apache2/ -r
/etc/init.d/apache2 restart

Загрузка модулей и обновлений

Загружаем и устанавливаем свежие модули

./setup_svn.php
./install_amp
cp amp_conf/moh/*.wav /var/lib/asterisk/moh
cd /etc/asterisk
rm ccss.conf extensions.conf logger.conf iax.conf sip.conf features.conf sip_notify.conf chan_dahdi.conf
chown asterisk:asterisk /etc/amportal.conf

Твики и допиливания

Небольшой твик для стабильной работы FOP панели, перезапускает её раз в 10 минут

chmod 770 -R /var/www/admin/modules/fw_fop
echo "*/10 * * * * root amportal restart_fop 2>/dev/null">>/etc/crontab

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

cp -r /var/lib/asterisk/sounds/ /usr/share/asterisk/
rm -r /var/lib/asterisk/sounds/
ln -s /usr/share/asterisk/sounds /var/lib/asterisk/
chown -R asterisk:asterisk /var/lib/asterisk/sounds/
chown -R asterisk:asterisk /var/lib/asterisk/sounds/custom/
echo "" >>/etc/modprobe.d/dahdi.conf
chown asterisk:asterisk /etc/modprobe.d/dahdi.conf

Если планируется загружать на сервер файлы через WEB интерфейс (например мелодии в ожидании) большого размера, нужно увеличить параметры php отвечающие за предельные размеры таких файлов. Редактируем файл:

nano /etc/php5/apache2/php.ini

Ищем параметры и устанавливаем свои значения, например 32 мбайта

post_max_size = 32M
upload_max_filesize = 32M

Перезагрузим WEB сервер.

/etc/init.d/apache2 restart

Дополнения

Русификация голоса

Загружаем и распаковываем файлы

paths=/usr/share/asterisk/sounds/
cd /tmp
wget -c http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-wav-current.tar.gz
mkdir $paths/ru
cd $paths/ru
tar zxvf /tmp/asterisk-core-sounds-ru-wav-current.tar.gz

В параметрах протоколов SIP и IAX устанавливаем language=ru

WEB интерфейс

По окончанию установки FreePBX можно подключиться к серверу через браузер для дальнейшей настройки телефонии.

  • Узнать сетевой ip адрес сервера можно выполнив команду:
ip a|grep eth0|grep inet

Подключаемся с компьютера в локальной сети на адрес

http://ип_адрес_сервера/admin
  • Логин: admin
  • Пароль: admin

DONGLE

Mts

Модем E1550 в салонах МТС

Модуль chan_dongle позволяет использовать 3G модемы производства Huaway в качестве канала связи для совершения через него голосовых звонков. Получается VoIP-GSM шлюз.

Подготовка модема

Перед началом использования модема, его необходимо подготовить. Отключить fakecd режим, разлочить иногда требуется перепрошивка и активация голоса.

apt-get install libusb-dev minicom usb-modeswitch* autoconf

Далее устройство необходимо перевести в режим - "только модем" для этого подключимся к модему через его com-порт.

minicom -D /dev/ttyUSB0

Подключаемся к модему ВАЖНО находясь в программе minicom вводимые и выполняемые команды не видны, выводится лишь от отчёт ok или error, но это не проблема копируем команды Ctrl+c вставляем Ctrl+v жмём Enter

  • Включаем режим "только модем":
AT^U2DIAG=0

Для новых модемов E171 с прошивкой 21.156.00.00.143 и IMEI начинается с 8614 требуется другая команда для включения режима модема

AT^SETPORT="A1,A2;1,2,3"
  • Проверить текущее состояние счетчика и блокировки можно командой, а то вдруг его уже разлочили или забыли заблокировать, бывает и такое...
AT^CARDLOCK?

в ответ модем выдаст

CARDLOCK: A,B,0
  • где A -> 2- означает, что симлока нет, 1-если модем залочен
  • B -> количество оставшихся попыток разблокировки.

У нового модема ==10

  • Узнать IMEI, запоминаем, а лучше записываем
AT+CGSN
  • Перезагрузить модем
AT+CFUN=1,1

Выйти из minicom - после выполнения перезагрузки модема программа порядка 5-10 секунд не реагирует, ждём, после чего для выхода выполняем [ctrl+a q] Enter Если не получается, перезапускаем консоль и переподключаем модем физически.

Загрузка и сборка модуля

svn checkout http://asterisk-chan-dongle.googlecode.com/svn/trunk/ /usr/src/chan-dongle
cd /usr/src/chan-dongle
aclocal
autoconf
automake -a
./configure
make 
make install
cp etc/dongle.conf /etc/asterisk/

Настройка параметров модуля

Создадим свой файл конфигурации, сохранив копию оригинального

cp /etc/asterisk/dongle.conf /etc/asterisk/dongle.conf.orig
echo "" >/etc/asterisk/dongle.conf
nano /etc/asterisk/dongle.conf

Впишем свои значения. Внимание, указывайте свой IMEI.

[general]
interval=15              ; Частота проверки подключеных устройств

[defaults]
context=from-gsm         ; Контекст для входящих звонков
usecallingpres=yes       ; Определять номер звонящего
callwaiting=no           ; Принимать второй звонок при активном разговоре
autodeletesms=yes        ; Удаление смс с симкарты при перезапуске
rxgain=0                 ; Изменение громкости динамика
txgain=0                 ; Изменение громкости микрофона

[GSM-001]
imei=3529ххххххххххх     ; Привязка имени модема к IMEI номеру

Создаем специальный контекст в диалплане:

nano /etc/asterisk/extensions_custom.conf
[from-gsm]
# Заменяем 7 на 8 в определившихся номерах и делаем DID равный номеру
# IMEI модема, для входящих разделения звонков с разных модемов.
exten => s,1,Set(CALLERID(all)=${CALLERID(num)})
exten => s,n,Set(CALLERID(num)=8${CALLERID(num):2})
exten => s,n,goto(from-trunk,${DONGLEIMEI},1)

# Сохраняем входящие SMS в файл /var/www/msg
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%d.%m.%Y %H:%M:%S)} - SMS  - ${DONGLENAME} - ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}' >> /var/www/msg)
exten => sms,n,Hangup()

# Сохраняем входящие сообщения USSD в файл /var/www/msg
exten => ussd,1,Verbose(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%d.%m.%Y %H:%M:%S)} - USSD - ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}' >> /var/www/msg)
exten => ussd,n,Hangup()

Создаем файл для приема SMS и USSD

echo "" >/var/www/msg
chown asterisk:asterisk /var/www/msg

Перезапускаем Asterisk

service asterisk restart

Проверяем

asterisk -rx "dongle show devices"

Настройки в Web интерфейсе

  • Для исходящих звонков

Gsm1

Gsm2

Gsm3

Gsm4

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

Дополнение - Статистика по балансу

Дополнительные работы

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

Смена пароля пользователя базы

mysql -p
SET PASSWORD FOR asteriskuser@localhost=PASSWORD('НОВЫЙ_ПАРОЛЬ');

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

nano /etc/freepbx.conf

Правим строку

$amp_conf['AMPDBPASS']  = 'НОВЫЙ_ПАРОЛЬ';

Правим пароль доступа Asterisk к базе CDR

nano /etc/asterisk/cdr_mysql.conf

Меняем строку

password = НОВЫЙ_ПАРОЛЬ