返回顶部
首页 > 资讯 > 后端开发 > Python >freeswitch开源通信 python模块介绍
  • 931
分享到

freeswitch开源通信 python模块介绍

2024-04-02 19:04:59 931人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1、概述2、环境3、安装mod_python模块4、Python脚本5、配置启动6、测试1、概述 freeswitch支持多种语言的业务开发,包括C/C++,java,pyth

1、概述

freeswitch支持多种语言的业务开发,包括C/C++,java,python,jsluagolang等等。

freeswitch在使用python做业务开发时,有俩种接入方式,一种是ESL接口,另一种是mod_python模块。

python的ESL接口是通过Socket套接字与freeswitch进行命令交互,包括发送命令、命令响应和事件回调等,类似于在外部增加一个第三方模块控制fs行为。

ESL接口部分会在后续的章节中详细介绍。

今天我们要介绍的是fs内部的mod_python语言支持模块,该模块允许我们使用python脚本开发fs呼叫控制流程。

2、环境

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

freeswitch:v1.8.7

GCC:4.8.5

3、安装mod_python模块

freeswitch源码安装时,默认不安装mod_python模块,需要我们进入目录编译安装。


cd /root/freeswitch-1.8.7/src/mod/languages/mod_python
make install

cd /usr/local/freeswitch/mod
ll -tr
-rwxr-xr-x. 1 root root 753208 9月 14 10:41 mod_python.so
-rwxr-xr-x. 1 root root 1360 9月 14 10:41 mod_python.la

4、python脚本

增加testapi.py脚本


vi /usr/local/freeswitch/scripts/testapi.py
import freeswitch
def fsapi(session,stream,env,args):
    stream.write("hello")
    freeswitch.consoleLog("info","test")


增加testapp.py脚本


vi /usr/local/freeswitch/scripts/testapp.py
import freeswitch
def handler(session, args):
  session.answer()
  freeswitch.console_log("info","testCall\n")
  session.streamFile("local_stream://moh")
  freeswitch.msleep(3000)
  session.hangup()

5、配置启动

修改freeswitch模块加载配置文件


cd /usr/local/freeswitch/conf/autoload_configs
vi modules.conf.xml
<!-- Languages -->
<load module="mod_python"/>


修改dialplan拨号计划


cd /usr/local/freeswitch/conf/dialplan
vi public.xml
…
<include>
<context name="public">
<extension name="test">
<condition>
<action application="python" data="testapp"/>
</condition>
</extension>
…


启动freeswitch


cd /usr/local/freeswitch/bin
./freeswitch -nonat
2021-09-14 10:57:06.392800 [NOTICE] mod_python.c:551 Python Framework Loading...
2021-09-14 10:57:06.405965 [CONSOLE] switch_loadable_module.c:1540 Successfully Loaded [mod_python]
2021-09-14 10:57:06.405982 [NOTICE] switch_loadable_module.c:292 Adding Application 'python'
2021-09-14 10:57:06.406012 [NOTICE] switch_loadable_module.c:315 Adding Chat Application 'python'
2021-09-14 10:57:06.406030 [NOTICE] switch_loadable_module.c:338 Adding API Function 'pyrun'
2021-09-14 10:57:06.406046 [NOTICE] switch_loadable_module.c:338 Adding API Function 'python'

6、测试

freeswitch命令行中输入命令,使用python调用API接口


freeswitch@localhost.localdomain> python testapi
2021-09-14 11:13:56.068722 [NOTICE] mod_python.c:212 Invoking py module: testapi
2021-09-14 11:13:56.088701 [INFO] switch_cpp.cpp:1443 test
hello


日志打印中,我们可以看到mod_python模块调用了testapi脚本,并打印了“test“和”hello“。

注意事项,python调用命令中,python脚本的后缀“.py“要去掉。

通过其他sip server发送呼叫请求到本机,查看日志:


2021-09-14 11:24:40.988720 [NOTICE] switch_channel.c:1114 New Channel sofia/external/10011@192.168.0.110 [73b09c9b-6a62-4372-839b-4c076af7dfc2]
2021-09-14 11:24:40.988720 [INFO] mod_dialplan_xml.c:637 Processing 10011 <10011>->10012 in context public
2021-09-14 11:24:40.988720 [NOTICE] mod_python.c:212 Invoking py module: testapp
2021-09-14 11:24:40.988720 [NOTICE] sofia_media.c:92 Pre-Answer sofia/external/10011@192.168.0.110!
2021-09-14 11:24:40.988720 [NOTICE] switch_cpp.cpp:685 Channel [sofia/external/10011@192.168.0.110] has been answered
2021-09-14 11:24:40.988720 [INFO] switch_cpp.cpp:1443 testCall
2021-09-14 11:24:40.988720 [WARNING] mod_local_stream.c:870 Unknown source moh, trying 'default'
2021-09-14 11:24:40.988720 [ERR] mod_local_stream.c:878 Unknown source default
2021-09-14 11:24:43.988724 [NOTICE] switch_cpp.cpp:733 Hangup sofia/external/10011@192.168.0.110 [CS_EXECUTE] [NORMAL_CLEARING]
2021-09-14 11:24:44.008687 [NOTICE] switch_core_session.c:1744 Session 2 (sofia/external/10011@192.168.0.110) Ended
2021-09-14 11:24:44.008687 [NOTICE] switch_core_session.c:1748 Close Channel sofia/external/10011@192.168.0.110 [CS_DESTROY]


在日志打印中,我们可以看到在dialplan拨号计划的执行过程中,通过mod_python调用了“testapp“,testapp.py脚本中应答了这通呼叫,打印日志”testcall“,并在3秒后挂机。

总结:

