рд╣рдо Asterisk рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдо рдмрд┐рд▓рд┐рдВрдЧ рдЖрдБрдХрдбрд╝реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдХреЙрд▓ рдбрд┐рдЯреЗрд▓ рд░рд┐рдХреЙрд░реНрдб, рдЙрд░реНрдл тАЛтАЛрд╕реАрдбреАрдЖрд░ (рдХреЙрд▓ рдбрд┐рдЯреЗрд▓ рд░рд┐рдХреЙрд░реНрдб) рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реАрдбреАрдЖрд░ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рдФрд░ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рдпрдорд┐рдд MySQL рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд┐рдВрдЧрд▓ рдиреЗрдордкреНрд▓реЗрдЯ - рд╕реАрдбреАрдЖрд░ рд╣реИред рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЙрд▓ рдХреА рд▓рд╛рдЧрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧреАред

рдЪрд░рдг 1: рд╣рдо рд╕реАрдбреАрдЖрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


рдЫрд╡рд┐
рд╣рдо рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:

рд╕реНрдЯреЗрдЬ 2: рдЕрдкрдиреА рдЦреБрдж рдХреА рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВред

price_russia - рд░реВрд╕реА рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдХреАрдорддреЛрдВ рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ред
CREATE TABLE IF NOT EXISTS `price_russia ` ( `code` int(10) NOT NULL COMMENT ' ', `cost` varchar(10) NOT NULL COMMENT '', `region` varchar(100) NOT NULL COMMENT '', UNIQUE KEY `code` (`code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 


price_international - рджреЗрд╢ рдХреЛрдб рдФрд░ рдХреАрдорддреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ред
 CREATE TABLE IF NOT EXISTS ` price_international` ( `code` int(10) NOT NULL COMMENT ' ', `price` varchar(10) NOT NULL COMMENT '', `country` varchar(100) NOT NULL COMMENT '', UNIQUE KEY `code` (`code`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 


рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ - рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреЗрдмрд▓ред
 CREATE TABLE IF NOT EXISTS `clients` ( `login` varchar(32) NOT NULL COMMENT '', `password` varchar(32) NOT NULL COMMENT '', `email` varchar(40) NOT NULL COMMENT 'Email', `rate` smallint(4) NOT NULL COMMENT '', UNIQUE KEY `login` (`login`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

* рджрд░ рдХреНрд╖реЗрддреНрд░ рдЖрдкрдХреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдЫреВрдЯ рдпрд╛ рдорд╛рд░реНрдХ-рдЕрдк рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (90 рд▓рд┐рдЦреЗрдВ - 10 рдкреНрд░рддрд┐рд╢рдд рдЫреВрдЯ рджреЗрдВ, 110 рд╕реЗрдЯ рдХрд░реЗрдВ - 10 рдкреНрд░рддрд┐рд╢рдд рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ)ред

client_ext - рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдореИрдкрд┐рдВрдЧред
 CREATE TABLE IF NOT EXISTS `clients_ext` ( `login` varchar(32) NOT NULL, `ext` int(6) NOT NULL, UNIQUE KEY `ext` (`ext`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 


рдХреЙрд▓ - рд╕рдВрд╕рд╛рдзрд┐рдд рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ред
 CREATE TABLE IF NOT EXISTS `calls` ( `uniqueid` varchar(32) NOT NULL, `date` datetime NOT NULL, `login` varchar(32) NOT NULL, `rate` bigint(10) NOT NULL, `ext` bigint(10) NOT NULL, `dst` bigint(20) NOT NULL, `src` bigint(20) NOT NULL, `type` varchar(20) NOT NULL, `minutes` int(10) NOT NULL, `seconds` int(100) NOT NULL, `cost` int(10) NOT NULL, `description` varchar(100) NOT NULL, UNIQUE KEY `uniqueid` (`uniqueid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

* рдЯрд╛рдЗрдк - рдХреЙрд▓ рдЯрд╛рдЗрдк (рдЗрдирдХрдорд┐рдВрдЧ / рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ)ред

рд╕реНрдЯреЗрдЬ 3: рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧред



рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд╢реЗрдбреНрдпреВрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрд▓рд╛рдИ рдЬрд╛рдПрдЧреА, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рднреА рдпрд╛рдж рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдЪреНрдЪреА рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрди рдкрд░ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ:
 mysql_query("UPDATE cdr SET userfield=`step1` WHERE userfield=``;"); 


рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рд╣реИ:
1. рдЧреНрд░рд╛рд╣рдХ, рдЙрдирдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди, рд╕рдореВрд╣ рдФрд░ рдЧреБрдгрдХред
 function get_clients(){ //      ,       . $query=mysql_query("SELECT rate,ext,login FROM clients, clients_ext WHERE clients_ext.login = clients.login"); while($row=mysql_fetch_assoc($query)){ $clients[$row['ext']]['rate']=$row['rate']; $clients[$row['ext']]['user']=$row['login']; } return $clients; } 


2. рд░реВрд╕ рдореЗрдВ рдХреНрд╖реЗрддреНрд░ рдХреЛрдб, рд╡рд┐рд╡рд░рдг рдФрд░ рдХреАрдорддреЗрдВред
 function get_price_russia(){ //       $query=mysql_query("SELECT * FROM price_russia"); while($row=mysql_fetch_assoc($query)){ $price[$row['code']]['cost']=$row['price']; $price[$row['code']]['description']=$row['region']; } return $price; } 


3. рджреЗрд╢ рдХреЛрдб, рд╡рд┐рд╡рд░рдг рдФрд░ рджреБрдирд┐рдпрд╛ рднрд░ рдХреА рдХреАрдорддреЗрдВред
 function get_price_international(){ //     . $query=mysql_query("SELECT * FROM price_international"); while($row=mysql_fetch_assoc($query)){ $price[$row['code']]['cost']=$row['price']; $price[$row['code']]['description']=$row['country']; } return $price; } 


рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ:
 $clients=get_clients(); $price['russia']=get_price_russia(); $price['international']=get_price_international(); 


рдЕрдм рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
 $query=mysql_query("SELECT * FROM cdr WHERE userfield=`step1`"); while($row=mysql_fetch_assoc($row)){ // } 


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг ( , .)

рдХреЙрд▓ рдХреА рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
 function get_call_type($dst,$src){ $dst=strlen($dst); $src=strlen($src); if($scr<7 && $dst<7)$type='internal'; // . if($src<7 && $dst>=7)$type='outcoming'; //  if($src>=7 && $dst<7)$type='incoming'; // return $type; } $type=get_call_type($row['dst'],$row['src']); 


рдЕрдм рд╣рдореЗрдВ рдЙрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдХ рдЪреИрдирд▓ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕реАрдбреАрдЖрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдпреЗ рдПрдХ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП "рдЪреИрдирд▓" рдлрд╝реАрд▓реНрдб рдФрд░ рдПрдХ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП "dstchannel" рдлрд╝реАрд▓реНрдб рд╣реИрдВред
 function get_ext_from_channel($channel){ //  ext  channel $channel=split("/",$channel); $channel=split("-",$channel[1]); return($channel[0]); } switch ($type) { case 'internal': $ext=$row['src']; break; case 'incoming': $ext=get_ext_from_channel($row['dstchannel']); break; case 'outcoming': $ext=get_ext_from_channel($row['channel']); break; } 

* рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди ...

рдЕрдм рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд┐рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рд╣реИред
 $login=$clients[$ext]['login'] 

рдФрд░ рдЧреБрдгрдХ
 $rate=$clients[$ext]['rate'] 

рд╕реЗрдХрдВрдб рд╕реЗ рдорд┐рдирдЯ рддрдХ рдЧреЛрд▓:
 $minutes=ceil($row['billsec']/60); 


рдпрджрд┐ рдХреЙрд▓ рдЖрдВрддрд░рд┐рдХ рдпрд╛ рдЗрдирдХрдорд┐рдВрдЧ рд╣реИ, рддреЛ рдЖрдк рдореВрд▓реНрдп рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╡рд░рдг рдХреЛ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓ рдХрд╣рд╛рдВ рдЧрдпрд╛ рдерд╛ред
 if($type=='outcoming'){ // . }else{ $cost=0; $description=0; } 

рдХреЙрд▓ рдХреА рдХреАрдордд рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
 // 8495     7 . function check_for_moscow($num){ if(strlen($num)==7)$num='8495'.$num; return $num; } $dst=check_for_moscow($row['dst']); //    ,   .       :      10.     11    - ,   - . function get_country_type($number){ if(strlen($number)<=11){ $return='russia'; }else{ $return='international'; } return $return; } $country=get_country_type($dst); $cost=''; $description=''; $i=1; //  -        (8xxx),     4 (810xxx) if($country=='international'){$s=3;}else{$s=1;} //     ,        9 -  .   2-3 . while($cost==''){ $code=substr($dst,$s,$i); $cost=$price[$country][$code]['cost']; $description=$price[$country][$code]['description']; $i++; } 


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреЗрдмрд▓ рдкрд░ рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╣реИред
 mysql_query("INSERT INTO calls(uniqueid, date, login, rate, ext, dst, src, type, minutes, seconds, cost, description) VALUES ('$row[uniqueid]', '$row[calldate]', '$login', '$rate', '$ext', '$dst', '$row[src]', '$type', '$minutes', '$row[billsec]', '$cost', '$description')"); 


рдФрд░ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ, рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ:
 mysql_query("UPDATE cdr SET userfield=`done` WHERE userfield=`step1`"); 


рдКрдкрд░ рдорд╛рд╕реНрдХреЛ рдХреЗ рдкрд╛рд╕ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрд╕рд╛рдиреА рд╕реЗ рджреВрд╕рд░реЗ рд╢рд╣рд░ рдпрд╛ рджреЗрд╢ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рд▓рд┐рдВрдХ: 77.108.85.102/habr/import.php.txt , 77.108.85.102/habr/functions.php.txt ,

Source: https://habr.com/ru/post/In124211/


All Articles