Это старая версия документа!
Содержание
Дата написания: апрель 2020 г.
Автор: Graf
VOIP Server (Asterisk+FreePBX) |
---|
Дано:
IP сервера, где все это будет стоять - 192.168.10.234
ASTERISK
Если вы собираетесь использовать аппаратные интерфейсы ISDN (например, карты T1/E1/J1/BRI), настроить взаимодействие Asterisk с аналоговыми и цифровыми телефонами, включая подключения к телефонной сети общего пользования или PSTN, и планируете использовать приложение набора номеров MeetMe,то сначала, вам необходимо установить библиотеки libpri и DAHDI (бывший Zaplet).
Если вышеперечисленное вы не будете использовать, то устанавливать эти библиотеки нет необходимости и можно перейти сразу к установке Asterisk.
Первым делом установим последнюю (на день написания статьи - 3.1.0) версию DAHDI.
Скачаем, соберём, создадим пакет и установим его.
# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-3.1.0.tar.gz # tar xf ./dahdi-linux-3.1.0.tar.gz # cd ./dahdi-linux-3.1.0 # make # make install DESTDIR=/tmp/dahdi-linux-3.1.0 # cd /tmp/dahdi-linux-3.1.0/ # makepkg -l y -c n /tmp/dahdi-linux-3.1.0-x86_64-1.txz # upgradepkg --install-new /tmp/dahdi-linux-3.1.0-x86_64-1.txz
Далее установим последнюю (на день написания статьи - 3.1.0) версию dahdi-tool.
Скачаем, сконфигурируем, соберём, создадим пакет и установим его.
# wget http://downloads.asterisk.org/pub/telephony/dahdi-tools/dahdi-tools-3.1.0.tar.gz # tar xf ./dahdi-tools-3.1.0.tar.gz # cd dahdi-tools-3.1.0 # autoreconf -i #./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --libdir=/usr/lib64 \ --includedir=/usr/include # make # make install DESTDIR=/tmp/dahdi-tools-3.1.0 # make install-config DESTDIR=/tmp/dahdi-tools-3.1.0 # cd /tmp/dahdi-tools-3.1.0/ # makepkg -l y -c n /tmp/dahd-tools-3.1.0-x86_64-1.txz # upgradepkg --install-new /tmp/dahd-tools-3.1.0-x86_64-1.txz
Теперь, cкачаем, соберём, создадим пакет и установим последнюю версию ( на день написания статьи - 1.6.0) библиотеки libpri.
# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.6.0.tar.gz # tar xf ./libpri-1.6.0.tar.gz # cd libpri-1.6.0 # make # make install DESTDIR=/tmp/libpri-1.6.0 # cd /tmp/libpri-1.6.0/ # makepkg -l y -c n /tmp/libpri-1.6.0-x86_64-1.txz # upgradepkg --install-new/tmp/libpri-1.6.0-x86_64-1.txz
Собственно, сборка и установка последней (на день написания статьи -17.3.0) версии Asterisk.
# sbopkg -Bki "libedit jansson" # wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-17.3.0.tar.gz # tar xf ./asterisk-17.3.0.tar.gz # cd asterisk-17.3.0 # ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --libdir=/usr/lib64 \ --includedir=/usr/include
Выбираем опции, подробнее об опциях ТУТ.
# make menuselect # make # make install DESTDIR=/tmp/asterisk-17.3.0
---> IMPORTANT INFORMATION ABOUT format_mp3 <--- *** *** *** *** format_mp3 has been selected to be installed, but the *** *** MP3 decoder library has not yet been downloaded into *** *** the source tree. To do so, please run the following *** *** command: *** *** *** *** $ contrib/scripts/get_mp3_source.sh
Так и делаем
# ./contrib/scripts/get_mp3_source.sh
должны подгрузиться файлы, и повторяем
# make install DESTDIR=/tmp/asterisk-17.3.0
Устанавливаем веб интерфейс для голосовой почты, для этого изменим в файле ./Makefile строку
HTTP_DOCSDIR=/var/www/htm
на
HTTP_DOCSDIR=/var/www/htdocs
и говорим
# make webvmail
Создадим скрипт для запуска asterisk - rc.asterisk, положим его в /etc/rc.d/ и не забудем дать права на запуск.
#!/bin/sh AST_CONFIG=/etc/asterisk AST_SBIN=/usr/sbin . /etc/rc.d/init.d/functions if ! [ -x $AST_SBIN/asterisk ] ; then echo "ERROR: /usr/sbin/asterisk not found" exit 0 fi if ! [ -d $AST_CONFIG ] ; then echo "ERROR: $AST_CONFIG directory not found" exit 0 fi DAEMON=$AST_SBIN/asterisk SAFE_ASTERISK=$AST_SBIN/safe_asterisk CONFIG0=`readlink $0` if [ "$CONFIG0" = "" ]; then CONFIGFILE=/etc/sysconfig/`basename $0` else CONFIGFILE=/etc/sysconfig/`basename $CONFIG0` fi [ -x $CONFIGFILE ] && . $CONFIGFILE RETVAL=0 start() { # Start daemons. echo -n $"Starting asterisk: " if [ -f $SAFE_ASTERISK ] ; then DAEMON=$SAFE_ASTERISK fi if [ $AST_USER ] ; then ASTARGS="-U $AST_USER" fi if [ $AST_GROUP ] ; then ASTARGS="$ASTARGS -G $AST_GROUP" fi if [ $AST_CONFIG ]; then ASTARGS="$ASTARGS -C $AST_CONFIG" fi daemon $DAEMON $ASTARGS RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/asterisk echo return $RETVAL } stop() { # Stop daemons. echo -n $"Shutting down asterisk: " killproc asterisk RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/asterisk echo return $RETVAL } restart() { stop start } reload() { $DAEMON -rx 'reload' > /dev/null 2> /dev/null } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; condrestart) [ -f /var/lock/subsys/asterisk ] && restart || : ;; status) status asterisk ;; *) echo "Usage: asterisk {start|stop|restart|reload|condrestart|status}" exit 1 esac exit $?
Стартуем asterisk
# /etc/rc.d/rc.asterisk start
Заходим в консоль астериска, дабы убедиться, что он работает
# asterisk -rvvv Asterisk 1.6.2.20, Copyright (C) 1999 - 2010 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= == Parsing '/etc/asterisk/asterisk.conf': == Found == Parsing '/etc/asterisk/extconfig.conf': == Found Connected to Asterisk 1.6.2.20 currently running on XXXXX (pid = 3718) Verbosity is at least 3 *CLI>
Как видим - работает!
Для выхода из консоли нужно набрать exit
FreePBX
Настроим MySQL.
# mkdir /var/lib/mysql/mysql # mysql_install_db # chown -R mysql.mysql /var/lib/mysql # /etc/rc.d/rc.mysqld start # mysql mysql> set password for 'root'@'localhost' = password('mypassword'); mysql> FLUSH PRIVILEGES; mysql>\q
Правим /etc/httpd/httpd.conf
# Uncomment the following line to enable PHP: # Include /etc/httpd/mod_php.conf
Правим /etc/httpd/php.ini
upload_max_filesize = 50M date.timezone = Europe/Moscow max_execution_time = 600
Перезапуск апач (apache)
# /etc/rc.d/rc.httpd restart
Скачиваем FreePBX, распаковываем и в каталоге с программой создаем таблицы (вводим рутовый пароль мускула):
# mysqladmin create asteriskcdrdb -p # mysql -u root -p asteriskcdrdb < ./SQL/cdr_mysql_table.sql # mysqladmin create asterisk -p # mysql -u root -p asterisk < ./SQL/newinstall.sql
Даем права на базы.
# mysql -u root -p mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'пароль'; mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'можно тот же пароль'; mysql> FLUSH PRIVILEGES; mysql> quit
Даем права на каталоги.
# chown –R asterisk:asterisk /var/lib/asterisk # chown –R asterisk:asterisk /var/log/asterisk # chown –R asterisk:asterisk /var/run/asterisk # chown –R asterisk:asterisk /var/spool/asterisk # chown –R asterisk:asterisk /usr/lib/asterisk # chmod –R 0770 /var/lib/asterisk # chmod –R 0770 /var/log/asterisk # chmod –R 0770 /var/run/asterisk # chmod –R 0770 /var/spool/asterisk # chmod –R 0770 /usr/lib/asterisk
Перезапускаем апач(apache) и астериск(asterisk):
# /etc/rc.d/rc.httpd restart # /etc/rc.d/rc.asterisk restart
Если версия FreePBX > 2.8.x.x, то редактируем файл ./amp_conf/htdocs/admin/librarie/utility.functions.php, комментируя использование функции dbug_write()
//dbug_write($txt); if ($dump==1) {//force output via var_dump ob_start(); var_dump($msg); $msg=ob_get_contents(); ob_end_clean(); //dbug_write($msg."\n\n\n"); elseif(is_array($msg)||is_object($msg)) { //dbug_write(print_r($msg,true)."\n\n\n"); else { //dbug_write($msg."\n\n\n")
Устанавливаем PEAR DB:
# pear install DB
В каталоге с FreePBX устанавливаем его и отвечаем на вопросы.
# ./install_amp Checking for PEAR DB..OK Checking for PEAR Console::Getopt..OK Checking user..OK Checking if Asterisk is running..running with PID: 4240..OK Checking for /etc/amportal.conf../etc/amportal.conf does not exist, copying default Creating new /etc/amportal.conf Enter your USERNAME to connect to the 'asterisk' database: [asteriskuser] Enter your PASSWORD to connect to the 'asterisk' database: [amp109] _пароль_что_дали_в_мускуле_ Enter the hostname of the 'asterisk' database: [localhost] Enter a USERNAME to connect to the Asterisk Manager interface: [admin] Enter a PASSWORD to connect to the Asterisk Manager interface: [amp111] _пароль_под_которым_будет_заходить_admin_в_гуй_ (не понятно зачем надо, ибо все равно входим с паролем «admin») Enter the path to use for your AMP web root: [/var/www/html] /var/www/htdocs// Enter the IP ADDRESS or hostname used to access the AMP web-admin: [xx.xx.xx.xx] _IP_для_подключения_к_веб_морде_по_сети (я дал 192.168.10.234) Enter a PASSWORD to perform call transfers with the Flash Operator Panel: [passw0rd] _пароль_для_подключения_к_панели_оператора_ Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]? [extensions] Enter directory in which to store AMP executable scripts: [/var/lib/asterisk/bin] Enter directory in which to store super-user scripts: [/usr/local/sbin] /usr/sbin Please update your modules and reload Asterisk by visiting http://192.168.10.234/admin ************************************************************************* * Note: It's possible that if you click the red 'Update Now' bar BEFORE * * updating your modules, your machine will start dropping calls. Ensure * * that all modules are up to date BEFORE YOU CLICK THE RED BAR. As long * * as this is observed, your machine will be fully functional whilst the * * upgrade is in progress. * *************************************************************************
Если вдруг ошиблись или выдало ошибку, после исправления удаляем файл /etc/amportal.conf и заново устанавливаем. Или говорим
#./install_amp --username=asteriskuser --password=пароль_что_дали_в_мускуле
Для верности:
# amportal stop # amportal start Fetching FreePBX settings with gen_amp_conf.php.. SETTING FILE PERMISSIONS Permissions OK STARTING ASTERISK Asterisk Started STARTING FOP SERVER FOP Server Started
Для входа в FreePBX используем логин-пароль admin admin
Для смены пароля: ( взято с opencsta.org )
создаем файл new-freepbx-password.php вот с таким содержимым:
<?php $newpassword = 'somethingNEW123'; echo sha1($newpassword) ; ?>
Далее командуем:
# chmod a+x new-freepbx-password.php # php -f new-freepbx-password.php 658b27d9ab363eaab080ea65da35ceed21908fe5
Копируем в буфер полученное значение и в мускуле вставляем в таблицу:
# mysql -u root -p Enter password: mysql> use asterisk; Database changed mysql> update ampusers set password_sha1 = '658b27d9ab363eaab080ea65da35ceed21908fe5' where username = 'admin' limit 1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> quit
Все, можно входить во FreePBX:
login: admin
пароль: somethingNEW123
Объединение
Для удобства приведем файл /var/www/htdocs/index.html к вот такому виду:
<HTML> <HEAD> <head> <title>FreePBX</title> <meta http-equiv="Content-Type" content="text/html"> <link href="mainstyle.css" rel="stylesheet" type="text/css"> </head> <body> <div id="page"> <div class="header"> <a href="index.php"><img src="admin/images/freepbx.png"/></a> </div> <div class="message"> Welcome to company ! </div> <div class="content"> <h4><a href="recordings/index.php">Voicemail & Recordings (ARI)</a></h4> <h4><a href="panel/index.php">Flash Operator Panel (FOP)</a></h4> <h4><a href="admin/index.php">FreePBX Administration</a></h4> <h4><a href="vtigercrm/index.php">VtigerCRM</a></h4> <br><br><br><br><br><br> </div> <------></div> </body> </html>
И настроим Vtiger для звонков. ( PBX_Manager_Module )
Необходимо, что бы внутренние номера пользователей уже были в Asterisk'е !
Для связи с Asterisk'ом:
Настройки → Менеджер Модулей → Менеджер PBX
Далее, для каждого пользователя тигра вводим его внутренний номер и разрешаем звонки.
Мои Настройки →Конфигурация Asterisk
Чтобы звонки поступали в vtiger надо запустить скрипт, а еще лучше, добавить путь к скрипту в /etc/rc.d/rc.local - чтоб стартовал при пуске системы.
# /var/www/vtigercrm/cron/modules/PBXManager/AsteriskClient.php Connecting to asterisk server @ 2011-11-14 07:16:05 Connected successfully Trying to login to asterisk Logged in successfully to asterisk server
Перед запуском скрипта или в случаи ошибки проверим файл /etc/asterisk/manager.conf, если нужно поправим и рестартуем asterisk.
[general] enabled = yes port = 5038 bindaddr = 0.0.0.0 displayconnects=no ;only effects 1.6+ [admin] secret = пароль deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
Сюда же можно добавить отдельного пользователя для соединения vtiger.
Теперь, после заведения контрагента (клиента), кликаем на на его номер телефон и звоним прямо из vtiger. При этом сначала звонок идет на ваш внутренний номер и появляется такое окошко .
Обсуждение на форуме