Тема: LDK 300 + MySQL
Есть необходимость организации прямой записи лога звонков в таблицу MySQL для последующей обработки... т.е. не просто брать логер, записывать в файл, файл экспортить в MySQL и работать, а именно организовать работу в реальном времени.
Стоит Unix-сервер, на нем запущено что-то наподобие “логера”, это что-то как только получает новую строчку с данными о звонке - записывает это в MySQL.
Если кто пробовал написать такое “что-то” - поделитесь опытом, если никто еще не пробовал - буду писать сам. Нодля этого хочу понять каким образом логер забирает данные с атс..
АТС завязана на локальную сеть, с постоянным IP. Т.е. подключаться надо к нему, вот только как и что ?
Хелп...
можно написать через perl и shell оболочку(например cmd в windows),через cmd получаешь файл с логом, далее его преобразуешь и кидаешь файл на mysql и sql200 от MS, там это уже без разницы. Perl запускается как на NIX так на win.
Создано dig
можно написать через perl и shell оболочку(например cmd в windows),через cmd получаешь файл с логом, далее его преобразуешь и кидаешь файл на mysql и sql200 от MS, там это уже без разницы. Perl запускается как на NIX так на win.
опять же.. ручная работа... идет разговор о полной автоматизации...
конкретнее, возьмем для примера:
каждый номер завязан на человека, человек работает во внутренней системе. он разговаривает по телефону. кладет трубку и спустя X<10 секунд у него на экране появляется окно с данными о номере телефона, времени разговора и полем для ввода информации, например о теме разговора...
т.е. нужно чтобы в MySQL строки логов писались автоматом. Соответственно логи должен забирать и записывать сам сервер.
в виндах есть планировщик задач, можешь казать сколько раз в час запускать скрипт perl, можно через минут 15, можно через 5, в общем как нужно, но нужно учесть время обработки скрипта.
Создано dig
в виндах есть планировщик задач, можешь казать сколько раз в час запускать скрипт perl, можно через минут 15, можно через 5, в общем как нужно, но нужно учесть время обработки скрипта.
не, это конечно как вариант, но это не выход... криво это все... к тому же где я тебе винды возьму ? нету у меня их 😊))
к более дорогим атс с возможностью online обработкт звонков и покупке call-центра, но как я понимаю ваша экономия на межгороде не покроит стоимости внедрения этого решения.
причем тут межгород ? 😊
обычно такие задачи стоят, когда руководство пытается понять кто-куда звонит в рабочее время и пытается это автоматизировать, если у вас вы это хотите привязать к crm-системе то тогда лучше поискать готовые решения.
Но всё это имхо. 😉
говорые решения из пяти строчек программного кода ? 😊 шутите ? ... нонсенс...
сомневаюсь что там 5 строчек кода, по моему с нормальным функционалом и обработкой ошибок, довольно много.
ну не больше десяти...
скрипт, висящий на серваке и перегоняющий полученную строчку с базу... хм...
неужели такая непосильная задача, что нужно приобретать “готовые решения”, которые по затратам “не окупят экономии” ? ...
у меня скрипт, который забирал лог с cisco по 16 ip и его очищал от ненужного хлама и преобразовывал к нужному формату, занимал строк под 100. В базе sql лог не хранил, т.к. база росла довально быстро, в txt было намного меньше, но за год порядка 20 gb насобиралось.
скрипт можно посмотреть ?
#!/usr/bin/perl -w
@AD = localtime;
$time=sprintf(“d-d-%4d d:d:d”, $AD[3], $AD[4]
+ 1, $AD[5]+1900, $AD[2], $AD[1], $AD[0]);
$Name_file_mou = sprintf(“d_%4d”, $AD[4]
+ 1, $AD[5]+1900);
$Name_file_mou.=”.txt”;
$Name_file_day = sprintf(“d_d_%4d”, $AD[3], $AD[4]
+ 1, $AD[5]+1900);
$Name_file_day.=”.txt”;
system〈“rsh 217.69.210.121 -l xwhite clear ip accounting”〉;
system〈“rsh 217.69.210.121 -l xwhite show ip accounting check>tempstat.txt”〉;
system〈“rsh 217.69.210.121 -l xwhite clear ip accounting check”〉;
#проверка на наличие файла $Name_file_day
if(open (NFD, $Name_file_day)) {}
else {open (NFD, ">>".$Name_file_day)}
close(NFD);
#конец проверки на наличие файла $Name_file_day
#проверка на наличие файла $Name_file_mou
if(open (NFM, $Name_file_mou)) {
@MASS=<NFM>;
}
else
{ #20
open (NFM, ">>".$Name_file_mou);
@MASS=("217.69.210.122 0"."\n","217.69.210.123 0"."\n","217.69.210.124 0"."\n",
"217.69.210.125 0"."\n","217.69.210.126 0"."\n");
print NFM @MASS;
}
close(NFM);
#Добавление файла tempstat.txt в файл $Name_file_day
if(open (PS, “tempstat.txt”))
{
@tempstat=;
close(PS);
open (NFD, ">>".$Name_file_day);
print NFD " ",$time,"\n\n",@tempstat,"\n\n"; #40
close (NFD);
}
foreach $s (@tempstat)
{
if ($s !~ /^\s\d{1,3}\./) { next; } # Игнорируем заголовок и Summary #50
$s =~ s/^\s+//;
$s =~ s/\s+/ /g;
@R = split(/ /,$s);
$dest_ip = $R[1];
@ip = split(/\./,$dest_ip);
$nam = $ip[3]-122;
$l = $MASS[$nam];
@check = split(/ /,$l);
$check[1] = $check[1]+$R[3];
$MASS[$nam]=($check[0].” “.$check[1].”\n”)
}
open (PD, “>”.$Name_file_mou);
print PD @MASS;
close (PD);
open (PD, “>c:/Stat.txt”);
print PD $time,”\n\n”;
foreach $s (@MASS)
{
chomp($s);
@mb = split (/ /,$s);
$size=$mb[1]/1024/1024;
print PD $s," ","(",$size," ","Mb",")","\n";
}
close (PD);
unlink ‘tempstat.txt’;