利用内置的WEB接口控制FreeSWITCH

简介: 系统启动脚本在学习调试阶段,你可以启动到前台,而系统真正运行时,你可以使用 -nc 参数启动到后台,然后通过查看 log/freeswitch.log 跟踪系统运行情况(你可以用 tail -f 命令实时跟踪,我一般使用 less)。

系统启动脚本


在学习调试阶段,你可以启动到前台,而系统真正运行时,你可以使用 -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 模块。

相关文章
phpstorm插件应用:Test RESTful WEB Service 控制台接口调试工具
phpstorm插件应用:Test RESTful WEB Service 控制台接口调试工具
195 0
|
存储 安全 PHP
【100天精通Python】Day48:Python Web开发_WSGI网络服务器网关接口与使用
【100天精通Python】Day48:Python Web开发_WSGI网络服务器网关接口与使用
98 0
|
2月前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
106 6
|
4月前
|
API 数据安全/隐私保护 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
【7月更文挑战第23天】Python的RESTful API设计在Web开发中流行,提升效率与体验。REST强调HTTP方法(GET, POST, PUT, DELETE)操作资源。使用Flask框架可快速实现API,如管理用户信息。示例代码展示如何创建、读取、更新和删除用户,通过不同HTTP方法和URL路径。实际应用中,增加验证、错误处理和权限控制可增强API的安全性和稳定性。安装Flask后,可运行代码测试API功能。
65 6
|
4月前
|
安全 API 网络架构
Python RESTful API设计新篇章,打造高效、易用、安全的Web服务接口,你准备好了吗?
【7月更文挑战第22天】在数字化转型中,RESTful API借助Python的Flask和Django REST Framework,提供高效、易用和安全的接口设计。Flask示例展示了简洁的CRUD操作,Swagger等工具增进API文档的易用性,而HTTPS、JWT和输入验证确保安全性。Python RESTful API设计涉及效率、可用性和安全,是不断进化的Web服务接口的关键。准备好踏上这一新篇章了吗?一起探索,创造卓越!
62 2
|
6月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
243 7
|
3月前
|
开发框架 前端开发 API
使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理
使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理
|
5月前
|
JSON 前端开发 Java
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
一文读Web开发 之接口后端接口、类与前端请求、拦截器编写
134 6
|
5月前
|
SQL 缓存 测试技术
RESTful API设计的最佳实践:构建高效、可维护的Web服务接口
【6月更文挑战第11天】构建高效、可维护的RESTful API涉及多个最佳实践:遵循客户端-服务器架构、无状态性等REST原则;设计时考虑URL结构(动词+宾语,使用标准HTTP方法)、使用HTTP状态码、统一响应格式及错误处理;确保数据安全(HTTPS、认证授权、输入验证);实施版本控制;并提供详细文档和测试用例。这些实践能提升Web服务接口的性能和质量。
|
6月前
|
前端开发 API Docker
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
web前端开发项目走proxy代理后端接口,构建发布到生产等环境后,如何修改api接口
86 0