Поиск по моему блогу

Asterisk Phonebook - телефонная книга

Asterisk (PBX)Image via Wikipedia

Общая телефонная книга, основанная на CMS/LAMP и используемая Asterisk PBX, имя и номер заносятся в базу MySQL и выводятся, например, в XML-браузере хардфона или браузере. Click to Dial из браузера.

Установка Asterisk Phonebook

Требуются следующие приложения
# cd /var/www/html
Скачайте исходник с помощью wget.
# wget http://www.a-enterprise.ch/ipline/phonebook/phonebook.tar.gz
Распакуйте архив
# tar -xzvf phonebook.tar.gz
Создайте директорию ~/phonebook/upload и установите права на неё rwxrwxrwx
# mkdir phonebook/upload \\
  # chmod 777 /var/www/html/phonebook/upload
Отредактируйте php.ini
register_globals = On

Создание базы данных MySQL

CREATE DATABASE IF NOT EXISTS `asterisk` ;

CREATE TABLE `pbook` (
  `id` int(11) NOT NULL auto_increment,
  `calld` varchar(50) NOT NULL,
  `name` varchar(50) NOT NULL,
  `bemerkung` text NOT NULL,
  `Diverses` int(1) NOT NULL default '0',
  KEY `id` (`id`),
  KEY `calld` (`calld`),
  KEY `name` (`name`)
)  ;


CREATE TABLE `pbook_directory` (
  `id` int(9) NOT NULL,
  `tel` varchar(20) NOT NULL,
  `name` varchar(50) NOT NULL,
  `strasse` varchar(50) NOT NULL,
  `ort` varchar(50) NOT NULL,
  KEY `tel` (`tel`),
  KEY `name` (`name`)
) ;


CREATE TABLE IF NOT EXISTS `users` (
  `extension` varchar(20) NOT NULL default '',
  `password` varchar(20) default NULL,
  `name` varchar(50) default NULL,
  `voicemail` varchar(50) default NULL,
  `ringtimer` int(3) default NULL,
  `noanswer` varchar(100) default NULL,
  `recording` varchar(50) default NULL,
  `outboundcid` varchar(50) default NULL,
  `directdid` varchar(50) default NULL,
  `didalert` varchar(50) default NULL,
  `faxexten` varchar(20) default NULL,
  `faxemail` varchar(50) default NULL,
  `answer` tinyint(1) default NULL,
  `wait` int(2) default NULL,
  `privacyman` tinyint(1) default NULL
) ;


CREATE TABLE IF NOT EXISTS `events` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `timestamp` datetime NOT NULL default '0000-00-00 00:00:00',
  `event` longtext,
  `uxtime` int(11) NOT NULL,
  `DEST` varchar(20) NOT NULL,
  `SRC` varchar(20) NOT NULL,
  `UID` varchar(20) NOT NULL,
  `CID` varchar(20) NOT NULL,
  `CIDNAME` varchar(50) NOT NULL,
  `IDdest` varchar(20) NOT NULL,
  `IDsrc` varchar(20) NOT NULL,
  `EVNT` varchar(20) NOT NULL,
  PRIMARY KEY  (`id`)
)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CREATE DATABASE IF NOT EXISTS `asteriskcdrdb` ;


CREATE TABLE IF NOT EXISTS `cdr` (
  `calldate` datetime NOT NULL default '0000-00-00 00:00:00',
  `clid` varchar(80) NOT NULL default '',
  `src` varchar(80) NOT NULL default '',
  `dst` varchar(80) NOT NULL default '',
  `dcontext` varchar(80) NOT NULL default '',
  `channel` varchar(80) NOT NULL default '',
  `dstchannel` varchar(80) NOT NULL default '',
  `lastapp` varchar(80) NOT NULL default '',
  `lastdata` varchar(80) NOT NULL default '',
  `duration` int(11) NOT NULL default '0',
  `billsec` int(11) NOT NULL default '0',
  `disposition` varchar(45) NOT NULL default '',
  `amaflags` int(11) NOT NULL default '0',
  `accountcode` varchar(20) NOT NULL default '',
  `uniqueid` varchar(32) NOT NULL default '',
  `userfield` varchar(255) NOT NULL default ''
) ;

Смотри также Команды mysql

Настройки Phonebook

Внесите изменения в файл config.php
Для MySQL
$mysql_host="localhost"; // eg, localhost - хост MySQL
$mysql_user="root";  // пользователь базы данных mysql
$mysql_password="********";  // пароль к базе данных mysql
$mysql_db_book="asterisk"; 

// mysql settings DB asteriskcdrdb for cdr tables
$cdr_mysql_host="localhost"; // eg, localhost - should not be empty for productive servers
$cdr_mysql_user="root";  // mysql db user, if you not shure prefer root
$cdr_mysql_password="********";  // insert your password
$cdr_mysql_db_book="asteriskcdrdb"; // should be well
Общие настройки
// Language
$language="en";

// A-Z register 
$anz_numbers=40; // количество записей

// диапазон внутенних номеров asterisk:
$local_from=1;  // range begin
$local_to=1000; // range end
$local_list="100,209"; // дополнительные номера через запятую
$local_freepbx=1; // внутренние номера freepbx, если freepbx нет:  $local_freepbx=0 ;

// отображаемая длина номера 
$clidlen=25;

// мониторинг событий 
// пример : $sip_monitoring="100,101,111,112,113";  //     100 = ваш номер 
$sip_monitoring="100,101,111,112,113";

// 1 = show all report entries | 0 = only the local phone number
$report_show_all=1;

Для Asterisk
/// Asterisk ////////////////////////////////////
// Location of Asterisk LOGFILE
$logfile = "/var/log/asterisk/cdr-csv/Master.csv";
 
// Настройки для Asterisk API в 'manager.conf'

// [phonebook]
// secret = 1234
// 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
// write = system,call,log,verbose,command,agent,user

$UserName="phonebook";
$Secret="1234";

// контекст из которого будет производится набор в extensions.conf
$context="from-internal";

//// end of config.php //////////////////////////

Включить поиск по CID для FreePBX

Отредактируйте /etc/asterisk/extensions.conf
# ;; найдите следующий контекст
[macro-user-callerid]
;;;; вместо этой строки
exten => s,1,Noop(user-callerid: ${CALLERID(name)} ${CALLERID(number)})

;;;; вставьте следующие две
exten => s,n,DBGet(name=cidname/${CALLERIDNUM})
exten => s,n,SetCIDName(${name})

;;;; дальше отставить код
exten => s,n,GotoIf($["${CHANNEL:0:5}" = "Local"]?report)
exten => s,n,GotoIf($["${REALCALLERIDNUM:1:2}" != ""]?start)
exten => s,n,Set(REALCALLERIDNUM=${CALLERID(number)})
Перезапустите Asterisk
CLI> reload

Использование Phonebook

Откройте в браузере http://your_pbx/phonebook/book.php
Укажите в настройках номер своего екстеншена и префикс выхода на внешние линии (если требуется) и сохраните ссылку.

Дополнительно

Еслит Вам требуется ограничить доступ к телефонной книге используйте .htaccess.
Order deny,allow
      Allow from localhost
      Allow from 192.168.1.
      Deny from all
      Satisfy any

Оригинальный readme
Enhanced by Zemanta

1 комментарий:

Анонимный комментирует...

>[macro-user-callerid]
>;;;; вместо этой строки

не вместо, а после.

Реклама от BigBN