wiki:articles:voip - Wiki на Slackware.su
VOIP Server (Asterisk+FreePBX+VTiger CRM)


НЕ УСТАНАВЛИВАЙТЕ ПАРОЛИ СО СПЕЦ СИМВОЛАМИ (!»№;%:?*()_=+) !!!

Дано:
IP сервера, где все это будет стоять - 192.168.10.234

VTIGER

Скачиваем последнюю версию vtigercrm в исходных кодах *.tar.gz с сайта VTiger
Распаковываем файл в /var/www/htcdocs и настроим MySQL.

 # mkdir /var/lib/mysql/mysql
 # mysql_install_db
 # chown -R mysql.mysql /var/lib/mysql/mysql
 # /etc/rc.d/rc.mysqld start
 # mysql 
 
 mysql> set password for 'root'@'localhost' = password('mypassword'); 
 mysql> FLUSH PRIVILEGES;
 mysql>\q

Создаём пользователя и группу:

 # mkdir /var/lib/asterisk
 # groupadd asterisk
 # useradd -c "asterisk PBX" -d /var/lib/asterisk -g asterisk asterisk 

Правим /etc/httpd/httpd.conf

 User asterisk
 Group asterisk
  # Uncomment the following line to enable PHP:
  #
 Include /etc/httpd/mod_php.conf

Правим /etc/httpd/php.ini

 upload_max_filesize = 20M 
 date.timezone = Europe/Moscow
 display_errors =  On
 max_execution_time = 600
 error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
 allow_call_time_pass_reference = On
 log_errors = Off
 short_open_tag = On

Даем права

 # chown -R asterisk:asterisk /var/www/htdocs/vtigercrm
 # chown -R asterisk:asterisk /var/lib/php

Перезапуск апач (apache)

 # /etc/rc.d/rc.httpd restart

Запускаем инсталятор через браузер http://192.168.10.234/vtigercrm/index.php
Согласимся с лицензией и должны увидеть такое окно:


Далее скажет, что не все параметры совпадают (потому, что есть NOT RECOMMENDED), говорим «Next» и видим такое окно;
( в левом окне пароли к мускулу, в правом пароль admina для входа в vtiger )


Проверив все введенные данные, говорим «Next» и по завершению получаем эти два окна:


Входим в систему, введя пароль, тот что задали при инсталляции.


Русифицируем vtiger:
Берем последнюю версию русской локали.Заходим в Settings → Module Manager → Custom Modules → Import New Выбираем скачанный файл (*.zip), нажимаем на кнопки «Import» и «Yes»
Перезаходим, выбрав русский язык в окне приглашения и получаем русский ТИГР :)

Если сменили пароль в мускул уже после установки vtiger, то заходим в мускул и говорим:

 # mysql -u root -p
 
 mysql> GRANT ALL PRIVILEGES ON vtigercrm521.* TO 'root'@'%' IDENTIFIED BY 'пароль_root';
 mysql> FLUSH PRIVILEGES;
 mysql>\q

ASTERISK

Скачиваем, распаковываем и устанавливаем последнюю версию DAHDI:

 # make
 # make install

Скачиваем, распаковываем и устанавливаем последнюю версию DAHDI-tools:

 # ./configure
 # make
 # make install
 # make config

Скачиваем, распаковываем и устанавливаем последнюю версию libpri:

 # make all
 # make install

Скачиваем, распаковываем и устанавливаем последнюю версию ядра ASTERISK:

 # ./configure
 # make menuconfig
 # make
 # make install
 # make samples
 # make progdocs

Устанавливаем веб интерфейс для голосовой почты, для этого изменим в файле ./Makefile строку

HTTP_DOCSDIR=/var/www/htm
на
HTTP_DOCSDIR=/var/www/htdocs

и говорим

 # make webvmail

Скачиваем, распаковываем и устанавливаем последнюю версию Asterisk-addons, (для версий 1.8 и выше не нужен)

 # ./configure
 # make
 # make install
 # make samples

Создадим скрипт для запуска 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

Скачиваем 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. При этом сначала звонок идет на ваш внутренний номер и появляется такое окошко .


Обсуждение на форуме

Печать/экспорт
QR Code
QR Code wiki:articles:voip (generated for current page)