cpan -i Asterisk:AGI
[default] exten => 84951223344,1,Macro(call-in,${EXTEN}) ; call-in exten => _X.,1,Hangup ;
[macro-call-in] exten => s,1(agi),AGI(ivr.pl) ; Perl-.
#!/usr/bin/perl use Asterisk::AGI; $AGI = new Asterisk::AGI; %input = $AGI->ReadParse(); $timeout = 1300; # . . # . # $AGI->answer(); # # $key1 = $AGI->stream_file(["ivr"], "0123456789"); # , . # , * # ( ). $key2 = $AGI->wait_for_digit($timeout); $key3 = $AGI->wait_for_digit($timeout); $key4 = $AGI->wait_for_digit($timeout); # ( ). $num = join ('', chr($key1), chr($key2), chr($key3), chr($key4)); # , . # , . $num = $num + 0; # . if ( $key1 == 0 ) { $num = 0 } # , , . # . # Asterisk ( ). $AGI->verbose("IVR number is $num"); # - . if (length($num) = 4) { $AGI->exec("Macro","call-local,Local/$num\@office"); # office. call-local . $AGI->hangup(); } # , . # , . elsif (length($num) > 1) { $num = 0; } # if ($num == 0) { $AGI->exec("Macro", "operator"); } if ($num == 1) { $AGI->exec("Macro", "sale"); } if ($num == 2) { $AGI->exec("Macro", "accounting"); } if ($num == 3) { $AGI->exec("Macro", "marketing"); } if ($num == 4) { $AGI->exec("Macro", "fax"); }
[macro-marketing] exten => s,1,Dial(SIP/1008,20,tTm)
[macro-call-local] exten => s,1,Dial(${ARG1},25,tTm)
Source: https://habr.com/ru/post/172561/
All Articles