Вроде как нашёл решение. Может кому пригодиться.
AGI там просто для теста, перебирает пару номеров в бесконечном цикле. Можно усложнить.
и, при поднятии трубки, холд автоматически прерывается.
Осталась ещё одна проблема, если я отбиваю с мобилы звонок, то клиента тут же сбрасывает. Хотя у клиента всё так же играет холд пока я не возьму трубку. Может можно как-то отлавливать состояния, и продолжать обзвон дальше по списку??
context Incoming {
_X. => {
Answer();
Ringing();
Wait(2);
agi(incoming.agi,${CALLERID(num)},${EXTEN});
};
incoming.agi#!/usr/bin/env perl
use Asterisk::AGI;
my $AGI = new Asterisk::AGI;
$|=1;
my ($callerid, $exten) = @ARGV;
print STDOUT "SET MUSIC ON HOLD DEFAULT\n" # Запускаем музочку
while(1){
$AGI->exec("Dial","SIP/1001,15,Ttgm");
my $availstat1 = $AGI->get_variable('DIALSTATUS');
$AGI->exec("Dial","SIP/1002,15,Ttgm");
my $availstat2 = $AGI->get_variable('DIALSTATUS');
$AGI->exec("Wait","7");
$AGI->exec("Background","message_try_again");
print STDOUT "SET MUSIC ON HOLD DEFAULT\n";
};
Да, можно так же выключить MoH.
print STDOUT "SET MUSIC ON HOLD OFF\n";