Asterisk. 获取拨号计划中活动呼叫的数量

我使用生产Asterisk 16.4版本,拨号计划采用LUA并拥有两个SIP供应商。第一个供应商提供最多5个连接的干线,第二个供应商提供20个连接的干线。尽管第一个供应商价格更便宜,但我更喜欢使用第一个供应商进行外拨,但它只有5条线路。因此,当用户发出呼叫时,我想检查第一个供应商干线上当前的活动呼叫数量,如果该数量为5,则将呼叫路由到第二个供应商。

问题是-如何在拨号计划中获取活动呼叫的数量?是否有一些函数或核心变量可以帮助我?我知道可以通过命令"core show channels verbose"在CLI中获取活动通道的列表,但是如何在LUA拨号计划中获得这样的内容呢?

点赞
用户861388
用户861388

你可以为每个通道设置GROUP,并在拨号计划中继续使用GROUP_COUNT。

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

2020-03-18 17:40:56
用户2248760
用户2248760

感谢 @arheops 的线索。这是一个在 lua 上的工作示例。

ext = extension:sub(1); -- 删除前导的 9
local providerA = tonumber(channel['GROUP_COUNT(provA)']:get());
app.Verbose("Provider A 上的活动通道 = "..providerA);
if providerA < 5 then
    channel['GROUP()']:set("provA");
    app.Verbose("通过 Provider A 进行呼出 "..ext);
    app.Dial("PJSIP/"..ext.."@trunc_providerA");
else
    app.Verbose("通过 Provider B 进行呼出 "..ext);
    app.Dial("PJSIP/"..ext.."@trunc_providerB");
end;
app.Hangup();
2020-03-23 17:12:08