在 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"/>`