以下为所有应用(Application)的一览表,点击对应的超链接进入源网站查看英文版本,若要看中文版本可往下拉按序查找。翻译不妥处请多多指教。
A
B
C
D
E
F
G
H
I
J
L
M
P
Q
R
S
T
U
V
W
answer
作用:应答一个信道中的呼叫
示例:
|
att_xfer
参数表:
|
参数说明:
|
作用:在呼叫中加入第三方channel_url,然后将源呼叫着转移到channel_url
示例:
|
bind_digit_action
参数:
|
参数说明:
realm:数字域,一定程度上类似于dialplan的content digits:要匹配的数字 ~regex:正则表达式 string:dialplan或者API命令,例如exec: 可选项: value:包含命令的参数 dtmf target leg:值可以为aleg,bleg,peer,both;默认为aleg event target leg: 值可以为aleg,bleg,peer,both;默认为aleg |
作用:绑定对应DTMF输入的操作
示例1:
|
示例2:
|
bind_meta_app
参数:
KEY LISTEN_TO FLAGS APPLICATION[::PARAMETERS] |
参数说明:
|
作用:在桥接及执行另一个dialplan APP期间,对特定的呼叫leg上应答输入的DTMF按键序列。
示例:
|
break
参数:
|
作用:终断信道中正在运行的应用
示例:
|
注意:目前还不能打断一个endless_playback
bridge
参数:
|
作用:将信道桥接到另一已存在的信道上,用于产生通话
示例:
简单的终端:
bridge |
多终端同时呼叫,没有并发性的限制,第一个应答的有应答权,第二个就没有
bridge |
热备份,一个呼叫失败后拨打另外一个
bridge |
bridge_export
作用:通过桥接导出参数
示例:
|
capture
作用:将捕获到的数字添加到信道变量数组中
示例:
|
chat
参数:
protocol | from_jid | to_jid | message | [ |
参数说明:
protocol — 其值为sip, verto, jingle等等 from_jid — 呼叫方或者发送者的uri to_jid — 接收消息的uri message — 发送的消息体 content-type — 默认类型为text |
作用:给一个IM客户端发送文本消息
注:参数间以“|”隔开,允许其中有空格
示例(命令行的中):
freeswitch@default>chat sip|[email protected]|[email protected]|Hello chat via SIP! freeswitch@default>chat verto|[email protected]|[email protected]|Hello chat via Verto! |
Perl中:
$api = new freeswitch::API(); $foo = $api->execute("chat", "jingle|from_jid|to_jid|test Jingle message"); |
check_acl
参数:
|
参数说明:
ip:IP地址 acl:访问控制列表规则 cidr:一个网络段 hangup_cause:挂断原因 |
作用:根据访问控制列表中的呼叫发起方地址是否符合规则,然后执行允许或者拒绝的操作
示例1:
|
如果从IP地址发出的呼叫没有在名叫acl的访问控制列表中,将会被中止,错误代码为normal_clearing
示例2:
|
从IP地址为1.2.3.4发起的呼叫将与CIDR(1.2.3.0/8)匹配,并在dialplan中继续传递(呼叫)。
从IP地址为4.3.2.1发起的呼叫将不会匹配并会被中止,因为内部的标记位(inline)的值为true。这个应用执行完毕后不再执行dialplan后续的代码。
clear_digit_action
参数:
|
参数说明:
1.如果没有指明参数,将默认提供参数all
2.参数target的值为peer(对方)或者both(两者)
作用:清除所有的数字绑定
示例:
|
clear_speech_cache
作用:清除所有的语音(speech)句柄的缓存
示例:
|
cng_plc
作用:舒适噪音生成的配置
示例:
|
作 用:舒适噪音生成(Comfort noise generation)用来确保呼叫过程中未失去连接(因为通话过程中可能有双方没有讲话的情况,舒适噪声的产生让通话双方知道该通话还在持续中)。 cng_plc的全称为comform noise gerenarionandpackage loss concealment
deflect
作用:挂断当前通话并向通话发起者(是一个网关或者代理)发送一个REFER消息和一个新的INVITE消息
示例:
|
其中sip:可带可不带
delay_echo
作用:该应用会让呼叫信道延迟(delay)音频循环播放。当延迟若干毫秒后,将返回voice,DTMF等等的送音状态。这在RTP音频在双方工作的情况下的检查十分有帮助,因为当在测试说话者电话时echo应用经常失效。简单点说就是暂停若干毫秒后执行echo
示例:
|
detect_speech
作用:实现语音识别
使用方法:
detect_speech detect_speech grammar detect_speech grammaron detect_speech grammaroff detect_speech grammarsalloff detect_speech nogrammar detect_speech param detect_speech pause detect_speech resume detect_speech start_input_timers detect_speech stop |
示例:
待补充 |
digit_action_set_realm
作 用:与bind_digit_action配合使用。数字绑定后选择数字将产生对应的应用(Usedwith to bind_digit_action select the realm for which digitswillbe applied whendigits are bound)。
示例:
|
displace_session
参数:
|
参数说明:
path:任何FreeSWITCH支持的声音格式,例如wav,local_steam,shout等 flags:mlr |
mrl的详细说明:
m/mux = mux, 两个终端仍能听到对方 l = loop, -1为无限循环 r = 应用于读方,默认为写方(在b-leg上写入而不是a-leg) |
作用:替换(部分替换)信道中的文件或流。
示例:
|
这个是diaplan中的一部分,用来调用一个bind_mete_app或者execute_extension中的语句。然后将会开始记录会话,并且没15秒插入一个beep。标记位mux确保音频将被混音。
eavesdrop
参数:
[ |
参数说明:
|
作用:用来监视信道。通常用来会话交驳,若要长期监视需使用mod_spy
示例:待补充
echo
作用:将呼叫信道置于一个环路中。它将简单的返回所有发送的东西,包括语音,DTMF按键灯。
示例:
|
endless_playback
作用:这个应用用于无限播放一个文件。并且播放不能别外部打断
示例:
|
eval
参数:
|
作用:用于执行一个内部API,或者简单的向终端输出一些日志文件
示例:
|
event
参数:
|
作用:可用于产生(fire)任意事件。
示例:
|
export
语法:
|
作用:将变量从a-leg导出到b-leg上
示例1(不仅导出到B-leg上,同样也在A-leg上设置):
|
示例2(加上前缀nolocal:仅仅只导出到B-LEG上):
|
execute_extension
语法:
|
作用:在一个表达式中执行另一个表达式并得到其返回值,就像执行宏一样执行完后返回,而transfer没有返回。
示例:
|
fax_detect
作用:传真检查工具
使用示例:
|
示例:
当检测到传真的时候,呼叫将被路由到dialplan中的content=default,表达式为name=fax去
|
file_string
作用:file_string是一种十分有用的多路音频文件的播放器、写入序列号的应用。
使用方法:
· 高级别(high level), 使用了大部分switch_ivr_playback()的功能 · 低级别(low level), 直接用文件句柄 |
示例(高级别):
|
示例(低级别):
|
示例(播放等待音乐):
|
flush_dtmf
作用:输出一个信道中接收的DTMF。在呼叫方需要输入额外的数字的情况或者想在发送到另一个对话前清空所有DTMF数字时十分有用。
使用方法:
|
gentones
语法:
gentones |
作用:生成TGML声调
示例:
|
group
语法:
group,[insert|delete|call]: |
作用:从数据库(内部数据库或者ODBC)中添加或者删除组,允许在bridge应用中直接呼叫组。
示例1(命令行下):
|
示例2:
|
hangup
作用:挂断一个通话,可选择挂断原因
示例:
|
如果是在桥接(bridge)后挂断,那么FreeSWITCH会将从bridge收到的挂断原因覆盖该值,可通过设置参数sip_ignore_remote_cause=true来避免这样的情况。
info
作用:向控制台打印信道的相关信息
示例:
|
在LUA脚本中设置输出级别:
|
Inline Dialplan
参数:
|
作用:允许在dialplan中插入一段代码表达式
示例:
uuid_transfer |
示例2:
|
intercept
语法:
intercept [-bleg] |
作用:允许一个信道将它自己桥接到另一个呼叫的a-leg或者b-leg。而该呼叫的另一条腿将被自动挂断
示例:
|
示例2(带参数的),仅在呼叫未桥接的情况下生效:
|
IVR Menu
作用:允许在XML中以简单的描述来便捷的创建IVR
示例:
使用:
|
参数说明:
每个菜单都支持绑定多个按键操作如:
|
示例2(一个数字执行多个应用):
|
Limit
语法:
limit_execute |
参数说明:
backend:后端,详见后续提供的表 realm:任意名字,域名 resource:被限制的资源 max:运行并发的呼叫数量 transfer_destination_number:在拨号计划中转移到这个表达式中,该项为可选项,如果不想使用,填入limit_excceeded即可 |
作用:限制某段号码对某个资源的访问权限。
示例:
|
limit_execute
语法:
limit_execute |
参数说明:
backend:后端,详见后续提供的表 realm:任意名字,域名 resource:被限制的资源 max:运行并发的呼叫数量 application:要执行的应用 application arguments:应用的参数 |
作用:如果资源没有被限制则执行请求的应用
示例:
|
log
语法:
|
作用:向终端打印一个日志文本
示例:
|
media_reset
作用:重置所有支路(bypass)/代理(proxy)的媒体标志位
示例:
|
mkdir
语法:
mkdir |
作用:创建一个目录
示例:
|
multiset
语法:
|
作用:设置多个信道变量
备注:默认的分隔符为空格,如果要修改可在最前面加“^^”,然后就可以用任意的分隔符了。这个应用可以运行在XML的 [[Dialplan_XML#Inline_Actions|inline]]
示例:
|
mutex
语法:
mutex |
作用:互斥锁,即同一时间内仅允许一个呼叫,抑制其他的呼叫流
page
使用方法:
page (page_path=/path/to/page_announcement.wav) |
作用:在被应答的等待时间中,向信道列表播放录音文件。
示例:
page (page_path=/path/to/tornado_warning.wav) |
上述这个示例将分别在不同的线程中呼叫1000和1001,谁先接听,取决于sip_auto_answer的值,并且文件tornado_warning.wav将会播放。
示例:
page (page_path=/path/to/tornado_warning.wav) |
park
作用:将一个呼叫悬空(park)。如果一个呼叫被悬空,必须要桥接(bridge)或者转移(transfer)到一个有效的位置。要注意的是,悬空(park)一个呼叫后不会播放等待音乐或者其他任何音乐!
示例:
|
phrase
语法:
phrase |
作用:播放一个预定义宏里目的文本。
示例:
extension name="556">
|
pickup
用法:
pickup/keyname pickup+keyname |
作用:允许接听方为一个或者多个分组,反之即可以同时向一个分组发起呼叫
示例:
|
分组的设置:
|
play_and_detect_speech
语法:
|
参数说明:
|
作用:在语音识别处理的时候播放文件,结果将保存在信道变量[[Variable_detect_speech_result|detect_speech_result]]中
示例:
|
play_and_get_digits
语法:
|
参数说明:
|
作用:播放一个提示音乐然后等待数字的输入。提示音乐可以被数字的输入打断
示例:
|
playback
作用:在当前信道播放一个声音文件
示例1:
|
示例2(从第N个采样点开始播放):
|
pre_answer
作用:类似于SDP中的SIP发送状态码183
示例:
|
presence
语法:
presence |
作用:发送一个PRESENCE_IN或者PRESENCE_OUT类型的事件。目前来说在sofia中使用的不是很频繁。当用户处于忙线状态时并不会对其钩子状态产生影响,但是将发送一个带用户钩子状态的事件。
示例1:
|
示例2:
|
privacy
语法:
|
作用:在呼叫中设置呼叫方策略
示例:
|
queue_dtmf
语法:
queue_dtmf |
作用:在终端上的会话中使用配置的方法桥接成功后发送DTMF按键数字
示例:
|
以上的例子中,当连接到分机号101后的每隔100毫秒发送‘0123456789ABCD*#’中的一个数字,如果没有配置时间,默认时间为2000毫秒(位间隔还是整体待考究)
read
语法:
read |
参数说明:
|
作用:播放一段声音文件后等待用户输入按键。
示例1:
|
示例2:
|
record
语法:
record,Record File, |
参数说明:
|
作用:录音
示例:
|
record_session
作用:对整个会话或者呼叫进行录音
示例:
|
文件格式:
|
redirect
作用:将信道重定向到另一个终端上。一定要注意不要重定向到一个不兼容的信道上,否则将不会得要你想要的效果。
示例1:
|
示例2:
|
regex
语法:
|
参数说明:
|
作用:执行一个正则表达式
示例1,控制台下(返回结果为05555555555):
|
示例2,控制台下(返回结果true):
|
示例3:
|
remove_bugs
作用:移除信道中所有的三通(media bugs,在通话的双方中加入第三方进行监听),包括设置在record_session,tone_detect,或者其他有用三通的应用。
示例:
|
rename
语法:
rename |
作用:重命名文件
示例:
|
respond
用法:
|
作用:向SIP设置发送SIP会话应答码
示例:
|
ring_ready
作用:向发起方(originator)发送代码为180的响铃
示例:
|
say
语法:
say |
作用:使用预先录制好的声音文件读出来,或者读数据,事件,数字等不同的东西。
参数说明:
1.模块的名字通常为一个信道语言,如en,或者es
2.say_tpye有
NUMBER ITEMS PERSONS MESSAGES CURRENCY TIME_MEASUREMENT CURRENT_DATE CURRENT_TIME CURRENT_DATE_TIME TELEPHONE_NUMBER TELEPHONE_EXTENSION URL IP_ADDRESS EMAIL_ADDRESS POSTAL_ADDRESS ACCOUNT_NUMBER NAME_SPELLED NAME_PHONETIC SHORT_DATE_TIME |
3.say_method参数,如果要读的数字为42
|
4.gender参数
FEMININE MASCULINE NEUTER |
示例:
|
sched_broadcast
语法1:
application="sched_broadcast" data="[+] |
语法2:
application="sched_broadcast" data="[[+] |
作用:计划中的广播
示例:
|
sched_cancel
语法:
|
作用:取消一个计划中的广播或者呼叫转移
示例1:
|
示例2:
|
sched_hangup
作用:计划挂断一个通话,是基础的电话限制。
使用方法:
|
示例1:
|
sched_transfer
用法1:
application="sched_transfer" data="[+] |
或者作为一个API:
sched_transfer [+] |
作用:计划一个呼叫转移
示例:
|
send_info
备注:暂缺
send_display
语法:
send_display |
作用:发送一个带sipfrag的info包。如果电话支持它在将显示器上显示消息。
示例:
|
send_dtmf
语法:
send_dtmf |
作用:向配置该方法的终端发送DTMF数字。使用字符w将有5秒的延迟,大写字母W将有1秒的延迟。
示例:
|
字符串中的每个字符之间有100毫秒的延迟时间,如果没有指定默认为2000毫秒。
session_loglevel
作用:重设日志级别,仅对当前信道有效,配置于switch_conf.xml中
示例1:
|
示例2(在switch.conf.xml中配置方法):
示例3(配置完整的debug追踪,在dialplan中添加以下代码):
|
set
语法:
set |
作用:在调用它的信道中设置信道变量
示例:
|
注意:在执行前这些变量将不会被设置。如果向在一个条件中马上设置,需在内联(inline)模式下使用,如
[[Dialplan_XML#Inline_Actions|inline]] |
set_name
语法:
set_name STRING |
作用:重命名一个信道名称(即设置通道变量${channel_name}的值)
示例:
|
set_audio_level
语法:
set_audio_level |
参数说明:
direction:方向,取值有read和write level:等级,取值有-4到4 |
作用:增减信道中输入音频流或者输出音频流的级别
示例:
|
set_global
语法:
set_global |
作用:为所有信道设置全局变量。即使创建它的信道已挂断该变量仍然存在。
示例:
|
set_profile_var
语法:
set_profile_var |
作用:在信道事件中添加头域
示例:
|
set_user
语法:
set_user |
作用:如果用户已授权过,为用户定义定义所有的信道变量。
示例:
|
示例2(为所有的变量添加前缀):
|
set_zombie_exec
作用:为当前信道设置僵尸执行标记位。即当信道挂断后,会话将继续执行命令。可用于执行额外的操作。
示例:
|
示例2(LUA中的操作):
|
sleep
作用:将信道暂停若干毫秒时间,然后复原至之前的暂停点。
示例:
|
如果想在DTMF中使用,需进行以下的设置
|
以上的配置可以防止在IVR中直接退出。
soft_hold
使用方法:
|
参数说明:
|
注:如果moh未设置,将使用默认的MOH.
作用:将桥接后的通道至于等待状态,当且仅当两个信道已桥接的情况下才能使用。
sound_test
作用:向终端输出信道相关包的信息(非LOG文件)
用法:
|
输出示例:
2013-02-01 18:31:01.278139 [CONSOLE] switch_ivr.c:109 packet_avg=6281 packet_peak=32510 period_avg=32493 global_avg=32290 2013-02-01 18:31:01.298140 [CONSOLE] switch_ivr.c:109 packet_avg=5737 packet_peak=32507 period_avg=32497 global_avg=32290 2013-02-01 18:31:01.318142 [CONSOLE] switch_ivr.c:109 packet_avg=7194 packet_peak=32468 period_avg=32490 global_avg=32290 2013-02-01 18:31:01.338141 [CONSOLE] switch_ivr.c:109 packet_avg=5132 packet_peak=32508 period_avg=32493 global_avg=32290 2013-02-01 18:31:01.358143 [CONSOLE] switch_ivr.c:109 packet_avg=6233 packet_peak=32475 period_avg=32490 global_avg=32290 2013-02-01 18:31:01.378143 [CONSOLE] switch_ivr.c:109 packet_avg=6118 packet_peak=32502 period_avg=32492 global_avg=32290 2013-02-01 18:31:01.398141 [CONSOLE] switch_ivr.c:109 packet_avg=5597 packet_peak=31998 period_avg=32430 global_avg=32290 2013-02-01 18:31:01.418143 [CONSOLE] switch_ivr.c:109 packet_avg=6666 packet_peak=32500 period_avg=32438 global_avg=32290 2013-02-01 18:31:01.438143 [CONSOLE] switch_ivr.c:109 packet_avg=4821 packet_peak=31928 period_avg=32387 global_avg=32290 2013-02-01 18:31:01.458140 [CONSOLE] switch_ivr.c:109 packet_avg=4672 packet_peak=31163 period_avg=32275 global_avg=32290 2013-02-01 18:31:01.478142 [CONSOLE] switch_ivr.c:109 packet_avg=5634 packet_peak=32503 period_avg=32294 global_avg=32290 2013-02-01 18:31:01.498140 [CONSOLE] switch_ivr.c:109 packet_avg=6543 packet_peak=32441 period_avg=32306 global_avg=32290 2013-02-01 18:31:01.518140 [CONSOLE] switch_ivr.c:109 packet_avg=5549 packet_peak=32502 period_avg=32320 global_avg=32290 |
speak
语法:
|
注:引擎flite四个voice选项,分别为awb,kal,rms,slt
用法:用定义的语音引擎说出一个字符串或者文件
示例:
|
start_dtmf
作用:可通过在dialplan中使用该参数激活带内DTMF监听(例如监听信道中的DTMF)。如果想在信道中能识别DTMF音键(tones),除此之外别无他法
示例:
|
警告:千万不要将start_dtmf与start_dtmf_generate混合使用,否则会产生严重的后果。还有,如果跟ring_ready一起使用,请确保先调用ring_ready,否则将不起作用。
注:该应用使用了三通(Media bug,在通话的双方加入第三方监听)
start_dtmf_generate
作用:为当前信道生成一个DTMF
用法:
|
注意(当于bridge_early_media一起使用时将不起作用):
|
stop_displace_session
作用:停止替换文件
示例:
|
stop_dtmf
作用:停止带内DTMF监听
用法:
|
stop_dtmf_generate
作用:停止当前信道中的DTMF生成
用法:
|
stop_record_session
作用:停止会话录音
示例:
|
stop_tone_detect
作用:停止信道中的音调(tone)监测
用法:
|
strepoch
作用:返回从新纪元(epoch,1970年1月1日0时0分0秒)至今的秒数。
示例:
|
strftime
语法:
|
参数说明:如果时间格式未指定,默认为%Y-%m-%d %T,打印如2010-04-28 17:47:29
作用;格式话显示当前时间。
示例1:
|
示例2:
|
示例3:
|
strftime_tz
语法:
|
作用:根据时区格式化的显示当前事件,默认为GMT,%Y-%m-%d %T
示例:
|
注:时区列表可在autoload_config/timezone.conf.xml中找到
strmicroepoch
作用:返回从新纪元(epoch,1970年1月1日0时0分0秒)至今的毫秒数。
示例:
|
system
语法:
system |
作用:执行一个系统命令并等待其结果(阻塞状态)
示例1:
|
示例2(存储为信道变量):
|
示例3(移除换行符):
|
three_way
语法:
|
作用:强行加入一个给定的呼叫,即未收到邀请加入某个活跃呼叫中的信道
tone_detect
语法:
|
参数说明:
域 |
描述 |
示例 |
key |
tone的名字 (用户定义) |
busy, fax, mytone |
freqs |
监听频率 |
425 - 480,620 |
flags |
嗅探tones的方向(r = read (default), w = write) |
r |
timeout |
等待来音的空窗期 (0为永久, + |
+2000 (2 seconds) or 1227132612 (absolute example) |
app |
可选项,当tone检测条件符合时要调用的应用 |
transfer, hangup |
appdata |
可选项,上述应用的参数 |
'1000 XML default' , 'normal_clearing' |
hits |
调用APP前需要的命中数(避免相似误差) |
|
作用:音调(tone)检测
示例:
|
示例2:
|
transfer
语法:
transfer |
作用:立即将呼叫信道转移到一个新的地方(content)。
示例1:
|
示例2:
|
示例3:
|
示例4:
|
unbind_meta_app
作用:取消之前用bind_meta_app的按键绑定。如果未带参数,将取消所有的按键绑定
示例:
|
unset
作用:清除一个信道变量
示例:
|
verbose_events
作用:显示所有事件,可在XML DIALPLAN中内联执行。
示例:
|
wait_for_answer
作用:继续前等待会话被应答
示例:
|
wait_for_silence
语法:
wait_for_silence |
参数说明:
silence_thresh:静阈值 silence_hits: 低于阈值的帧数 listen_hits:无声的帧数 timeout_ms:超时毫秒数 file:可选项,可被读取的声音文件,用于沉默监听的分析 |
作用:暂停dialplan的执行,经过一定长度的静音后继续执行。
示例:
|
翻译出处:https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools