概述

freeswitch有非常多的周边模块,给我们提供各种各样的功能,有些功能在适当的场景下可以极大的方便我们的开发和应用。

今天我们介绍一个不常用的模块mod_xml_rpc。

freeswitch自身内置有http服务器模块,而mod_xml_rpc模块提供了一种非常方便的访问fs内部API接口的方式:通过webapi方式访问,并且可以做到和fs命令行一样的效果。

我们只需要在freeswitch的配置文件中打开一些默认配置,就可以很方便的使用该功能。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.8.7

GCC:4.8.5

安装mod_xml_rpc模块

freeswitch的源码安装部署请参照之前的文章。

mod_xml_rpc模块在fs编译安装过程中,默认是有编译安装的,不需要额外的操作步骤。

cd /usr/local/freeswitch/mod

ll

-rwxr-xr-x. 1 root root 1642704 8月  17 09:59 mod_xml_rpc.so

-rwxr-xr-x. 1 root root    1347 8月  17 09:59 mod_xml_rpc.la

配置启动

mod_xml_rpc模块默认安装,但是在默认配置中是没有启动的,我想应该是出于安全的考虑,毕竟大多数使用fs的人员在不清楚mod_xml_rpc的功能的情况下,是有安全风险的。

修改freeswitch模块加载文件,启动加载mod_xml_rpc模块

cd /usr/local/freeswitch/conf/autoload_configs

vi modules.conf.xml

    <!-- XML Interfaces -->

  <load module="mod_xml_rpc"/>

查看xml_rpc模块配置文件,其中有http端口配置,默认是8080,另外有fs的鉴权信息,如果不做修改直接打开了公网的端口,有很大的安全风险。

[root@localhost autoload_configs]# cat xml_rpc.conf.xml

<configuration name="xml_rpc.conf" description="XML RPC">

  <settings>

    <!-- The port where you want to run the http service (default 8080) -->

    <param name="http-port" value="8080"/>

    <!-- if all 3 of the following params exist all http traffic will require auth -->

    <param name="auth-realm" value="freeswitch"/>

    <param name="auth-user" value="freeswitch"/>

    <param name="auth-pass" value="works"/>

    <!-- regex pattern to match against commands called against this service.

         If a command with arguments matches, it will be logged at INFO level -->

    <!--<param name="commands-to-log" value=""/> -->

  </settings>

</configuration>

测试

使用浏览器打开http://192.168.0.152:8080/,用户名密码使用xml_rpc.conf.xml文件中的配置,查看如图

使用浏览器打开http://192.168.0.152:8080/webapi/status,查看如图,和直接在命令行中使用status命令返回信息一致

使用curl方式调用fs的webapi接口

[root@localhost ~]# curl --user freeswitch:works http://192.168.0.152:8080/webapi/status

<h1>FreeSWITCH Status</h1>

2021-09-22 13:47:12<br>

UP 0 years, 0 days, 2 hours, 15 minutes, 55 seconds, 38 milliseconds, 425 microseconds<br>

FreeSWITCH (Version 1.8.7  64bit) is ready<br>

0 session(s) since startup<br>

0 session(s) - peak 0, last 5min 0 <br>

0 session(s) per Sec out of max 30, peak 0, last 5min 0 <br>

1000 session(s) max<br>

min idle cpu 0.00/99.87<br>

Current Stack Size/Max 240K/8192K

使用curl方式调用fs的自定义接口task,并附带参数test1 1234,mod_task模块代码见之前的文章

[root@localhost ~]# curl --user freeswitch:works http://192.168.0.152:8080/webapi/task?test1%201234 

task api test1, cmd:test1 1234, session:(nil)

总结

freeswitch的mod_xml_prc模块在某些场景中有大用处,通过webapi方式调用fs内部api很方便,同时也要考虑到安全方面的风险。

freeswitch内部的API提供给外部调用的方式还是挺多的,后续我们再慢慢介绍。

最后,freeswitch通过webapi方式访问自定义API配合访问自定义模块的代码逻辑,可以深入研究一下。

fs官方文档:

https://freeswitch.org/confluence/display/FREESWITCH/mod_xml_rpc


空空如常

求真得真

