The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Asterisk::LCR::Dialer - Generic dialer object

SYNOPSIS

  use Asterisk::LCR::Dialer;
  my $dialer = Asterisk::LCR::Dialer::<CONCRETE_CLASS>->new ();

SUMMARY

Represents a generic dialing strategy. The strategy is defined in the $self->process() method, which in this package is undefined.

ATTRIBUTES

limit (numerical scalar)

Limit dialing strategies to 'limit' cheapest routes. Optional.

opts (scalar)

Options to be appended to the dialstring. Example:

  '120|HS(7200)'

METHODS

$self->locale();

Returns the 'locale' attribute.

$self->set_locale ($locale);

Sets the 'locale' attribute to $locale.

$self->limit();

Returns the optional 'limit' attribute.

Returns 100000 if it's not defined (quasi-infinity)

$self->set_limit ($limit);

Sets the optional 'limit' attribute to $limit.

$self->opts();

Returns the optional 'opts' attribute.

If the 'opts' attribute is not TRUE, returns an empty string.

If the 'opts' attribute doesn't start with a pipe symbol, returns it prefixed with |.

$self->set_opts ($opts);

Sets the optional 'opts' attribute to $opts.

$self->process ($number);

Turns $number into a canonical, global number if $number if $self->locale() returns an Asterisk::LCR::Locale object.

Then calls $self->_process ($number). This method must be defined in subclasses.

$self->dial ($str);

Dials string $str, eventually with options $self->opts();

$self->dial_string ($number, $rate)

Returns a string from a variable template suitable for use within Dial()

Extract a string dial template from the asterisk config file.

For example, say $rate->{provider} = 'voipjet'. This method will look for an asterisk variable called 'ASTERISK_LCR_TMPL_VOIPJET'. The grammar to be used for this syntax is:

  VARIABLE: [LOCALE] DIAL_STRING

  LOCALE: (scalar string, i.e. 'us' or 'fr' or even /var/mylocale.txt)

  DIAL_STRING: <whateverwhatever>REPLACEME<whateverwhatever>

Where REPLACEME will be replaced by the phone number to dial.

If LOCALE is defined and an Asterisk::LCR::Locale object can be created, then $num is assumed to be given as a canonical, international number.

For example, if LOCALE is 'fr' and the number is 33575874745, then 05175874745 will be dialled instead.

Otherwise the number is dialed "as is".

$self->rates ($number);

Returns an array of rates for $number, sorted cheapest first.