星号。在拨号计划中获取当前通话的数量

问题描述 投票:0回答:2

我在LUA和两个SIP提供程序上有带有拨号计划的生产星号16.4。第一个提供程序给我的中继最多具有5个连接,第二个提供程序给我的中继具有20个连接。我更喜欢使用第一个提供程序进行拨出电话,因为它比较便宜,但只有5条线路。因此,当用户打出电话时,我想检查第一个提供商的中继上当前活动呼叫的数量,如果该数量为5,则将呼叫路由到第二个提供商。

问题是-如何获得当前通话的拨号计划号码?有一些功能或核心变量吗?我知道可以通过命令“ core show channels verbose”在CLI中获取活动通道的列表,但是如何在lua Dialplan中获得类似的信息?

lua asterisk dialplan
2个回答
0
投票

您可以为每个频道设置GROUP,然后在拨号方案中继续设置GROUP_COUNT

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


0
投票

感谢@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();
© www.soinside.com 2019 - 2024. All rights reserved.