Вы не учитываете что нужно контролировать количество одновременно занятых линий. Количество call файлов в папке Outgoing находящихся одновременно равняется количеству одновременно совершаемых звонков и соответственно занятых линий. Причем если вы закинете туда больше файлов, чем у Вас есть реальных линий, то соответственно не сможете дозвониться и очень быстро пройдут 5 попыток дозвона — данный звонок пойдёт в список не дозвонившихся и можно начинать сначала.
Да, у Вас немного другие задачи.
Впрочем, вычисление кол-ва активных линий решается проверкой в цикле с помошью Originate: command.
'core show channels count', но вероятно, Вам не нужно считать Local каналы, т.к. не всегда они могут равняться количеству SIP звонков.
Лучше всего будет например так:
# asterisk -rx «core show channels» | grep ^SIP | wc -l
4
Думаю это просто вопрос религии =)) С какой стороны отлавливать линии. Хотя мне кажется что в таком случае тоже может не сработать. Представьте себе сервер на котором висит порядка 50 абонентов которые куда то звонят, с отдельного транка вы запускаете оповещение, как будете считать линии? А если транков 20 и всё это связано с кучей астерисков которые гоняют друг через друга звонки? Мне кажется лучше контролировать количество файлов в папке.
Религия? Ок :-)))
Только у меня в продакшне кол-во линий считается через AMI, а не через call-файлы. Всегда онлайн 150-200 линий. Никаких проблем нет.
К тому же, + AMI Events. В этом случае работает полная асинхронная модель и все учитывается полностью.
Elastix — Asterisk как система экстренного голосового оповещения