我在LUA和两个SIP提供程序上有带有拨号计划的生产星号16.4。第一个提供程序给我的中继最多具有5个连接,第二个提供程序给我的中继具有20个连接。我更喜欢使用第一个提供程序进行拨出电话,因为它比较便宜,但只有5条线路。因此,当用户打出电话时,我想检查第一个提供商的中继上当前活动呼叫的数量,如果该数量为5,则将呼叫路由到第二个提供商。
问题是-如何获得当前通话的拨号计划号码?有一些功能或核心变量吗?我知道可以通过命令“ core show channels verbose”在CLI中获取活动通道的列表,但是如何在lua Dialplan中获得类似的信息?
您可以为每个频道设置GROUP,然后在拨号方案中继续设置GROUP_COUNT
感谢@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();