Asterisk的Call文件
Asterisk的call文件是以.call为后缀的结构化文件,只要符合其规定的结构并放到指定的目录内,Asterisk就会根据文件自动执行外乎动作。
Asterisk call文件是如何工作的
将call文件移至spooling目录(默认在/var/spool/asterisk/outgoing)内,该路径定义在asterisk.conf中astspooldir => /var/spool/asterisk,可以修改。必须确保加载了pbx_spool.so,因为该功能主要依靠此模块实现;可以查看modules.conf文件,将autoload设为yes。若call文件的修改日期是在将来的某个时间,那么Asterisk将会等到系统时间和文件修改时间一致时执行call文件。Asterisk会时刻监视spooling目录内的文件。一旦执行完毕(成功或呼叫完规定的次数后)会立刻将call文件从spooling目录内移除;
Call文件中使用的一些键值
* Channel: <channel>: 呼叫使用的channel;
* CallerID: "name" <number> Caller ID, 必须遵循的格式是CallerID: "Some Name" <1234>
* MaxRetries: <number> 失败前重试的次数,默认值是0,即只呼叫一次,不尝试重试;
* RetryTime: <number> 重试时间间隔, Don't hammer an unavailable phone. 默认值是300秒;
* WaitTime: <number> 等待响应的时间, 默认值是45秒;
* Context: <context-name> 使用的context;
* Extension: <ext> 分机号;
* Priority: <priority> 优先级;
* Set: 设置分机逻辑使用的变量(如: FILE_CALL=custom/601/welcome);
* Application: Asterisk应用(Application);
* Data: 传给应用的选项。
我们记形如Channel: <channel>的表达式为冒号分开的键值对。在call文件中,每个键值对占一行,注释以#开头。
创建Call文件
call文件不要直接在/var/spool/asterisk/outgoing目录内创建,应该这样
* 在/var/spool/asterisk/tmp(或/tmp)目录内创建call文件;
* chown该文件的属主和权限组,使之与Asterisk的相同;
* mv call文件至/var/spool/asterisk/outgoing目录;
举例
例1:将分机601邀请进入会议室,会议室号码为9000
Channel: SIP/601
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: ext-meetme
Extension: 9000
Priority: 1
例2:让两个分机进行通话。
现象:分机601振铃 --> 601摘机 --> 分机602振铃 --> 602摘机 --> 两者通话。(两分机都在线)
Channel: SIP/601
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: from-internal
Extension: 602
Priority: 1
例3:手机号13800138000与分机601进行通话。其中DAHDI/r0是选中的trunk。
Channel: DAHDI/r0/13800138000
CallerID: "loveyou" <1234>
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: from-internal
Extension: 601
Priority: 1
注意,外拨手机或固话要有PSTN线路(电话线)连接。
当然也可以利用此方法,将Extension设置一个IVR,当手机/固话接通后,给机主播放小广告 :-)
参考
http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out
Asterisk的call文件是以.call为后缀的结构化文件,只要符合其规定的结构并放到指定的目录内,Asterisk就会根据文件自动执行外乎动作。
Asterisk call文件是如何工作的
将call文件移至spooling目录(默认在/var/spool/asterisk/outgoing)内,该路径定义在asterisk.conf中astspooldir => /var/spool/asterisk,可以修改。必须确保加载了pbx_spool.so,因为该功能主要依靠此模块实现;可以查看modules.conf文件,将autoload设为yes。若call文件的修改日期是在将来的某个时间,那么Asterisk将会等到系统时间和文件修改时间一致时执行call文件。Asterisk会时刻监视spooling目录内的文件。一旦执行完毕(成功或呼叫完规定的次数后)会立刻将call文件从spooling目录内移除;
Call文件中使用的一些键值
* Channel: <channel>: 呼叫使用的channel;
* CallerID: "name" <number> Caller ID, 必须遵循的格式是CallerID: "Some Name" <1234>
* MaxRetries: <number> 失败前重试的次数,默认值是0,即只呼叫一次,不尝试重试;
* RetryTime: <number> 重试时间间隔, Don't hammer an unavailable phone. 默认值是300秒;
* WaitTime: <number> 等待响应的时间, 默认值是45秒;
* Context: <context-name> 使用的context;
* Extension: <ext> 分机号;
* Priority: <priority> 优先级;
* Set: 设置分机逻辑使用的变量(如: FILE_CALL=custom/601/welcome);
* Application: Asterisk应用(Application);
* Data: 传给应用的选项。
我们记形如Channel: <channel>的表达式为冒号分开的键值对。在call文件中,每个键值对占一行,注释以#开头。
创建Call文件
call文件不要直接在/var/spool/asterisk/outgoing目录内创建,应该这样
* 在/var/spool/asterisk/tmp(或/tmp)目录内创建call文件;
* chown该文件的属主和权限组,使之与Asterisk的相同;
* mv call文件至/var/spool/asterisk/outgoing目录;
举例
例1:将分机601邀请进入会议室,会议室号码为9000
Channel: SIP/601
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: ext-meetme
Extension: 9000
Priority: 1
例2:让两个分机进行通话。
现象:分机601振铃 --> 601摘机 --> 分机602振铃 --> 602摘机 --> 两者通话。(两分机都在线)
Channel: SIP/601
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: from-internal
Extension: 602
Priority: 1
例3:手机号13800138000与分机601进行通话。其中DAHDI/r0是选中的trunk。
Channel: DAHDI/r0/13800138000
CallerID: "loveyou" <1234>
MaxRetries: 1
RetryTime: 60
WaitTime: 30
Context: from-internal
Extension: 601
Priority: 1
注意,外拨手机或固话要有PSTN线路(电话线)连接。
当然也可以利用此方法,将Extension设置一个IVR,当手机/固话接通后,给机主播放小广告 :-)
参考
http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out