freeswitch做业务开发时,支持多种语言接入,很方便,用户可以根据自己的技能栈来选择接入方式和语言。

但是,不同语言在呼叫性能上肯定有差异,这个就需要用户自己来测试并评估实际使用中的差别了。

到此这篇关于有关freeswitch python模块的详情介绍的文章就介绍到这了,更多相关freeswitch python模块内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: freeswitch开源通信 python模块介绍

本文链接: https://lsjlt.com/news/135883.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • freeswitch开源通信 python模块介绍
    目录1、概述2、环境3、安装mod_python模块4、python脚本5、配置启动6、测试1、概述 freeswitch支持多种语言的业务开发,包括C/C++,java,pyth...
    99+
    2024-04-02
  • Python之模块介绍
    模块:用一段代码实现了某些功能的代码集合。Python模块分为三种:自定义模块内置标准模块开源模块os模块:提供对操作系统进行调用的接口,以下是方法os.getcwd() :获取当前工作目录,即当前python脚本工作的目录路径示例:>...
    99+
    2023-01-31
    模块 Python
  • python os模块介绍
    目录1.os 库基本介绍2.路径操作3.进程管理4.环境参数1.os 库基本介绍 os库提供通用的、基本的操作系统交互功能。 三大操作系统: windowsMac OSLinux o...
    99+
    2024-04-02
  • Python Fabric 模块 介绍及
    来源:《Python自动化运维》Fabric的安装 Fabric支持pip、easy_install或源码安装方式,很方便解决包依赖的问题,具体安装命令如下( 根据用户环境,自行选择pip或easy_install): pip instal...
    99+
    2023-01-31
    模块 Python Fabric
  • python模块介绍- socket(1
    底层的socket库可以直接访问本地Csocket库并且可与任何网络服务通信。select同时监控多个sockets,支持网络服务和多个客户端通信。 SocketServer框架抽象了很多创建网络服务器的重复工作。该类来可以使用f...
    99+
    2023-01-31
    模块 python socket
  • Mycat 网络通信模块源码
    Mycat 用户手册:系统I/O 可分为阻塞型, 非阻塞同步型以及非阻塞异步型.阻塞型I/O意味着控制权直到调用操作结束了才会回到调用者手里. 结果调用者被阻塞了, 这段时间了做不了任何其它事情. 更郁闷的...
    99+
    2024-04-02
  • Python 模块EasyGui详细介绍
    Python 模块EasyGui详细介绍 前言: 在Windows想用Python开发一些简单的界面,所以找到了很容易上手的EasyGui库。下面就分享一下简单的使用吧。 参考的链接:官网Tutorial ...
    99+
    2022-06-04
    详细介绍 模块 Python
  • python模块itsdangerous简单介绍
    安装 你可以从PyPI上直接安装这个库: pip install itsdangerous 适用案例 在取消订阅某个通讯时,你可以在URL里序列化并且签名一个用户的ID。这种情况下...
    99+
    2022-11-16
    python模块itsdangerous python itsdangerous模块 python itsdangerous
  • python os模块和fnmatch模块的使用介绍
    目录一、先介绍一下os模块1、拆分路径的方法介绍2、构建文件路径的方法介绍3、获取文件属性的方法介绍4、判断文件的类型5、文件和目录操作6、修改文件属性和判断文件属性7、遍历目录树二...
    99+
    2024-04-02
  • 介绍python的OS模块功能
         学习python一直是断断续续的,今天我们来介绍的是python的一个非常强大的模块---OS,我们来事例的时候不是用的标准的python,而是用的python的同胞兄弟Ipython,ipython 是一个 python 的交互...
    99+
    2023-01-31
    模块 功能 python
  • Python hashlib模块与subprocess模块使用详细介绍
    目录1、什么是哈希hash2、hash的用途3、如何用4、subprocess模块1、什么是哈希hash hash一类算法,该算法接受传入的内容,经过运算得到一串hash值 hash...
    99+
    2024-04-02
  • Python中python-nmap模块的使用介绍
    目录一、python-nmap的安装二、python-nmap模块的使用1.portScanner()类环境: python 2.7.13 Windows和Linux默认都...
    99+
    2024-04-02
  • Python的三种主要模块介绍
    在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件。 模块可以被项目中的其他模块、一些...
    99+
    2024-04-02
  • python math模块使用方法介绍
    math常用方法 1.math.ceil()向上取整 import math print(math.ceil(56.1)) 57 2.math.floor()向下取整 import ...
    99+
    2024-04-02
  • Python中的socket网络模块介绍
    目录Socket服务端(server.py)客户端(client.py)socket中的一些常用方法Socket 对象(内建)方法Python Internet 模块前言: Pyth...
    99+
    2024-04-02
  • Python中os模块的用法介绍
    今天小编给大家分享的是Python中os模块的用法介绍,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。1、说明os.path.exists():用于判断某个路径(文件或文件夹)是否存在...
    99+
    2023-06-15
  • Python模块的几种类型介绍
    这篇文章主要介绍“Python模块的几种类型介绍”,在日常操作中,相信很多人在Python模块的几种类型介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python模块的几种类型介绍”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • python中re模块的详细介绍
    本篇内容介绍了“python中re模块的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正则表达式的元字符有. ^ $ * { [ ...
    99+
    2023-06-04
  • muduo源码分析之TcpServer模块详细介绍
    这次我们开始muduo源代码的实际编写,首先我们知道muduo是LT模式,Reactor模式,下图为Reactor模式的流程图[来源1] 然后我们来看下muduo的整体架构[来源1...
    99+
    2024-04-02
  • Python Queue模块详细介绍及实例
    Python Queue模块 Python中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。 创建一个“队列”对象 imp...
    99+
    2022-06-04
    详细介绍 实例 模块
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作