0

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

问题是 - 我怎样才能获得活跃呼叫的拨号计划号码?有没有一些函数或核心变量?我知道我可以通过命令“core show channels verbose”在 CLI 中获取活动频道列表,但是如何在 lua dialplan 中获得类似的东西?

4

2 回答 2

1

感谢@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();
于 2020-03-23T17:12:08.723 回答
0

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

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

于 2020-03-18T17:40:56.720 回答