рд╕рднреА рдиреЗ рдирдИ рдкреАрдврд╝реА рдХреЗ рдкреАрдмреАрдПрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд▓рдЧрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреБрдЫ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рднреА рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ php рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ, рд╣рдо
рдлрд╝рд╛рдкрдЧреА рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд, рдореИрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдореЗрд░реА рдорджрдж рдХреАред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, phpagi рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА /etc/asterisk/manager.conf рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
; ; Asterisk Call Management support ; [general] enabled = yes ; asterisk manager interface (AMI) port = 5038 bindaddr = 127.0.0.1 ; webenabled = no ; Each user has a section labeled with the username ; so this is the section for the user named "mark" [user] ; secret = qwerty ; deny=0.0.0.0/0.0.0.0 ; permit=127.0.0.1/255.255.255.0 read = system,call,log,verbose,command,agent,user,originate ; write = system,call,log,verbose,command,agent,user,originate
рдЖрд░реНрдХрд╛рдЗрд╡ рдореЗрдВ phpagi.conf рдлрд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ phpagi рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ
/ etc / asterisk рдкрд░ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдм рд╣рдо рдПрдлрд╝рдкреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдПрдПрдордЖрдИ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣:
include('phpagi.php'); $manager = new AGI_AsteriskManager(); $manager->connect();
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ php рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рддрд╛рд░рд╛рдВрдХрди рдШрдЯрдирд╛ рдореЙрдирд┐рдЯрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрдкрдЧреА рд╡рд░реНрдЧ рдХрд╛ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рд╣реИред
рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдЗрд╡реЗрдВрдЯ рдореЙрдирд┐рдЯрд░ рд╣реИ:
function dump_events($ecode,$data,$server,$port) { $date_now = date('Ym-d'); $time_now = date('H:i:s'); echo "$time_now : received event '$ecode' from $server:$port\n"; print_r($data); } include('phpagi.php'); $manager = new AGI_AsteriskManager(); $manager->connect(); $manager->add_event_handler('*', 'dump_events');
рдЗрд╕ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдШрдЯрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, huawi рдореЙрдбреЗрдо рдореЗрдВ рдбрд╛рд▓реЗ рдЧрдП рд╕рд┐рдо рдХрд╛рд░реНрдб рдкрд░ рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ chan_dongle рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
рдореИрдВ
рдХрдорд╛рдВрдб рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
рдкрд╣рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреНрдпреВрд╕рдб рдШрдЯрдирд╛ рдХреЛ рдкрдХрдбрд╝рддреА рд╣реИ
function donglenewussd($ecode, $data) { if($model = Trunk::model()->find('value = :value', array( ':value' => $data['Device']))){ if(!empty($data['MessageLine0'])){ $balance = explode(' ', $data['MessageLine0']); switch($model->carrier){ case '0': break; case '1': $model->balance = $balance[0]; $model->save(); echo $balance[0]."\n"; break; case '2': $model->balance = $balance[2]; $model->save(); echo $balance[2]."\n"; break; case '3': preg_match('/[+-]?\d+\.?\d*/', $balance[1], $match); $model->balance = $match[0]; $model->save(); echo $match[0]."\n"; break; } } } } $manager = new AGI_AsteriskManager(); $manager->connect(); $manager->add_event_handler('donglenewussd', 'donglenewussd'); $manager->wait_response(); $manager->disconnect();
рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЛрдВрдЧрд▓рд╡реНрдпреВрд╕ рдЗрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмреИрд▓реЗрдВрд╕ рд╕реНрдЯреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореБрдХреБрдЯ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧреА, рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХрд╣реЗрдВ, рд╢реЗрд╖ рд░рд╛рд╢рд┐ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВред
$manager = new AGI_AsteriskManager(); $manager->connect(); $trunks =Trunk::model()->findAll(); foreach($trunks as $trunk){ switch($trunk->carrier){ case '1': $manager->Command('dongle ussd '.$trunk->value.' *101#'); break; case '2': $manager->Command('dongle ussd '.$trunk->value.' *111#'); break; case '3': $manager->Command('dongle ussd '.$trunk->value.' *111#'); break; } } $manager->disconnect();
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП yii рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЙрдбреЗрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ (рд╕рд┐рд╕реНрдЯрдо рдирд╛рдо, рдСрдкрд░реЗрдЯрд░, рд╢реЗрд╖, рд░рд╛рдЬреНрдп, рдЖрджрд┐)
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдпреВрдХреНрд░реЗрдиреА рдСрдкрд░реЗрдЯрд░реЛрдВ (рдПрдордЯреАрдПрд╕, рдХреАрд╡рд╕реНрдЯрд╛рд░ рдФрд░ рд▓рд╛рдЗрдл) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдФрд░ рдорд┐рдард╛рдИ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ
рдУрд░рд┐рдЬрд┐рдирд▓ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА рдХреЙрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдлрд┐рд░ рд╣рдо рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрд╛рддреЗ рд╣реИрдВред
рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдлрд╝рдВрдХреНрд╢рди рдЬреЛ AMI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХреЙрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдкреБрд░рд╛рдиреЗ рджрд╛рджрд╛ рдХреЗ рдмрдЬрд╛рдп рдХреЙрд▓
/ рдХреЙрдкреА
/ рддрд╛рд░ / рддрд╛рд░рд╛рдВрдХрди / рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдХреЙрд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рдирдХрд▓ рдХрд░рдХреЗ
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджрд┐рдП рдЧрдП рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд▓рдЧрднрдЧ рдХреЙрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ:
$manager->Originate( ' , SIP/1001', ' ', ' ', ' ', ' , playback', ' , ', '', ' ', ' ', 'account - , ', ' ( )', 'actionid - ' );
рдЦреИрд░, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЦреБрдж рдХреЗ рд╕рд╛рде рдЖрдПрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╣рдм рдкрд░ phpagi рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдорд┐рд▓рд╛
рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдХрд░ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреАред