Тарификация мини АТС PANASONIC Версия для печати   


Предыстория.

Для 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]


Юзверы они тоже люди и требуют внимания к себе

Опубликовал: Master400
Дата: 23.07.2003
постоянный адрес статьи: http://linuxportal.ru/entry.php/P16_0_3_0/