这里以模块 helloworld 为例。
1. 创建模块目录 freeswitch/src/mod/applications/mod_helloworld
2. 把模块名放在freeswitch/modules.conf文件中,make时 根据此文件选择编译哪些模块并生成相应模块的makefile文件
3. 如果你的模块以依赖第三方库,则需要在makefile中指定头文件以及库的路径,一个例子:
LOCAL_CFLAGS=-I$(switch_srcdir)/libs/libteletone/src LOCAL_LDFLAGS=$(switch_srcdir)/libs/libteletone/libteletone.la
LOCAL_OBJS=file.c file2.c file3.c local_depend: $(LOCAL_OBJS)
freeswitch中 每个模块从加载->运行->关闭 流程由三个宏实现,实际编写模块过程为几个宏的填写。具体业务逻辑在宏内部实现。
SWITCH_MODULE_LOAD_FUNCTION (mod_name)
SWITCH_MODULE_DEFINITION 模块的定义
mod_helloworld.c 代码:
编译: sudo make mod_helloworld
安装 sudo make mod_helloworld-install
dialplan里试一试 function helloworld.
-----------------------------------
高级:
1.模块加载函数内可以加载自定义xml配置文件.
例子:
<configuration name="mymodule.conf" description="MyModule configuration">
模块可以向系统订阅自己感兴趣的事件,只需一个函数,指定一个你自己的事件回调。
例子:订阅所有事件
接下来就是编写你的回调函数
void mymodule_event_handler(switch_event_t *event);