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

**UBUNTU Server + Asterisk 1.8 + FreePBX +GSM HUAWAY E1550**
===== 1. Установка операционной системы =====

Выполняется типовая установка ОС Ubuntu 10.04 LTS Server со следующими предустановленными компонентами:

Linux+Apache+MySql+PHP
OpenSSH Server

Локализация: русская
Везде пароли: YourPass

После установки необходимо активировать учетку root, так-как вся настройка выполянется с полными правами.
sudo passwd root
===== 2. Загрузка компонентов из сети =====

Качаем и ставим компоненты из репозитория ~44,4 Мб +~12 Мб апдейтов
apt-get update
apt-get install php5-mysql libapache2-mod-php5 mysql-server libmysqlclient15-dev php-db php5-gd php-pear sox curl g++ libncurses-dev libxml2-dev subversion libspandsp-dev

Установка драйверов DAHDI (можно не выполнять, если не нужны конференции и нет соответствующего оборудования).
apt-get install dahdi
/etc/init.d/dahdi start
cd /tmp
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.5.x+2.5.x.tar.gz
cd /usr/src
tar -zxvf /tmp/dahdi-linux-complete-2.5.x+2.5.x.tar.gz
cd dahdi-linux-complete-2.5.x+2.5.x/
make
make install
make config

Качаем исходники Asterisk и FreePBX от производителей. Ориентировочный объём: 24Мб+0.9Мб+6.2Мб

cd /tmp
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.8.x.xx.tar.gz
wget http://mirror.freepbx.org/freepbx-2.9.0.tar.gz

Распаковываем запакованные исходнички:

cd /usr/src
tar xvfz /tmp/asterisk-1.8.x.xx.tar.gz
tar xvfz /tmp/freepbx-2.9.0.tar.gz

===== 3. Устанавливаем Астериск =====

cd /usr/src/asterisk-1.8.x.xx
Download mp3 support files

contrib/scripts/get_mp3_source.sh

./configure
make menuconfig

select app_mysql, app_saycountpl, cdr_mysql, format_mp3, res_config_mysql

make
make install
make config
make samples
amportal stop
amportal start

===== 4. Конфигурируем Апач =====

Добавляем юзера и даем ему права

adduser asterisk –disabled-password –gecos “Asterisk PBX”
adduser www-data asterisk

Заставляем апач стартовать от имени юзера астериск
nano /etc/apache2/envvars

закомментируем следующие строки
#export APACHE_RUN_USER=www-data
#export APACHE_RUN_GROUP=www-data

и добавляем данные строки
export APACHE_RUN_USER=asterisk
export APACHE_RUN_GROUP=asterisk

записываем изменения Ctrl+O и выходим из редактора nano Ctrl+X

Применяем параметры апачу

apache2ctl graceful

===== 6. Ставим FREEPBX =====

==== Подготовка баз MYSQL для FREEPBX ====

cd /usr/src/freepbx-2.9.0
mysqladmin create asterisk -pYourPass
mysqladmin create asteriskcdrdb -pYourPass
mysql asterisk < SQL/newinstall.sql -pYourPass
mysql asteriskcdrdb < SQL/cdr_mysql_table.sql -pYourPass
mysql -pYourPass
GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY ‘YourPass’;
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY ‘YourPass’;
flush privileges;
quit;

==== Установка FREEPBX ====

Запускаем Астериск перед установкой Freepbx

/etc/init.d/asterisk start

Запускаем установку:
./install_amp

ВАЖНО остальные параметры __кроме указанных__, менять НЕЛЬЗЯ!!! Параметры которые надо поменять в мастере установки:

Enter your PASSWORD to connect to the ‘asterisk’ database:
[amp109] YourPass

Enter a PASSWORD to connect to the Asterisk Manager interface:
[amp111] YourPass

Enter the path to use for your AMP web root:
[/var/www/html]
/var/www/freepbx

Enter a PASSWORD to perform call transfers with the Flash Operator Panel:
[passw0rd] YourPass

==== Корректировка параметров FreePBX после установки для его правильной работы ====

nano /etc/amportal.conf
Коментируем параметр, для работы FOP (флеш панель):
#AMPWEBADDRESS=xx.xx.xx.xx
Исправляем параметр для включения авторизации доступа к web-админке и хранения учеток в базе данных (по умолчанию adminadmin):
AUTHTYPE=database
Исправляем пароль авторизации доступа к web-админке по управлению записями разговоров.
ARI_ADMIN_PASSWORD=YourPass
записываем изменения Ctrl+O и выходим из редактора nano Ctrl+X

Исправление, для включения русского языка в web-интерфейсе FreePBX

nano /usr/share/locale/locale.alias
Удаляем строку с кодировкой для russian и добавляем 3 строки вместо нее:

russian ru
ru ru_RU
ru_RU ru_RU.UTF-8

Затем:

