# ATSlog version 2.1.1 build 664 www.atslog.com # # VENDOR: Samsung # MODELS: SKP-816 # AUTHOR: Denis CyxoB # # TEXTLOG: Samsung SKP-816.txt # # Разбираем строки текстового-лог файла для АТС Samsung SKP-816 sub parsecurcalls() { while ($str=) { $stringnumber++; if ($str =~ /^.*?\s+([[0-9]+|\S]*)\s+([[0-9]+|\S]*)\s+([[0-9\-]+|\S]*)\s+([[0-9\:]+|\S]*)\s+([[0-9\:]+|\S]*)\s+([.|\S]*)\s*$/){ unitecurcalls(); }else{ #print("$stringnumber\n"); if ($vars{debug} =~ /yes/i){ if ($str !~ /^$/){ print $str; }; }; }; }; }; sub unitecurcalls() { $cell[6] = $6; $cell[5] = $5; $cell[4] = $4; $cell[3] = $3; $cell[2] = $2; $cell[1] = $1; $cell[3] =~ /(\d{4})\-(\d{2})\-(\d{2})/; $partCell[3][0]= $1; $partCell[3][1]= $2; $partCell[3][2]= $3; $cell[4] =~ /(\d{2})\:(\d{2})\:(\d{2})/; $partCell[4][0]= $1; $partCell[4][1]= $2; $partCell[4][2]= $3; # Patch the problem of our ATS # # В случае присутствия предыдущей строки заменим неверные данные # текущей строки верными из предыдущей. # Если предыдущей строки нет, то заменим на данные локального # времени. if ( "$partCell[3][1]-$partCell[3][2]" =~ /00-00/ ){ $pRazmer = @prevDt; if ($pRazmer != 0){ $partCell[3][1] = $prevDt[3][1]; $partCell[3][2] = $prevDt[3][2]; $partCell[4][0] = $prevDt[4][0]; $partCell[4][1] = $prevDt[4][1]; $partCell[4][2] = $prevDt[4][2]; }else{ ($SECOND, $MINUTE, $HOUR, $DAY, $MONTH) = (localtime())[0, 1, 2, 3, 4]; $MONTH = $MONTH + 1; $partCell[3][1] = $MONTH; $partCell[3][2] = $DAY; $partCell[4][0] = $HOUR; $partCell[4][1] = $MINUTE; $partCell[4][2] = $SECOND; } }else{ $prevDt[3][1]=$partCell[3][1]; $prevDt[3][2]=$partCell[3][2]; $prevDt[4][0]=$partCell[4][0]; $prevDt[4][1]=$partCell[4][1]; $prevDt[4][2]=$partCell[4][2]; }; $cell[5] =~ /(\d{2})\:(\d{2})\:(\d{2})/; $partCell[5][0]= $1; $partCell[5][1]= $2; $partCell[5][2]= $3; if ($cell[6] =~ /TRANSFER/i or $cell[6] =~ /INCOMING/i){ $way='1'; $number=0; # Not Specified }else{ $way='2'; $Outnumber = $cell[6]; $Outnumber =~ s/\D+//; $number=substr($Outnumber,0,100); } if($cell[6] =~ /TRANSFER/i){ $forwarded=1; }else{ $forwarded=0; } $internally=$cell[1]; $co=$cell[2]; $duration=(($partCell[5][0]*60*60)+($partCell[5][1]*60)+$partCell[5][2]); $timeofcall="${partCell[3][0]}-${partCell[3][1]}-${partCell[3][2]} ${partCell[4][0]}:${partCell[4][1]}:${partCell[4][2]}"; if ($timeofcall ne ""){ # Проверим, имеестя ли хоть одна запись звонков подлежащая # записи в db. $callsCount++; } WriteRecord($timeofcall, $forwarded, $internally, $co, $way, $number, $duration); }; 1;