рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди: AMI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓рдмреИрдХ

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

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдПрдПрдордЖрдИ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛



рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдПрдордЖрдИ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рд╣рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдЧрд╛:

/etc/asterisk/manager.conf
[general] enabled = yes port = 5038 bindaddr = 0.0.0.0 


/etc/asterisk/manager.conf
 [c2call] secret=FrUyHn6FSaX deny=0.0.0.0/0.0.0.0 permit=192.168.0.0/255.255.0.0 read=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate write=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate 


рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ:

 asterisk -rx "module reload manager" 


рдЕрдм рд╣рдореЗрдВ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирдВрдмрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рддрдерд╛рдХрдерд┐рдд рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдЧрд╛:

/etc/asterisk/sip.conf
 [3200] deny=0.0.0.0/0.0.0.0 permit=192.168.0.0/255.255.0.0 secret=3200 dtmfmode=rfc2833 canreinvite=no context=OUT_IN1 host=dynamic type=friend nat=yes port=5060 qualify=yes callcounter=yes faxdetect=no 


рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ Asterisk рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛:
 asterisk -rx "sip reload" 


рдпрд╣ Asterisk рдХрд╛ рд╕реЗрдЯрдЕрдк рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред



рдХреЙрд▓рдмреИрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ



рдЕрдм PHP рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ:

callback.php
 <?php # --- define globals --- $strhost = "192.168.0.10"; $strport = "5038"; $timeout = "10"; $num=$_REQUEST['num']; $cid=$_REQUEST['cid']; $c=$_REQUEST['c']; $p=$_REQUEST['p']; $errno=0 ; $errstr=0 ; $sconn = fsockopen ($strhost, $strport, &$errno, &$errstr, $timeout) or die("Connection to $strhost:$strport failed"); if (!$sconn) { echo "$errstr ($errno)<br>\n"; } else { fputs ($sconn, "Action: login\r\n"); fputs ($sconn, "Username: c2call\r\n"); fputs ($sconn, "Secret: FrUyHn6FSaX\r\n"); fputs ($sconn, "Events: off\r\n\r\n"); usleep(500); fputs ($sconn, "Action: Originate\r\n"); fputs ($sconn, "Channel: SIP/$cid\r\n"); fputs ($sconn, "Callerid: $cid\r\n"); fputs ($sconn, "Timeout: 15000\r\n"); fputs ($sconn, "Context: $c\r\n"); fputs ($sconn, "Exten: $num\r\n"); fputs ($sconn, "Priority: $p\r\n\r\n"); fputs ($sconn, "Async: yes\r\n\r\n" ); fputs ($sconn, "Action: Logoff\r\n\r\n"); usleep (500); fclose ($sconn); } ?> 


рдЕрдм рдЖрдк рдирд┐рдореНрди URL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рдХреА рдкреАрдврд╝реА рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 http://domain.com/callback.php?p=1&c=OUT_EXT2&cid=3200&num=84951234567 


рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВ:

 *CLI> == Manager 'c2call' logged on from 192.168.0.11 == Using SIP RTP CoS mark 5 -- Executing [84951234567@OUT_EXT2:1] Dial("SIP/3200-0000000a", "SIP/84951234567@TRK1") in new stack == Manager 'c2call' logged off from 192.168.0.11 == Using SIP RTP CoS mark 5 -- Called SIP/84951234567@TRK1 -- SIP/TRK1-0000000b is ringing == Spawn extension (OUT_EXT2, 84951234567, 1) exited non-zero on 'SIP/3200-0000000a' 


рдпрд╣рд╛рдБ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдЪрд┐рдХрд┐рддреНрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:

\ _ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдВрдЯрд░ рдХреБрдВрдЬреА рджрдмрд╛рдХрд░ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред

рдШрдЯрдирд╛рдХреНрд░рдо: рдмрдВрдж
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдИрдПрдордЖрдИ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рднреЗрдЬрдиреЗ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВред рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рд╣рдореЗрд╢рд╛ рдмрдВрдж рд╣реЛрддрд╛ рд╣реИ

рдЪреИрдирд▓: SIP / $ cid
рдЙрд╕ рдЪреИрдирд▓ рдХрд╛ рдирд╛рдо, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЙрд▓ рдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдПрд╕рдЖрдИрдкреА / 3200 рдЧреНрд░рд╛рд╣рдХ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕реЗ рд╣реА рд╡рд╣ рдХреЙрд▓ рдЙрдард╛рдПрдЧрд╛, рдХреЙрд▓ 84951234567 рдирдВрдмрд░ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

Callerid: $ cid
рдирд┐рд╡рд░реНрддрдорд╛рди рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рд░ рдЖрдИрдбреА рд╕реЗрдЯ рдХреА рдЬрд╛рдиреА рд╣реИред

рдЯрд╛рдЗрдордЖрдЙрдЯ: 15000
рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ - 15 рд╕реЗрдХрдВрдб

Async: рд╣рд╛рдБ
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдкреАрдврд╝реА рдЖрдкрдХреЛ рддрддреНрдХрд╛рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдХреЙрд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

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


All Articles