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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章