outgoing.pm

来自「asterisk用 的voip记费软件」· PM 代码 · 共 111 行

PM
111
字号
package Asterisk::Outgoing;=head1 NAMEAsterisk::Outgoing - Create outgoing call queue file=head1 SYNOPSISuse Asterisk::Outgoing;my $out = new Asterisk::Outgoing;$out->setvariable('Channel', 'Zap/1/');$out->setvariable('MaxRetries', 0);$out->setvariable('RetryTime', 60);$out->setvariable('WaitTime', 60);$out->setvariable('Application', 'Playback');$out->setvariable('Data', 'beep');$out->create_outgoing;=cutrequire 5.004;use Fcntl ':flock';use Asterisk;@ISA = ('Asterisk');$VERSION = '0.01';sub new {	my ($class, %args) = @_;	my $self = {};	$self->{OUTDIR} = '/var/spool/asterisk/outgoing';	$self->{OUTTIME} = undef;	$self->{OUTVARS} = {};	$self->{ALLOWEDVARS} = [ 'channel', 'maxretries', 'retrytime', 'waittime', 'context', 'extension', 'priority', 'application', 'data', 'callerid' ]; 	bless $self, ref $class || $class;	return $self;}sub outdir {	my ($self, $dir) = @_;	if (defined($dir)) {		$self->{OUTDIR} = $dir;	}	return $self->{OUTDIR};}sub outtime {	my ($self, $time) = @_;	if (defined($time)) {		$self->{OUTTIME} = $time;	} elsif (!defined($self->{OUTTIME})) {                $self->{OUTTIME} = time();	}	return $self->{OUTTIME};}sub checkvariable {	my ($self, $var) = @_;	my $ret = 0;	foreach $allowed (@{$self->{ALLOWEDVARS}}) {		if ($allowed =~ /$var/i) {			$ret = 1;		}	}	return $ret;}sub setvariable {	my ($self, $var, $value) = @_;	if ($self->checkvariable($var)) {		$self->{OUTVARS}{$var} = $value;	}}sub create_outgoing {	my ($self) = @_;	my $time = $self->outtime();	my $outdir = $self->outdir();	my $filename = $outdir . '/' . $time . '.outgoing';	open(OUTFILE, ">$filename") || return 0;	flock(OUTFILE, LOCK_EX);	utime($time, $time, $filename);	foreach my $var (keys %{$self->{OUTVARS}}) {		print OUTFILE "$var: " . $self->{OUTVARS}{$var} . "\n";	}	flock(OUTFILE, LOCK_UN);	close(OUTFILE);	utime($time, $time, $filename);	return 1;}1;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?