Asterisk CALL文件使用說明

CALL文件使用說明

一、CALL文件工作原理

Asterisk Call Files是一個結構化文件,當它被移動到一個指定的目錄下,它就能夠自動的被Asterisk程序調用。它是一種很好的自動外呼方式,不像AGI、AMI和dialplan那樣複雜,只需瞭解簡單的知識就可以輕鬆使用它。

1.       將call文件移動到/var/spool/asterisk/outgoing/目錄下,這個目錄可以在asterisk.conf文件中自行設置如:

astspooldir => /var/spool/asterisk

2.       確保pbx_spool.so模塊被加載

3.       如果call文件的修改時間大於Asterisk系統的當前時間,那麼 Asterisk在執行該call文件之前會一直檢測call文件的修改時間是否等於系統當前時間,如果相等的話則執行該call文件。

4.       Asterisk會檢測並執行call文件裏面的指令。Call文件可以調用Asterisk中的context,也可以執行撥號方案中的application。

 

二、CALL文件基本語法

主叫設置

Channel: SIP/8002           à主叫通道

CallerID: "Some Name" <1234>à主叫名稱/號碼

MaxRetries: 3               à呼叫失敗嘗試次數,實際呼叫次數= MaxRetries+1

RetryTime: 60               à呼叫失敗後重試之間的時間間隔

WaitTime: 15                à呼叫後主叫振鈴時長

Account:                    à

被叫設置

Context: from-internal      à主中接通手要連接的地方(context)

Extension: 8003             àextension

Priority: 1                 àpriority

Set:                        à設置通道變量

Application:                àapplication

Data:                       àapplication的參數

通用設置

Set:                        à設置通道變量

AlwaysDelete: Yes           à如果call文件修改時間大於當前系統時間,則不刪除

Archive: Yes                à將執行完畢的call文件移動到outgoing_done目錄下

 

三、CALL文件使用實例

1、分機8002呼叫分機8003

Channel: SIP/8002

CallerID: "SomeName" <1234>

MaxRetries: 3

RetryTime: 60

WaitTime: 15

Account:

Context: from-internal

Extension: 8003

Priority: 1

Set:

Application:

Data:

Set:

AlwaysDelete: Yes

Archive: Yes

執行過程:

(1)該文件執行後,分機8002首先振鈴,振鈴15秒(WaitTime)後停止振鈴。

(2)過45秒(RetryTime-WaitTime)後,分機8002再次振鈴。如果分機8002一直沒人接聽,那麼它將振鈴四次(MaxRetries+1)後不再振鈴,即系統最多呼叫分機8002四次。

(3)當分機8002被接起後,系統將分機8002連接到 from-internam, 8003, 1 (Context, Extension, Priority),即開始呼叫8003分機。

(4)分機8003接起後,分機8002即可與其正常通話。

CALL文件執行以後系統生成的日誌文件:

分機8002第一次振鈴時被接起

Channel: SIP/8002

CallerID: "SomeName" <1234>

MaxRetries: 3

RetryTime: 60

WaitTime: 15

Account:

Context: from-internal

Extension: 8003

Priority: 1

Set:

Application:

Data:

Set:

AlwaysDelete: Yes

Archive: Yes

 

StartRetry: 3540 1(1292902977)

Status: Completed

分機8002第二次振鈴時被接起

Channel: SIP/8002

CallerID: "SomeName" <1234>

MaxRetries: 3

RetryTime: 60

WaitTime: 15

Account:

Context: from-internal

Extension: 8003

Priority: 1

Set:

Application:

Data:

Set:

AlwaysDelete: Yes

Archive: Yes

 

StartRetry: 3540 1(1292903468)

 

EndRetry: 3540 1(1292903463)

 

StartRetry: 3540 2(1292903489)

Status: Completed

分機8002四次振鈴全部沒有被接起

Channel: SIP/8002

CallerID: "SomeName" <1234>

MaxRetries: 3

RetryTime: 60

WaitTime: 15

Account:

Context: from-internal

Extension: 8003

Priority: 1

Set:

Application:

Data:

Set:

AlwaysDelete: Yes

Archive: Yes

 

StartRetry: 3540 1(1292903137)

 

EndRetry: 3540 1(1292903132)

 

StartRetry: 3540 2(1292903158)

 

EndRetry: 3540 2(1292903153)

 

StartRetry: 3540 3(1292903179)

 

EndRetry: 3540 3(1292903174)

 

StartRetry: 3540 4(1292903200)

Status: Expired

2、外線手機撥打外線手機:

Channel: DAHDI/g0/13424246447

CallerID: "SomeName" <1234>

MaxRetries: 3

RetryTime: 60

WaitTime: 15

Account:

Context: from-internal

Extension: 13310876461

Priority: 1

Set:

Application:

Data:

Set:

AlwaysDelete: Yes

Archive: Yes

 

四、附加說明

u 生成CALL文件時不應該直接在/var/spool/asterisk/outgoing/目錄下面生成,因爲系統會一直檢測這個目錄下面的文件並嘗試去執行,如果直接在該目錄下面編輯文件,可能會出現未知問題。

u 我們一般會在/var/spool/asterisk/tmp/目錄下面先把CALL生成好,然後再將該CALL文件搬到/var/spool/asterisk/outgoing/目錄下。在將移動CALL文件到/var/spool/asterisk/tmp/目錄下面時,只能用mv命令而不能使用cp命令。因爲cp命令會將CALL文件的修改時間改爲當前時間,而使用mv命令時,CALL文件的修改時間將保持不變。只有使用mv命令時,我們生成的CALL才能在我們指定的時間開始啓動執行。

u 我們知道CALL只有在系統時間等於CALL文件修改時間時纔會執行,所以我們將CALL文件生成好後還必須修改CALL的修改時間,讓CALL在我們期望的時間啓動執行。修改文件修改時間可以使用如下命令:
touch    –t     [[CC]YY]MMDDhhmm[.SS]   filename
CC:     
年份的前兩位數字
YY:         年份的後兩位數字
MM:        月份,有前導零
DD:         日,有前導零
hh:           時,有前導零
mm:         分,有前導零
SS:          秒,有前導零
例如:
touch    –t     201012211010.10 test.call
上述命令將test.call文件的修改時間改爲2010-12-21 10:10:10

CALL文件在呼叫失敗後會根據參數MaxRetries來進行再次嘗試呼叫,MaxRetries的默認值爲0,也就是說CALL實際最大呼叫次數= MaxRetries+1。

參數WaitTime是設置主叫的振鈴時長,參數RetryTime是設置呼叫失敗再次嘗試呼叫的時間間隔。值得注意的是,RetryTime包括WaitTime在內。例如:
RetryTime:      60
WaitTime:       15
當主叫分機振鈴15秒後停止不再振鈴,接着只需等待45秒便開始再次振鈴。
因此當RetryTime小於或等於WaitTime時,系統在執行CALL文件時可能會與我們的期望結果不一樣。

爲了對CALL文件執行後的結果進行統計分析,我們應該將參數Archive設置爲Yes,這樣當CALL文件執行完成後,會在/var/spool/asterisk/outgoing_done/目錄下生成同名文件。該文件裏面記錄了系統從什麼時候發起第一次呼叫,什麼時候開始第二次呼叫,最終呼叫成功還是失敗等信息。

當主叫接通電話,系統即認爲CALL文件成功執行。主叫接通後開始呼叫被叫,系統執行時是不關心被叫是否被接通。

發佈了30 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章