FreeSWITCH配置文件解析(2) dialplan 拨号计划中xml 的action解析
在 FreeSWITCH 的拨号计划(Dialplan)中,使用 XML 配置。其中,<action>
标签用于指定要执行的操作。这些操作通常是应用程序(applications)或设置变量等。下面列出常见的 <action>
类型及其含义:
1. 应用程序(Application)动作
最常见的动作是执行一个 Dialplan 应用程序。格式为:
<action application="app_name" data="app_args"/>
- app_name: 应用程序的名称,如
answer
,bridge
,hangup
等。 - data: 应用程序需要的参数。
常见应用程序示例:
1. answer
- 含义:接听来电。通常在需要媒体交互(如放音、收号)时使用。
- 语法:
<action application="answer"/>
- 注意:非必须调用(如纯路由时可不接听),但接听后会产生媒体计费。
2. bridge
- 含义:将通话桥接到另一目的地(号码、SIP分机等),核心呼叫动作。
- 语法:
<action application="bridge" data="user/1000"/>
- 关键:成功桥接后,双方媒体流连通。
3. playback
- 含义:向通话方播放音频文件(.wav, .mp3等)。
- 语法:
<action application="playback" data="/path/to/file.wav"/>
- 用法:常见于IVR提示音、等待音。
4. set
- 含义:设置通道变量(
channel variable
),影响路由逻辑或功能。 - 语法:
<action application="set" data="my_var=value"/>
- 示例:
effective_caller_id_number
:设置主叫号码hangup_after_bridge=true
:通话结束是否挂断
5. transfer
- 含义:将当前通话转至另一 Dialplan 上下文或分机。
- 语法:
<action application="transfer" data="destination [dialplan]"/>
- 场景:IVR菜单跳转、呼叫中心技能组转移。
6. hangup
- 含义:挂断通话。
- 语法:
<action application="hangup" data="[NORMAL_CLEARING]"/>
- 注意:可指定挂机原因码(如
USER_BUSY
)。
7. sleep
- 含义:暂停执行(毫秒),通常用于延迟。
- 语法:
<action application="sleep" data="1000"/>
8. record_session
- 含义:录制通话语音。
- 语法:
<action application="record_session" data="/path/to/recording.wav"/>
9. log
- 含义:将日志写入 FreeSWITCH 日志系统。
- 语法:
<action application="log" data="INFO My log message"/>
10. conference
含义:将用户加入**语音会议室**。
语法:<action application="conference" data="room-name@profile"/>
11. gentones
含义:生成特定音频信号(如拨号音、忙音)。
语法:<action application="gentones" data="tone_stream://%(400,200,400,450);loops=3"/>
12. rxfax
/ txfax
含义:接收 (`rxfax`) 或发送 (`txfax`) 传真。
语法:<action application="rxfax" data="/path/to/fax.tiff"/>
13. bind_meta_app
含义:**绑定DTMF按键触发特定动作**(如语音菜单导航)。
语法:<action application="bind_meta_app" data="key sequence application args"/>
14. set
(再强调)
关键应用:`set_tts_params` 设置TTS引擎、`ringback` 设置回铃音等。
15. intercept
含义:拦截/强插另一路通话(需权限)。
语法:<action application="intercept" data="target_uuid"/>
16. fifo
含义:加入 **FIFO(先进先出)呼叫队列**。
语法:<action application="fifo" data="queue_name@domain"/>
17. valet_park
含义:代客泊车(Park call by DTMF)。
语法:<action application="valet_park" data="slot_range"/>
18. info
含义:将通道信息输出到日志(调试用)。
语法:`<action application="info"/>`
19. export
含义:设置**导出变量**(跨Dialplan上下文传递)。
区别:export` 比 `set` 作用域更广,影响后续Dialplan执行。 * **语法**:
<action application="export" data="var=value"/>
20. play_fsv
含义:播放格式化为 `file_string://` 的音频序列。
语法:<action application="play_fsv" data="file_string:///files/prompt1.wav!/prompt2.wav"/>`