吴伟贤のBlog

Feed Rss

转:FreeSwitch之模块类型

11.27.2012, freeswitch, by .

声明:本文转载自 http://www.cnblogs.com/spiritonly/articles/1790859.html

       FreeSWITCH的内核特别稳定,而外部模块的接口也相当稳定,所以为我们开发自己的模块打下了良好的基础。在设计之初,Anthony Minessale 将外部模块分为13中类型,每种类型代表不同的应用方向,并且也设计了稳定的plugin接口。

       FreeSWTICH的接口类型:

  1. SWITCH_ENDPOINT_INTERFACE /* endpoint modules, 主要实现各种通信协议,如SIP、H.232、Skype、XMPP等等*/
  2. SWITCH_TIMER_INTERFACE /* 时钟接口,包括软时钟和硬时钟,FreeSWITCH自带一个soft timer */
  3. SWITCH_DIALPLAN_INTERFACE /* dialplan modules, 用来控制呼叫流程的,比如在XML中编写流程的控制,或者自己定义一种文本语法,然后编写一个dialplan module用来解析这种流程控制的语法 */
  4. SWITCH_CODEC_INTERFACE /* 编码模块,包括 G.722、G.729等,现在貌似还没有视频的编解码,有兴趣的朋友可以自己开发一个 */
  5. SWITCH_APPLICATION_INTERFACE /* 应用模块,这种模块一般是用户定义的功能,比如说使用自己的短信猫发短信,那么就可以写一个APP,在dialplan中使用 */
  6. SWITCH_API_INTERFACE /* API一般是在FreeSWITCH的shell中使用的,但是也可以通过特定方式在dialplan中使用,类似于APP modules */
  7. SWITCH_FILE_INTERFACE /* 文件操作模块,暂时还没分析这个接口 */
  8. SWITCH_SPEECH_INTERFACE /* TTS 模块,调用TTS引擎的API实现语音合成的功能,用户可以直接在dialplan中使用,比如将微软的SAPI实现TTS功能 */
  9. SWITCH_DIRECTORY_INTERFACE /* 模块操作模块,暂时还没分析这个接口 */
  10. SWITCH_CHAT_INTERFACE /* IM模块,暂时还没分析这个接口 */
  11. SWITCH_SAY_INTERFACE /* 提示音多语言支持模块,FreeSWTICH有一些内置的提示音,一个say module实现一种语音的提示音播放,比如说mod_say_zh就是使用中文播放 “元”、”角”、“分”,而mod_say_en就是英文播放”dollar“、”cent“等 */
  12. SWITCH_ASR_INTERFACE /* ASR模块,调用语音识别引擎API实现语音识别 */
  13. SWITCH_MANAGEMENT_INTERFACE /* 暂时还没有分析这个接口 */

  上面这些接口,有的比较简单,比如TTS的,SAY模块(大部分常用的都内置了,无需再开发),Dialplan模块,也有部分比较复杂,比如Endpoint和ASR这两个就教负责一些。还有一些我还没有分析到,所以不太清楚其负责程度,等写到对应的模块再说吧。

其实说白了,C/C++的plugin/module framework无非就是函数指针,那么FreeSWITCH的module接口也是大量的使用了函数指针,以达到用户实现功能模块,FreeSWITCH Core负责调度的原则。

  基本上会按照上面标志的顺序对FreeSWITCH的模块开发做一些简单的分析,然后再说一下开发中应该注意的地方(如果我做过对应模块),最后可能写一些简单的示例。

评论已关闭。