Автор статьи: Master400 Дата: 23.07.2003
Предыстория.
Для PC под Windows есть прога WinTarif, которая с помощью дополнительной программы снимает логи (в режиме демона) с телефонной станции (МиниАТС) с последовательного порта (функция SMDR). Данная программа по логам с телефонной станции создает отчет: с какого внутреннего номера (EXT) был набран городской номер (куда звонили DIALING) и сколько времени данный человек висел на линии (DURATUION).
Вот я и решил для себя а почему под линухом нельзя сделать такого же.
В описаниях к многим офисным телефонным станциям есть описания данных снимаемых с порта (SMDR).
Вот пример снятия данных с порта станции -
'2003-06-16','13-50-03','16','1111100','00:00:36',120
DATE TIME CO DIAL DURATION EXT (есть еще данные но они у разных станций разные)
Можно в принципе снимать данные с порта и в лог а затем разбирать из лога. Все это муторно и лениво. Хотелось сделать как можно проще для пользователя и начальства.
Задача как бы ясна поискал в инете ничего подобного не нашел за исключением.
amp; amp;amp; amp;amp; amp;body=0
Проги опроса порта, описание, настройки и скрипты взял у автора по нику PREDATOR из Ямала (большое ему спасибо, данных вещей за время работы на линухе я еще не встречал).
Требование к наполнению системы -
Апач с поддержкой PHP, Mysql (можно другое) железо любое.
Апач пересобирал с исходников с поддержкой PHP.
./configure --prefix=/где будет лежать апач --enable-module=php --enable-module=so
PHP тоже с исходников с указанием исходников Апача и поддержкой мускула.
./configure --with-apache=../apache путь где лежат исходники апача --with-xml --with-mod_charset
по умолчанию поддержка мускула включена.
Мускул взял с дистриба готовый.
Последовательность сборки - сначало просто запустить в апаче ./configure без всяких ключей затем собрать РНР как указано выше (по желанию можно добавить все необходимое)затем сам апач. На первов этапе все.
Второй этап мускул и создание базы:
Сама база с таблицами:
Table structure for table 'DIALING'
--
DROP TABLE IF EXISTS DIALING;
CREATE TABLE DIALING (
date date default NULL,
time time default NULL,
co tinyint(3) unsigned default '0',
dial char(35) default NULL,
duration time default NULL,
ext smallint(3) unsigned default '0',
KEY (co)
) TYPE=MyISAM;
--
-- Table structure for table 'OUTLINES'
--
DROP TABLE IF EXISTS OUTLINES;
CREATE TABLE OUTLINES (
co tinyint(2) unsigned NOT NULL default '0',
number mediumint(35) unsigned default '0',
PRIMARY KEY (co)
) TYPE=MyISAM;
Примечание к базе примари кей ставить на рабочие поля не надо идет ошибка записи данных в базу можно поставить на дополнительное поле например счетчик записей.
Мускул запускается из под пользователя Mysql
после запуска надо поправить индексы в базе командой
myisamchk -r --silent --sort-index -O sort_buffer_size=16M db_dir/*.MYI
Далее Мускул запушен после запускаем апач apachectl start.
далее инициализация порта ttyS0 у автора есть готовая строка инициализации чтож она работает на РС без проблем.
Проверяем работу в сопряжении станция комп командой
cat /dev/ttyS0 должны увидеть данные
'2003-06-16','13-50-03','16','1111100','00:00:36',120
если у вас кракозябры то смотри man stty
Применил данные наработки на РС все заработало на ура.
Но у меня ж Макинтош на нем нету РС порта последовательного типа (пробовал его порт с перепайкой разъема не помогло)- вышел из положения сунул в мак PCI плату с 2 СОМ портами. С сайта разработчика взял патч под свое ядро пересобрал работает. Попробовал получить данные на порт фигушки пошли кракозябры тут мне помог geekkoo подсказал команду попроще /usr/bin/stty -F /dev/ttyS0 9600 icanon clocal cs8 -cstopb parenb
parodd
Почему именно так так а не как у автора. Вот данные по станции -
NL-Code:CR
Baud Rate:9600
8bits
Parity:odd
Stop Bit:1
Все заработало.
Теперь сами скрипты которые пишут в базу данные:
есть 2 скрипта они входят в состав пакетов автора PREDATOR. Их пришлось поправить под себя в них отсуствовали строки записи в таблицу OUTLINES.
Ну чтож все работает данные пишуться в базу инфа в браузер по запросу все довольны.
Скрипты вывода инфы можно перелопатить под себя как душе угодно (я не силен в РНР меня и так устроило).
На этом все.
Все сие творение можно применить почти к любым офисным миниАТС любых производителей. Самое главное какие данные выдает атс на порт.
Вот распайка кабеля под станцию ПАНАС 1232 - 25 папа со стороны станции 9 мама со стороны компа.
25 9
2 2
3 3
4 8
5 7
6 4
7 5
20 6
Распаек под разные станции много их можно найти в инете.
На авторство идеи не претендую.
Огромное спасибо PREDATOR за разработку скриптов и идею.
GEEKKOO за вразумление по инициализации ttyS0.
Замечания и предложения приветствуются.
С Уважением
Александр
Master400
[Обновления: Fri, 20 June 2003 11:14]
Юзверы они тоже люди и требуют внимания к себе
|