Звездочка. Получить количество активных звонков в диалплане - PullRequest
0 голосов
/ 16 марта 2020

У меня есть производственная звездочка 16.4 с диалпланом на LUA и два SIP-провайдера. Первый провайдер дает мне транк с максимум 5 соединениями, а второй провайдер дает транк с 20 соединениями. Я предпочитаю использовать первого провайдера для исходящих звонков, потому что он дешевле, но у него всего 5 линий. Поэтому, когда пользователь совершает исходящий вызов, я хочу проверить текущее количество активных вызовов на соединительной линии первого провайдера, и если это число равно 5, то маршрутизировать вызов через второго провайдера.

Вопрос в том, как я могу получить в наборе номера активных звонков? Есть ли некоторые функции или основные переменные? Я знаю, что могу получить список активных каналов в CLI с помощью команды "core show channel verbose", но как я могу получить нечто подобное в lua dialplan?

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Спасибо @arheops за подсказку. Это рабочий пример на lua.

ext = extension:sub(1); -- Remove leading 9  
local providerA = tonumber(channel['GROUP_COUNT(provA)']:get());  
app.Verbose("Active channels on provider A = "..providerA);
if providerA < 5 then
    channel['GROUP()']:set("provA");
    app.Verbose("Outgoing call throught Provider A "..ext);
    app.Dial("PJSIP/"..ext.."@trunc_providerA");
else
    app.Verbose("Outgoing call throught Provider B "..ext);
    app.Dial("PJSIP/"..ext.."@trunc_providerB");
end;
app.Hangup();
0 голосов
/ 18 марта 2020

Вы можете установить GROUP для каждого канала и после этого продолжение GROUP_COUNT в плане набора

https://www.voip-info.org/asterisk-func-group/

...