ФЭНДОМ


7za x /home/siv/Загрузки/raspbian_wheezy_20130923.img.7z 
dd if=raspbian_wheezy_20130923.img of=/dev/sde ibs=1M

Русификация консолиПравить

apt-get install locales console-cyrillic
  • Добавим русскую локаль для терминала
cp /etc/locale.gen /etc/locale.gen.orig
echo "ru_RU.UTF-8 UTF-8">/etc/locale.gen
echo "en_US.UTF-8 UTF-8">>/etc/locale.gen
locale-gen
dpkg-reconfigure locales
  • Добавим поддержку русских шрифтов для консоли
dpkg-reconfigure console-cyrillic

Расширение системного раздела до размера носителяПравить

Посмотреть текущий размер

df -h|grep rootfs

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

apt-get install parted git-core
git clone http://github.com/asb/raspi-config /usr/src/rasp-config

Отключаем swap и удаляем раздел, так как он в конце образа и не позволит расширить системный раздел

swapoff /dev/mmcblk0p3
parted /dev/mmcblk0 print free
parted /dev/mmcblk0 rm 3
/usr/src/rasp-config/raspi-config

Выбираем первый пункт

1 Expand Filesystem

После перезагрузки размер системы будет расширен до предела носителя

apt-get install php5 php5-mysql libapache2-mod-php5 apache2 mysql-server mysql-client sudo
nano /etc/sysctl.conf
vm.laptop_mode = 5 // Включение режима
vm.dirty_writeback_centisecs = 6000 #время в сСк. Т.е. 100ед = 1секунда


ОписаниеПравить

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*

Далее устройство необходимо перевести в режим - "только модем" для этого подключимся к модему через его 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 Если не получается, перезапускаем консоль и переподключаем модем физически.

Загрузка и сборка модуляПравить

cd /tmp
wget http://asterisk-chan-dongle.googlecode.com/files/chan_dongle-1.1.r10.tgz
cd /usr/src
tar zxvf /tmp/chan_dongle-*
cd chan_dongle-*
./configure
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 номер модема, и направление куда звонок с этого модема направить.

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