Страница 1 из 1

Penalty обнуление результатов

Добавлено: 21 июл 2021, 10:49
voice_skt
Добрый день , есть 30 операторов , задача распределение звонков по кол-ву минут разговора. Реализовал с помощью скрипта который отрабатывает каждые 5 минут . Скрипт свою работу выполняет, но на следующий день номер penalty сохраняется.
Как обнулять penalty в конце дня, чтобы у всех в начале дня у всех был penalty 0?

Код: Выделить всё

#!/usr/bin/perl

use strict;
use warnings;
use DBI;
use Time::Local;
use POSIX qw(strftime);
use Asterisk::AMI;

# коннектимся к серверу MySql
my $dbh = DBI->connect("DBI:mysql:hostname=hostname;database="dbname","login", 'password db') or die "Check connection settings\n";
my $sth = $dbh->prepare("SET NAMES 'utf8'");
my $res = $sth->execute;
    # Выполнить запрос
    $sth = $dbh->prepare("
SELECT agent, sum(data2) as sec   FROM dbname
where event in ('COMPLETEAGENT', 'COMPLETECALLER')
and created > CURRENT_DATE()
group by agent
order by sec
");
$sth->execute;
my $i=0;
while (my @row = $sth->fetchrow_array()){
    my $sip = $row[0];
    Penalty($sip,"queueNAME",$i);
    Penalty($sip,"queueNAME",$i);
    Penalty($sip,"queueNAME",$i);

$i++;

}

sub Penalty{
    my ($sip, $queue, $penalty) = @_;
    my $astman = Asterisk::AMI->new(PeerAddr => 'hostname',
                                        PeerPort => '5038',
                                        Username => 'loginAMI',
                                        Secret => 'passwordAMI',
                                        Events => 'on'
                                );
    die "Unable to connect to asterisk" unless ($astman);

    my $response = $astman->action({ Action => 'QueuePenalty',
	 ActionID => 1234,
	 Interface => $sip,
         Penalty => $penalty,
	 Queue => $queue
    });
}

my $rc = $dbh->disconnect;

1;

Re: Penalty обнуление результатов

Добавлено: 21 июл 2021, 11:04
ded
Может просто указать в параметрах очереди? Без всяких внешних скриптов?
strategy=leastrecent

Re: Penalty обнуление результатов

Добавлено: 22 июл 2021, 10:10
voice_skt
Это работает если все операторы общаются одинаковое кол-во минут. А если один разговаривает с клиентом 30, а другой за это время может обслужить 3 клиентов. Кол-во минут одинаковое , а кол-во минут разное. Задача равное кол-во минут проведенное на линии с клиентом.

Re: Penalty обнуление результатов

Добавлено: 22 июл 2021, 12:57
ded
Вы описали другую стратегию -
strategy=fewestcalls: ring the one with fewest completed calls from this queue.
То есть вызов распределяется тому, у кого меньше всего завершенных вызовов из этой очереди.
strategy=leastrecent: ring interface which was least recently called by this queue.
То есть вызов распределяется тому, у которого меньше всего минут отвеченных вызовов в этой очереди.

Re: Penalty обнуление результатов

Добавлено: 18 окт 2021, 09:07
voice_skt
проблема решилась тривиально в cron добавил задание и проблема решилась
asterisk -rx 'core restart gracefully'