freeswitch xml_rpc模块的更多相关文章

  1. freeswitch新增模块

    概述 freeswitch的架构由稳定的核心模块和大量的外围插件式模块组成.核心模块保持稳定,外围模块可以动态的加载/卸载,非常灵活方便. 外围模块通过核心提供的 Public API与核心进行通信, ...

  2. freeswitch新增模块API

    概述 上一章我们讲解了freeswitch的源码基本结构,以及如何新增一个插件式模块. freeswitch的架构非常适合这种业务开发模式,即以freeswitch的基本功能为开发平台,新增插件式模块 ...

  3. freeswitch python模块

    概述 freeswitch支持多种语言的业务开发,包括C/C++,java,python,js,lua,Golang等等.freeswitch在使用python做业务开发时,有俩种接入方式,一种是ES ...

  4. freeswitch tts_commandline模块介绍

    概述 freeswitch是开源.免费的VOIP软交换平台,自带了很多功能各异的模块. mod_tts_commandline模块,本身没有TTS能力,而是通过调用TTS引擎的命令生成语音文件,tts ...

  5. freeswitch自定义模块的wiki地址

    http://wiki.freeswitch.org/wiki/Authoring_Freeswitch_Modules

  6. freeswitch拨打分机号源代码跟踪

    概述 freeswitch是一款非常好用的开源VOIP软交换平台. 之前我们有介绍过使用fs拨打分机号的方法,其中代码流程是比较复杂的,所以单独开一章介绍. fs拨打分机号,是使用send_dtmf接 ...

  7. freeswitch模块之event_socket

    这是我之前整理的关于freeswitch mod_event_socket的相关内容,这里记录下,也方便我以后查阅. mod_event_socket以socket的形式,对外提供控制FS一种途径, ...

  8. 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia

    SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解. 在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思.是这样的,Sofia-SIP 是由诺基亚 ...

  9. FreeSWITCH 加载模块过程解读

    今天来学习FreeSWITCH 加载模块过程. 哪些模块需要编译,是由源码下的 modules.conf 文件决定的. 哪些模块在程序启动时自动加载,是由 freeswitch/conf/autolo ...

  10. freeswitch插件式模块接口实现方式

    概述 freeswitch的外围模块是插件式的,可以动态的加载和卸载,使用起来非常的灵活和方便. 如果我们自己来设计一个开源的代码框架,相信这种插件式的模块结构是非常适合多人合作的模式. 本文对fs的 ...

随机推荐

  1. 1 HTTP是什么,HTTP不是什么?

    HTTP是什么? HTTP 全程超文本传输协议(HyperText Transfer Protocol). 包含三部分:超文本.传输.协议. 1. 协议 HTTP是一个用在计算机世界里的协议.它使用计 ...

  2. AtCoder Beginner Contest 071

    第二次打日服... 感觉比较水.因为聚会的原因,还几十分钟结束的时候才打开电脑. D题就没看.难度不知. 题目链接http://abc071.contest.atcoder.jp/ ABC都水题. C ...

  3. setup的执行时机

    setup是在beforeCreate之前执行的,也就是vue实例还未被创建,因为setup中并没有this指针 <script> export default { setup() { c ...

  4. Ubuntu部署NTP服务器和客户端

    https://www.cnblogs.com/lsgxeva/p/14265513.html Ubuntu部署NTP服务器和客户端 NTP或网络时间协议是一种协议,用于将网络中的所有系统时钟同步以使 ...

  5. maven系列:依赖管理和依赖范围

    目录 一.依赖管理 使用坐标导入jar包 使用坐标导入 jar 包 – 快捷方式 使用坐标导入 jar 包 – 自动导入 二.依赖范围 三.可选依赖 四.排除依赖 一.依赖管理 使用坐标导入jar包 ...

  6. MySQL进阶篇:详解索引概述

    2.1 MySQL进阶篇:第二章_二.一_索引概述 2.1.1 介绍 索引(index)是帮助MySQL高效获取数据的数据结构(有序).在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些 ...

  7. 【小白学YOLO】YOLOv3网络结构细致解析

    摘要:本文将详细介绍Yolov3的网络结构相关内容. Yolov3 网络结构 在博客"Yolo发展历史及网络结构"中我们已经详细的解释了Yolov1的网络结构,并简要的提到了Yol ...

  8. 多模态AI开发套件HiLens Kit:超强算力彰显云上实力

    摘要:Huawei HiLens Kit是一款端云协同多模态AI开发套件,支持图像.视频.语音等多种数据分析与推理计算,可广泛用于智能监控.智能家庭.机器人.无人机.智慧工业.智慧门店等分析场景. 在 ...

  9. 云小课 | 华为云KYON之L2CG

    摘要:本文介绍KYON独创的L2CG,打通大二层网络,支持企业携带私网IP直接上云,让业务敏捷迁移,大幅降低企业上云的复杂度和成本.同时支持虚拟机粒度迁移,让企业上云过程中无需迁移整个子网. 本文分享 ...

  10. vue2升级vue3:webpack vue-loader 打包配置

    如果没有啥特别的需求还是推荐vue-cli! vite  vue3 TSX项目 虽然vite 很香,但是vite  rollup 动态加载,多页面 等问题比较难搞 vite的缺点 wepback  _ ...