Asterisk 和 Freepbx:多个昼夜切换?
Asterisk & Freepbx : Multiple Day Night Toggles?
我处于经常需要更改主动呼叫流控制的情况(只能是一个..对吗?)。
我发现如果您有 4 种不同的情况,netsting 调用流控制非常不方便。
所以我想做的是创建一个 4 个不同的分机,将适当的呼叫流程设置为入站路由目的地。
举个例子:
我有
- 呼叫流程 NR 1
- 呼叫流程 NR 2
- 呼叫流程 NR 3
- 呼叫流程 NR 4
我想创建:
- extension *881 -> 切换呼叫流程 nr 1 并将其设置为目的地
入境路线
- extension *882 -> 切换呼叫流程 nr 2 并将其设置为目的地
入境路线
- extension *883 -> 切换呼叫流程 nr 3 并将其设置为目的地
入境路线
- extension *884 -> 切换呼叫流程 nr 4 并将其设置为目的地
入境路线
这样的事情可能吗?
如果是这样......你将如何实现它?
我的系统基于 asterisk 11 和 freepbx 2.11。
预先感谢您的时间和精力。
您可以根据需要输入任意多个时间条件。
您可以使用特殊代码来转换on/off时间条件(用于节假日)。您可以在时间条件页面上查看确切的代码。
您还可以创建自定义模块来更改流程,更多信息请参阅 dev.freepbx.org。作为选项,您可以雇用某人来完成您的条件模块。
我想通了
编辑 /etc/asterisk/extensions_custom.com 并粘贴以下内容
[from-internal-custom]
include => enable-switch
[check-active-switch]
exten => s,1,NoOp("This context loops through all the switches and checks which one is ON. Than it follows its destination")
exten => s,n,GoSub(sub-get-nr-of-switches,s,1)
exten => s,n,Set(nrofs=${GOSUB_RETVAL})
exten => s,n,Set(i=0)
exten => s,n,Set(default-dest=app-daynight,${switchnr},1)
exten => s,n,Set(switchnr="NULL")
exten => s,n,While($[$[${i} < ${nrofs}] & $[${switchnr} = "NULL"]])
exten => s,n,Set(switchnr=${IF($["${DB(DAYNIGHT/C${i})}" = "NIGHT"]?${i}:"NULL")})
exten => s,n,Set(i=$[${i} + 1])
exten => s,n,EndWhile
exten => s,n,GotoIf($[${switchnr}!="NULL"]?app-daynight,${switchnr},1:${default-dest})
exten => s,n,Hangup()
[sub-get-nr-of-switches]
exten => s,1,Set(nr_of_s=0)
exten => s,n,Set(exten_state="NOT_ACQUIRED")
exten => s,n,While($[${exten_state}!=0])
exten => s,n,Set(exten_state=$[${VALID_EXTEN(app-daynight,${nr_of_s},1)}])
exten => s,n,NoOp(Exten nr ${nr_of_s} of app-daynight is ${exten_state})
exten => s,n,Set(nr_of_s=${IF($[${exten_state}=1]?$[${nr_of_s}+1]:${nr_of_s})})
exten => s,n,EndWhile
exten => s,n,NoOp(${nr_of_s} switches found)
exten => s,n,Return(${nr_of_s})
[enable-switch]
exten =>_*20X,1,NoOp("Abilita Switch selezionato e disabilita altre")
same => n,GoSub(sub-get-nr-of-switches,s,1)
same => n,Set(nrofs=${GOSUB_RETVAL})
same => n,Set(switchtoactivate=${EXTEN:3})
same => n,NoOp(Activated Switch nr ${switchtoactivate})
same => n,Set(i=0)
same => n,While($[${i}<${nrofs}])
same => n,Set(DB(DAYNIGHT/C${i})=DAY)
same => n,Set(i=$[${i}+1])
same => n,EndWhile
same => n,Set(freepbx_toggle_dest=*28${switchtoactivate})
same => n,Goto(app-daynight-toggle,${freepbx_toggle_dest},1)
same => n,Hangup
接下来转到 freepbx 并创建一个自定义目的地 -> check-active-switch,s,1 并将其设置为入站路由的目的地
我处于经常需要更改主动呼叫流控制的情况(只能是一个..对吗?)。 我发现如果您有 4 种不同的情况,netsting 调用流控制非常不方便。 所以我想做的是创建一个 4 个不同的分机,将适当的呼叫流程设置为入站路由目的地。
举个例子: 我有
- 呼叫流程 NR 1
- 呼叫流程 NR 2
- 呼叫流程 NR 3
- 呼叫流程 NR 4
我想创建:
- extension *881 -> 切换呼叫流程 nr 1 并将其设置为目的地 入境路线
- extension *882 -> 切换呼叫流程 nr 2 并将其设置为目的地 入境路线
- extension *883 -> 切换呼叫流程 nr 3 并将其设置为目的地 入境路线
- extension *884 -> 切换呼叫流程 nr 4 并将其设置为目的地 入境路线
这样的事情可能吗? 如果是这样......你将如何实现它? 我的系统基于 asterisk 11 和 freepbx 2.11。 预先感谢您的时间和精力。
您可以根据需要输入任意多个时间条件。
您可以使用特殊代码来转换on/off时间条件(用于节假日)。您可以在时间条件页面上查看确切的代码。
您还可以创建自定义模块来更改流程,更多信息请参阅 dev.freepbx.org。作为选项,您可以雇用某人来完成您的条件模块。
我想通了
编辑 /etc/asterisk/extensions_custom.com 并粘贴以下内容
[from-internal-custom]
include => enable-switch
[check-active-switch]
exten => s,1,NoOp("This context loops through all the switches and checks which one is ON. Than it follows its destination")
exten => s,n,GoSub(sub-get-nr-of-switches,s,1)
exten => s,n,Set(nrofs=${GOSUB_RETVAL})
exten => s,n,Set(i=0)
exten => s,n,Set(default-dest=app-daynight,${switchnr},1)
exten => s,n,Set(switchnr="NULL")
exten => s,n,While($[$[${i} < ${nrofs}] & $[${switchnr} = "NULL"]])
exten => s,n,Set(switchnr=${IF($["${DB(DAYNIGHT/C${i})}" = "NIGHT"]?${i}:"NULL")})
exten => s,n,Set(i=$[${i} + 1])
exten => s,n,EndWhile
exten => s,n,GotoIf($[${switchnr}!="NULL"]?app-daynight,${switchnr},1:${default-dest})
exten => s,n,Hangup()
[sub-get-nr-of-switches]
exten => s,1,Set(nr_of_s=0)
exten => s,n,Set(exten_state="NOT_ACQUIRED")
exten => s,n,While($[${exten_state}!=0])
exten => s,n,Set(exten_state=$[${VALID_EXTEN(app-daynight,${nr_of_s},1)}])
exten => s,n,NoOp(Exten nr ${nr_of_s} of app-daynight is ${exten_state})
exten => s,n,Set(nr_of_s=${IF($[${exten_state}=1]?$[${nr_of_s}+1]:${nr_of_s})})
exten => s,n,EndWhile
exten => s,n,NoOp(${nr_of_s} switches found)
exten => s,n,Return(${nr_of_s})
[enable-switch]
exten =>_*20X,1,NoOp("Abilita Switch selezionato e disabilita altre")
same => n,GoSub(sub-get-nr-of-switches,s,1)
same => n,Set(nrofs=${GOSUB_RETVAL})
same => n,Set(switchtoactivate=${EXTEN:3})
same => n,NoOp(Activated Switch nr ${switchtoactivate})
same => n,Set(i=0)
same => n,While($[${i}<${nrofs}])
same => n,Set(DB(DAYNIGHT/C${i})=DAY)
same => n,Set(i=$[${i}+1])
same => n,EndWhile
same => n,Set(freepbx_toggle_dest=*28${switchtoactivate})
same => n,Goto(app-daynight-toggle,${freepbx_toggle_dest},1)
same => n,Hangup
接下来转到 freepbx 并创建一个自定义目的地 -> check-active-switch,s,1 并将其设置为入站路由的目的地