基本概念就不说了,这里直接说一下freeswitch中的方法,也许你们常听说freeswitch中APP,API没有理解这2个的具体含义,我用比较简单的方法说明一下,APP就类似内部封装的function,freeswitch可以自己使用操作。比如:
bridge,echo,park等等。API就相同于我们通俗说的接口,有点像带有token认证机制的restful接口,使用fs_cli控制台或者外部工程,比如JAVA工程都可以通过这个类token对freeswitch使用这些API进行操作,freeswitch的类似token的验证码就是freeswitch设置的密码,可以在安装目录中的:freeswitch/conf/autoload_configs/event_socket.conf.xml进行修改:
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="0.0.0.0"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
<param name="apply-inbound-acl" value="lan"/>
<!--<param name="stop-on-bind-error" value="true"/>-->
</settings>
</configuration>
其中listen-ip 就是监听的ip地址,freeswitch默认是::,如果你想让其他外部访问,需要修改这里,listen-port即为监听的端口,默认只有一个8021,不过这个可以进行更改,也可以添加多个不同的端口使用。password即为所说的token秘钥了,freeswitch默认安装的密码都为:ClueCon,如果freeswitch放在公网运营的话,端口没有修改过又是开放映射的,建议修改一下这个密码。apply-inbound-acl即为允许连接访问的ip地址,可以直接写ip地址,也可以配置acl组的名称。这里本人建议通过配置acl组名称来实现。原因如下:event_socket.conf.xml这个配置如果不用acl组配置的话,以后在添加ip的话,无法动态进行添加,所以这里建议使用acl组进行ip的配置。
acl组设置也在freeswitch/conf/autoload_configs/中的acl.conf.xml中:
<list name="lan" default="deny">
<node type="allow" cidr="192.168.42.0/24"/>
<node type="allow" cidr="172.16.40.128/32"/>
<node type="allow" cidr="172.16.42.253/32"/>
</list>
其中list里的name表示acl组名。 default是默认动作,deny为拒绝,allow为接受所有, node type与之同理,cidr是填写访问的地址,需要加上/后面的,精确到子网掩码。
配置完成后,通过fs_cli -x ‘reloadxml’ 和 fs_cli -x ‘reloadacl’进行生效,具体app和api命令可以参考网站:https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools进行学习。
除了freeswitch源码调用方法外,基本所有的都是通过mod_esl模块进行通讯的,调用API进行操作的,mod_esl提供与远程FreeSwitch通信的功能。目前实现远程执行API。如JAVA,GO等语言都是通过这个模块来调用API完成对freeswitch操作的