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