FreeSWITCH模塊類型

FreeSWITCH的內核特別穩定,而外部模塊的接口也相當穩定,所以爲我們開發自己的模塊打下了良好的基礎。在設計之初,Anthony Minessale 將外部模塊分爲13種類型,每種類型代表不同的應用方向,並且也設計了穩定的plugin接口。

FreeSWTICH的接口類型:

  • SWITCH_ENDPOINT_INTERFACE /* endpoint modules, 主要實現各種通信協議,如SIP、H.232、Skype、XMPP等等*/
  • SWITCH_TIMER_INTERFACE /* 時鐘接口,包括軟時鐘和硬時鐘,FreeSWITCH自帶一個soft timer */
  • SWITCH_DIALPLAN_INTERFACE /* dialplan modules, 用來控制呼叫流程的,比如在XML中編寫流程的控制,或者自己定義一種文本語法,然後編寫一個dialplan module用來解析這種流程控制的語法 */
  • SWITCH_CODEC_INTERFACE /* 編碼模塊,包括 G.722、G.729等,也可以實現自定義的編碼格式 */
  • SWITCH_APPLICATION_INTERFACE /* 應用模塊,這種模塊一般是用戶定義的功能,比如說ASR的接入,那麼就可以寫一個APP,在dialplan中使用 */
  • SWITCH_API_INTERFACE /* API一般是在FreeSWITCH的shell中使用的,但是也可以通過特定方式在dialplan中使用,類似於APP modules */
  • SWITCH_FILE_INTERFACE /* 文件操作模塊,文件格式或文件操作相關的api, 通過指令操作媒體服務本機的文件 */
  • SWITCH_SPEECH_INTERFACE /* TTS 模塊,調用TTS引擎的API實現語音合成的功能,用戶可以直接在dialplan中使用,比如將微軟的SAPI實現TTS功能 */
  • SWITCH_DIRECTORY_INTERFACE /* 模塊操作模塊,暫時還沒分析這個接口 */
  • SWITCH_CHAT_INTERFACE /* IM模塊,可以用來做一對一或一對多的聊天或對話窗口 */
  • SWITCH_SAY_INTERFACE /* 提示音多語言支持模塊,FreeSWTICH有一些內置的提示音,一個say module實現一種語音的提示音播放,比如說mod_say_zh就是使用中文播放 “元”、"角”、“分”,而mod_say_en就是英文播放”dollar“、”cent“等 */
  • SWITCH_ASR_INTERFACE /* ASR模塊,調用語音識別引擎API實現語音識別 */
  • SWITCH_MANAGEMENT_INTERFACE /* 暫時還沒有分析這個接口 */

上面這些接口,有的比較簡單,比如TTS的,SAY模塊(大部分常用的都內置了,無需再開發),Dialplan模塊,也有部分比較複雜,比如Endpoint和ASR這兩個就教複雜一些。還有一些我還沒有分析到,所以不太清楚其複雜程度,等寫到對應的模塊再說吧。

其實說白了,C/C++的plugin/module framework無非就是函數指針,那麼FreeSWITCH的module接口也是大量的使用了函數指針,以達到用戶實現功能模塊,FreeSWITCH Core負責調度的原則。

基本上會按照上面標誌的順序對FreeSWITCH的模塊開發做一些簡單的分析,然後再說一下開發中應該注意的地方(如果我做過對應模塊),最後可能寫一些簡單的示例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章