Random 亂數、隨機
Random此指令在舊版的asterisk時還可以使用,到了新版時,就廢棄不用了,改為 RAND 用法也不一樣
語法:
RAND(最小值,最大值)
底下示範 RAND 的用法:
範例1說明:
我們若有多個來電顯示號碼可供使用,不想每次撥出去都顯示同一個號碼時,可這樣設定。
在撥號前會先跳到 [設定來電顯示] 此區段,分機 cell1~cell5 之間隨機取一個,Return 再回到原來區段撥號出去
[設定來電顯示]
exten => cell1,1,Set(CALLERID(num)=09xxxxxxx1)
same => n,Return
exten => cell2,1,Set(CALLERID(num)=09xxxxxxx2)
same => n,Return
exten => cell3,1,Set(CALLERID(num)=09xxxxxxx3)
same => n,Return
exten => cell4,1,Set(CALLERID(num)=09xxxxxxx4)
same => n,Return
exten => cell5,1,Set(CALLERID(num)=09xxxxxxx5)
same => n,Return
[outbound]
exten => _886X.,1,Noop
same => n,Gosub(設定來電顯示,cell${RAND(1,5)},1)
same => n,Dial(SIP/${EXTEN}@gateway,32,gCX)
範例2說明:
我們撥手機時有5個電話節費閘道可供使用,想要平均使用,而不是單獨落在某一個閘道器上,可參考底下設定方法
exten => _09XXXXXXXX,1,Set(VOLUME(RX)=5)
;加大音量 5
same => 2,Goto(${RAND(3,7)})
;設定 priority 的數值為 3~7 隨機取一個數
same=> 3,Dial(SIP/${EXTEN}@gateway0)
same=> 4,Dial(SIP/${EXTEN}@gateway1)
same=> 5,Dial(SIP/${EXTEN}@gateway2)
same=> 6,Dial(SIP/${EXTEN}@gateway3)
same=> 7,Dial(SIP/${EXTEN}@gateway4)
範例3說明:
想要亂數設定來電顯示號碼。例如:設定美國手機或市話的來顯,共10碼。
[outbound]
exten => _XXXX.,1,Noop
same => n,set(callnum1=${RAND(851111,852999)})
same => n,set(callnum2=${RAND(0000,9999)})
same => n,set(CALLERID(num)=${callnum1}${callnum2})
same => n,Dial(SIP/gateway1/${EXTEN},90,gCX)
此範例應用上要注意的是,因為 RAND 此指令所能產生的亂數最大值為 2147483647 ,若想要使用RAND指令一行就產生亂數的話,他最大只能到 2147483647 ,這個限制就很大,所以我們使用了兩行指令來產生10碼的來電顯示。