#locale-gen ru_RU
#/etc/init.d/apache2 restart

записываем изменения Ctrl+O и выходим из редактора nano Ctrl+X

Делаем автостарт
nano /etc/rc.local
дописываем перед строчкой exit 0 следующую строчку
/usr/local/sbin/amportal start

Перезагружаем сервер для проверки успешного автозапуска.
reboot
==== Обновление и получение модулей FreePBX с сервера разработчка ====
Заходим в web-админку
http://192.168.0.xxx/freepbx/admin (admin/admin)

Первым делом применяем параметры конфигурации

“Управление модулями” -> “Проверить обновление on-line” -> “Скачать все” -> “Обновить все” -> “Запустить процесс”

Прокручиваем список обновляемых модулей вниз жмем “Подтвердить”

в процессе выполнения в случае остановки процесса, его необходимо повторить пока все не обновится!

===== 7. Подключение модема HUAWEI e1550 к Asterisk =====

==== Некоторые приготовления перед подключением модема ====

Обновление прошивок: http://www.dc-files.com/files/huawei/modems/E1550/

Обязательное условие – отключение встроенных в модем устройств – (кард-ридер и вируальный CD-ROM с ПО для Windows). Для этого необходимо через терминал подключиться к консоли модема и выполнить AT комманду AT^U2DIAG=0. Если этого не сделать, то появится проблема с переподключениями модема по причине некорректного отмонтирования портов устройств.

==== Установка модуля DATACARD ====

Получение текущих исходников из SVN и сборка модуля:
svn co http://www.makhutov.org/svn/chan_datacard/trunk/ /usr/src/chan_datacard

cd /usr/src/chan_datacard
./configure
make install
cp etc/datacard.conf /etc/asterisk

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

nano /etc/asterisk/datacard.conf
в самом низу конфигурационного файла удаляем все данные (Ctrl+k) после последней черты и вставляем данный конфиг

nomer unknown

datacard cmd datacard4 AT+CPBS=\”ON\”
datacard cmd datacard4 AT+CPBW=1,\”+380937301623\”,145

[datacard1]
context=from-gsm ; context для входящих звонков
audio=/dev/ttyUSB1 ; tty порт для аудио подключения
data=/dev/ttyUSB2 ; tty порт для управляющих AT комманд модема
group=1 ; Группа вызова
rxgain=10 ; Изменение громкости динамика
txgain=-5 ; Изменение громкости микрофона
resetdatacard=yes ; Перезагрузка модема при перезапуске модуля
autodeletesms=yes ; Удаление смс с симкарты при перезапуске
usecallingpres=yes ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation

записываем изменения Ctrl+O и выходим из редактора nano Ctrl+X

Создаем специальный контекст в диалплане:
nano /etc/asterisk/extensions_custom.conf

[from-gsm]
exten => s,1,Set(CALLERID(all)=${CALLERID(num)})
exten => s,n,Set(CALLERID(num)=${CALLERID(num):3})
exten => s,n,Set(CDR(accountcode)=${CALLERID(num)})
exten => s,n,goto(from-trunk,${IMEI},1)

exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} – ${DATACARD} – ${CALLERID(num)}: ${SMS}’ >> /var/log/asterisk/sms.txt)
exten => sms,n,Hangup()

exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} – ${IMSI} – ${IMEI} – ${DATACARD}: ${USSD}’ >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()

exten => cusd,1,Verbose(Incoming CUSD: ${CUSDTXT})
exten => cusd,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} – ${CHANNEL}: ${CUSDTXT}’ >> /var/log/asterisk/cusd.txt)
exten => cusd,n,Hangup()

Перезапускаем Asterisk
service asterisk restart

==== Методы контроля и управления модемом ====

Проверка состояния модема
asterisk -r
datacard show devices

Отключаем и включаем питание конкретному модему:

Определяем порт:
dmesg usb | grep ttyUSB
смотрим последнюю строку:
[ 5191.602917] usb 1-3.5: GSM modem (1-port) converter now attached to ttyUSB3
Отключаем и включаем питание устройсту usb 1-3.5
echo suspend > /sys/bus/usb/devices/1-3.5/power/level
echo on > /sys/bus/usb/devices/1-3.5/power/level

Послылаем модему команду перезагрузки
datacard cmd 000101 AT+CFUN=1,1

==== Настройка FreePBX для работы с модемами ====

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

Конфигурация => Транки => Добавить специальный транк => Исходящие настройки Специальный набор => datacard/i:123456789012345/$OUTNUM$
где 123456789012345 (IMEI модема)
* Создаем исходящий маршрут

Конфигурация => Исходящая маршрутизация => math patern => . (ставим точку в это поле), а в Trunk Sequence for Matched Routes выбираем наш транк.
{{:match_pattern.png?500|}}
* Делаем входящий маршрут
Конфигурация => Входящая маршрутизация => Добавить входящий маршрут => Номер DID => 123456789012345 (IMEI модема), а в “Установить направление” выбрать получателя звонков, поступающих на модем.

