系统启动脚本
在学习调试阶段,你可以启动到前台,而系统真正运行时,你可以使用 -nc 参数启动到后台,然后通过查看 log/freeswitch.log 跟踪系统运行情况(你可以用 tail -f 命令实时跟踪,我一般使用 less)。
一般情况下,启动到前台更容易调试,但你又不想在每次关闭 Terminal 时停止 FreeSWITCH,那么,你可以借助 screen 来实现。
在真正的生产系统上,你需要它能跟系统一起启动。在 nix 系统上,启动脚本一般放在 /etc/init.d/。你可以在系统源代码目录下找到不同系统启动脚本 debian/freeswitch.init 及 build/freeswitch.init.,参考使用。在 Windows 上,你也可以注册为 Windows 服务,参见附录中的 FAQ。
控制台与命令客户端
系统不带参数会启动到控制台,在控制台上你可以输入各种命令以控制或查询 FreeSWITCH 的状态。试试输入以下命令:
version -- 显示当前版本 status -- 显示当前状态 sofia status -- 显示 sofia 状态 help -- 显示帮助 复制代码
为了调试方便,FreeSWITCH 还在 conf/autoload_configs/switch.conf.xml 中定义了一些控制台快捷键。你可以通过F1-F12来使用它们(不过,在某些操作系统上,有些快捷键可能与操作系统的相冲突,那你就只直接输入这些命令或重新定义他们了)。
<cli-keybindings> <key name="1" value="help"/> <key name="2" value="status"/> <key name="3" value="show channels"/> <key name="4" value="show calls"/> <key name="5" value="sofia status"/> <key name="6" value="reloadxml"/> <key name="7" value="console loglevel 0"/> <key name="8" value="console loglevel 7"/> <key name="9" value="sofia status profile internal"/> <key name="10" value="sofia profile internal siptrace on"/> <key name="11" value="sofia profile internal siptrace off"/> <key name="12" value="version"/> </cli-keybindings> 复制代码
FreeSWITCH 是 Client-Server结构,不管 FreeSWITCH 运行在前台还是后台,你都可以使用客户端软件 fs_cli 连接 FreeSWITCH.
fs_cli 是一个类似 Telnet 的客户端(也类似于 Asterisk 中的 asterisk -r命令),它使用 FreeSWITCH 的 ESL(Event Socket Library)库与 FreeSWITCH 通信。当然,需要加载模块 mod_event_socket。该模块是默认加载的。
正常情况下,直接输入 bin/fs_cli 即可连接上,并出现系统提示符。如果出现:
[ERROR] libs/esl/fs_cli.c:652 main() Error Connecting [Socket Connection Error] 复制代码
这样的错误,说明 FreeSWITCH 没有启动或 mod_event_socket 没有正确加载,请检查TCP端口8021端口是否处于监听状态或被其它进程占用。
fs_cli 也支持很多命令行参数,值得一提的是 -x 参数,它允许执行一条命令后退出,这在编写脚本程序时非常有用(如果它能支持管道会更有用,但是它不支持):
bin/fs/_cli -x "version" bin/fs/_cli -x "status" 复制代码
其它的参数都可以通过配置文件来实现,在这里就不多说了。可以参见:wiki.freeswitch.org/wiki/Fs_cli
使用fs_cli,不仅可以连接到本机的 FreeSWITCH,也可以连接到其它机器的 FreeSWITCH 上(或本机另外的 FreeSWITCH 实例上),通过在用户主目录下编辑配置文件 .fs_cli_conf(注意前面的点“.”),可以定义要连接的多个机器:
[server1] host => 192.168.1.10 port => 8021 password => secret_password debug => 7 [server2] host => 192.168.1.11 port => 8021 password => someother_password debug => 0 复制代码
注意:如果要连接到其它机器,要确保 FreeSWITCH 的 Event Socket 是监听在真实网卡的 IP 地址上,而不是127.0.0.1。另外,在UNIX中,以点开头的文件是隐藏文件,普通的ls 命令是不能列出它的,可以使用 ls -a。
一旦配置好,就可以这样使用它:
bin/fs_cli server1 bin/fs_cli server2 复制代码
在 fs_cli 中,有几个特殊的命令,它们是以 “/” 开头的,这些命令并不直接发送到 FreeSWITCH,而是先由 fs_cli 处理。/quit、/bye、/exit、Ctrl + D 都可以退出 fs_cli;/help是帮助
从外部控制FreeSWTCH的方法有两种 – 通过EVENT SOCKET ;通过 built-in web interface。
下面具体介绍怎么通过内置的WEB接口控制FreeSWITCH。
1、安装 mod_xml_rpc 模块。
(1)WINDOWS版本的FreeSWITCH默认已安装。
(2)LINUX版本的FreeSWITCH需要按以下步骤进行安装使用。
i、在 modules.conf 中,将 #xml_int/mod_xml_rpc 修改为 xml_int/mod_xml_rpc。
ii、编译 mod_xml_rpc 模块
make mod_xml_rpc -install
iii、在 fs_cli 中运行 :load mod_xml_rpc 加载该模块。
2、访问方法:在IE地址栏输入 http://x.x.x.x:8080 ,x.x.x.x 是FreeSWITCH所在 主机 的 IP 。
3、输入 status 命令 的 方法 : http://x.x.x.x:8080/webapi/status
说明 : 通用格式 – http://x.x.x.x:8080/webapi/cmd?args
例如 :查看当前通话 http://x.x.x.x:8080/webapi/show?channels
官方链接 : wiki.freeswitch.org/wiki/Freesw…
登录用户名: "freeswitch", "works"\
使用web接口呼叫的例子;
http://192.168.1.235:8080/webapi/originate?sofia/gateway/myDefaultGateway/015005600327 1001
如果提示错误,请尝试重新加载: reload mod_xml_rpc 模块。