62 lines
1.1 KiB
Perl
62 lines
1.1 KiB
Perl
package Asterisk::QCall;
|
|
|
|
require 5.004;
|
|
|
|
use Fcntl ':flock';
|
|
use Asterisk;
|
|
|
|
$VERSION = '0.01';
|
|
|
|
sub version { $VERSION; }
|
|
|
|
sub new {
|
|
my ($class, %args) = @_;
|
|
my $self = {};
|
|
$self->{QUEUEDIR} = '/var/spool/asterisk/qcall';
|
|
$self->{QUEUETIME} = undef;
|
|
bless $self, ref $class || $class;
|
|
return $self;
|
|
}
|
|
|
|
sub DESTROY { }
|
|
|
|
sub queuedir {
|
|
my ($self, $dir) = @_;
|
|
|
|
if (defined($dir)) {
|
|
$self->{QUEUEDIR} = $dir;
|
|
}
|
|
|
|
return $self->{QUEUEDIR};
|
|
}
|
|
|
|
sub queuetime {
|
|
my ($self, $time) = @_;
|
|
|
|
if (defined($time)) {
|
|
$self->{QUEUETIME} = $time;
|
|
} elsif (!defined($self->{QUEUETIME})) {
|
|
$self->{QUEUETIME} = time();
|
|
}
|
|
|
|
return $self->{QUEUETIME};
|
|
}
|
|
|
|
sub create_qcall {
|
|
my ($self, $dialstring, $callerid, $extension, $maxsecs, $identifier, $response) = @_;
|
|
|
|
my $time = $self->queuetime();
|
|
|
|
my $queuedir = $self->queuedir();
|
|
my $filename = $queuedir . '/' . $time . '.queue';
|
|
open(QFILE, ">$filename") || return 0;
|
|
flock(QFILE, LOCK_EX);
|
|
print QFILE "$dialstring $callerid $extension $maxsecs $identifier $response";
|
|
flock(QFILE, LOCK_UN);
|
|
close(QFILE);
|
|
my $ret = utime($time, $time, $filename);
|
|
return 1;
|
|
}
|
|
|
|
1;
|