===== 9. Руссификация озвучки =====

Скачиваем файлы в формате wav ~20 Mb
cd /tmp
wget http://195.242.215.60/ivr/asterisk-sounds-ru-wav.tar.gz
cd /var/lib/asterisk/sounds
tar xvfz /tmp/asterisk-sounds-ru-wav.tar.gz

Включаем русскоязычную озвучку для протоколов, например для SIP, через WEB-интерфейс

Инструменты => Asterisk SIP Settings => language => ru

Поставить галочки:

NAT => no

IP Configuration => Public IP

===== 10. Взаимодействие со сторонним внешним ПО =====

==== Доступ к mysql ====

nano /etc/mysql/my.cnf
Комментируем строку:
# bind-address = 127.0.0.1

записываем изменения Ctrl+O и выходим из редактора nano Ctrl+X

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

mysql –user=root mysql –pass=YourPass
GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY ‘some_pass’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@”%”
IDENTIFIED BY ‘some_pass’ WITH GRANT OPTION;
quit;

Перезапускаем MYSQL
/etc/init.d/mysql restart

==== Доступ к AMI ====

Редактируем файл:
nano /etc/asterisk/manager.conf

Дописываем в секцию
[general]
webenabled = yes

[admin]
enabled = yes
secret = YourPass
permit=0.0.0.0/0.0.0.0
read = all,system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan,originate
write = all,system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan,originate

соответственно удаляем строки
deny=0.0.0.0/0.0.0.0

записываем изменения Ctrl+O и выходим из редактора nano Ctrl+X

Делаем подключение к AMI через HTTP

Редактируем файл
nano /etc/asterisk/http.conf
Раскоменчиваем:

enabled=yes
enablestatic=yes
bindaddr=0.0.0.0/0
bindport=8088
prefix=asterisk

записываем изменения Ctrl+O и выходим из редактора nano Ctrl+X

перезапускаем Asterisk
service asterisk restart

Логинимся:
http://192.168.0.218:8088/asterisk/manager?action=login&username=admin&secret=YourPass

Получаем информацию о текущих звонках (нужно производить запросы постоянно, при простое происходит отлогивание)
http://192.168.0.218:8088/asterisk/manager?action=Status

==== Прямой доступ к файлам через Апач ====

Добавляем симлинк
ln -s /var/spool/asterisk/monitor/ /var/www

Доступ через http://192.168.0.218/monitor/

===== 11. Основные настройки FreePBX =====

заходим во FreePBX
http://ip_adress_servera/freepbx

выбираем пункт
FreePBX Administration

при первом входе следует применить настройки

выбираем русский язык
применяем настройки

слева в панели “ОСНОВНОЙ” выбираем пункт “Внутренние номера”
выбираем “Какое-то SIP устройство” жмем “Сохранить”

Далее выбираем и заполняем следующие поля:

“Внутренний номер пользователя” указываем номер телефона

“Отображаемое имя” указываем отображаемое имя абонента

“Secret” указываем пароль

“Запись входящих” выбираем всегда

“Запись исходящих” выбираем всегда

*.sh
#!/bin/bash
/usr/sbin/asterisk -rx “datacard sms datacard4 0978442044 Server Asterisk is already to SMS111111”
/usr/sbin/asterisk -rx “datacard sms datacard1 0978442044 Server Asterisk is already to SMS222222”
/usr/sbin/asterisk -rx “datacard sms datacard3 0978442044 Server Asterisk is already to SMS333333”

запускать только с терминала или консоли астериска !!!
datacard sms(команда для отправки смс) datacard4(устройство гсм) 0978442044(номер куда) Server Asterisk is already to SMS111111(текст)

АВТО ДОЗВОН И ОПОВЕШЕНИЕ

1 подкидывать в /var/spool/asterisk/outgoing/
*.call

Channel: Local/0504632748@from-internal (кому звоним “050 4632748” и через что “внутрений канал” )
Callerid: 5555 (кто звонит)
MaxRetries: 2    (сколько раз звонить)
RetryTime: 20
WaitTime: 60
Context: from-internal (может быть avtocall)
Extension: 22 (куда направить)
Priority: 1

2 /etc/asterisk/extension.conf

[autocall]
exten => 5555,1,Answer
exten => 5555,n,Wait(1)
exten => 5555,n,Background(/var/lib/asterisk/sounds/ua/1009_ua)
;exten => 5555,n,Background(/var/lib/asterisk/sounds/monitoring/Down)
;exten => s,n,Background(/var/lib/asterisk/sounds/monitoring/provider-a)
;exten => s,n,Background(/var/lib/asterisk/sounds/monitoring/bye)
exten => 5555,n,hangup

-----------------------------------------------------------------------------