Search code examples
perlagi

Randomly Select from Array in PERL / AGI


I have a PERL script (not sure) that generates a random number (caller ID) for Asterisk / GoAutodial CRM.

The generated number begins by "+4124*******" and a random number for the rest of the number.

How to change it to be a predefined array like:

$numbers = array (
    '+41240000000',
    '+41240000003',
    '+41240000007'
);

Here is the changernum.agi code:

#!/usr/bin/perl -w
$|=1;

use Net::Ping;
use Asterisk::AGI;


$AGI = new Asterisk::AGI;

my %input = $AGI->ReadParse();

my ($number, $idv) = @ARGV;
$number="+4124".int(rand(10)).int(rand(10)).int(rand(10)).int(rand(10)).int(rand(10)).int(rand(10)).int(rand(10));


***I think I need something here***

$AGI->exec("SET numafficher=$number");
$AGI->verbose( "******* / **** / > Numero: $number < ======== ");

Solution

  • rand EXPR generates a random number between 0 and EXPR. You can use this behavior to get a random element of an array:

    my @predefined = (
        '+41240000000',
        '+41240000003',
        '+41240000007'
    );
    my $number = $predefined[rand(@predefined)];