星号 - 将传入呼叫分配到2个目的地(负载平衡)

时间:2016-11-25 14:32:54

标签: load-balancing asterisk sip voip

因为我从来没有做过负载均衡,所以我对此有点困惑。我想知道如何将来电从某个号码分配到2个目的地。

假设此扩展程序每小时有100个电话:

exten => 01234567890,1,Answer
exten => 01234567890,n,Set(oqgroup=BM)
exten => 01234567890,n,Goto(csdigital,csdigital)

我如何以50/50为基础分发这些电话。所以第一个电话进入分机第二个电话进入分机B,第三个电话进入第四个到B等......

我的自定义配置,您可以看到两个(示例)数字2,我想对来电进行负载均衡:

[route]
exten => route,1,Answer
exten => route,n,GotoIf($["${oqgroup}" = "BM"]?bm,1)
exten => bm,1,Dial(SIP/0222333444@outbound,,ro)
exten => bm,1,Dial(SIP/0222333555@outbound,,ro) 

1 个答案:

答案 0 :(得分:1)

您可以使用RAND功能。

https://wiki.asterisk.org/wiki/display/AST/Function_RAND

类似这样的事情

basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)) 

请检查代码,我没有检查过,但你应该理解逻辑。

如果您不想随机(因为有时可能会随机选择将下一个调用发送到与之前相同的扩展名),您可以使用全局变量并创建全局变量并为其赋值。检查此变量的调用值之前,如果为0,则路由到扩展名0222333444并将值更改为1.如果全局值为1,则路由到其他扩展名并将值更改为0。

请记住,在星号重启后,全局变量将重置为初始值。