自定义Python版本ESL库访问FreeSWITCH
环境:CentOS 7.6_x64
Python版本:3.9.12
FreeSWITCH版本 :1.10.9
一、背景描述
ESL库是FreeSWITCH对外提供的接口,使用起来很方便,但该库是基于C语言实现的,Python使用该库的话需要使用源码进行编译。
如果使用系统自带的Python版本进行编译,过程会比较流畅,就不描述了。这里记录下使用自定义Python版本(比如自编译的Python版本)编译及使用ESL的过程,并提供预编译的二进制文件。
二、具体实现
1、准备自定义Python环境
这里使用 Python 3.9.12 版本,具体编译过程可参考这篇文章:
关注微信公众号(聊聊博文,文末可扫码)后回复 2022072401 获取。
Python环境目录:/usr/local/python39
2、准备编译环境
1)配置环境变量
souce /usr/local/python39/env.sh
文件内容:
#! /bin/bash pydir=/usr/local/python39
export CFLAGS="-I$pydir/include"
export LDFLAGS="-L$pydir/lib"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$pydir/lib
2)将python3的软链接指向python3.9
具体如下:
ln /usr/local/python39/bin/python3.9 -s /usr/bin/python3

3)配置python-config
将 python3.9-config 复制到 freeswitch-1.10.9.-release/libs/esl/python3 目录:
mv python-config python-config-bak
cp /usr/local/python39/bin/python3.9-config python-config
3、编译ESL库
1) 生成Makefile文件
进入 freeswitch-1.10.9.-release 目录,执行如下命令:
./devel-bootstrap.sh && ./configure
注意:该步骤需要在第2步完成之后进行。
2)编译ESL模块
进入 freeswitch-1.10.9.-release/libs/esl 目录,执行 编译操作:
make py3mod

三、运行效果
1、ESL库导入效果
在编译目录导入ESL库,具体效果如下:

2、接收事件
这里将ESL库复制到其它机器进行事件接收测试,示例代码如下:
from ESL import *
con = ESLconnection("localhost","8021","ClueCon")
if con.connected:
con.events("plain", "all");
while True:
e = con.recvEvent()
if e:
print(e.serialize())
运行效果如下:

3、发送命令
这里将ESL库复制到其它机器进行originate测试,示例代码如下:
from ESL import *
con = ESLconnection("localhost","8021","ClueCon")
if con.connected:
e = con.api("bgapi originate user/1000 &echo")
print(e.getBody())
else:
print("Not connected")
运行效果如下:

四、资源下载
本文涉及源码及预编译二进制文件,可以从如下途径获取:

自定义Python版本ESL库访问FreeSWITCH的更多相关文章
- Hadoop streaming使用自定义python版本和第三方库
在使用Hadoop的过程中,遇到了自带python版本比较老的问题. 下面以python3.7为例,演示如何在hadoop上使用自定义的python版本以及第三方库. 1.在https://www.p ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- 升级python的sqlite库版本
今天了解了一下用python获取chrome cookie信息,在研究的过程中,发现打开数据库失败,后来调查了一下发现是由于sqlite3库太老的缘故,起码需要3.8以上,然后看了一下python 2 ...
- 友善RK3399/NanoPC-T4开发板wiringPi Python库访问GPIO外设实例讲解 -【申嵌视频】
1 wiringPi for Python简介 wiringPi for Python是wiringPi的Python语言扩展,用于在Python程序中操作GPIO/I2C/SPI库/UART/PWM ...
- robot framework自定义python库
自定义python库的好处: robot framework填表式,将python的灵活性弄没了,但是不要担心,RF早就想到了解决办法,就是扩充自己的库. 1.在python应用程序包目录下创建一个新 ...
- python版本及ML库
一:关于Python版本的选择问题 关于Python的选择问题:要看学术界能不能把科学库迁移到Python3. 1:多个版本共用: 最近发现SciPy的最高版本是3.2,只能是退而求其次,不使用最新版 ...
- windows 如何将安装Anaconda之前已经安装的python版本(中已安装的库)移动到 Anaconda中
题目]如何将安装Anaconda之前已经安装的python版本(中已安装的库)移动到 Anaconda中 一.概述 之前安装tensorflow的安装了anaconda并用它进行安装,anaconda ...
- python 各种开源库
测试开发 来源:https://www.jianshu.com/p/ea6f7fb69501 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. 链接 sel ...
- python 三方面库整理
测试开发 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. –推荐 mechanize- Python中有状 ...
- python面试题库——1Python基础篇
第一部分 Python基础篇(80题) 为什么学习Python? 语言本身简洁,优美,功能超级强大,跨平台,从桌面应用,web开发,自动化测试运维,爬虫,人工智能,大数据处理都能做 Python和Ja ...
随机推荐
- This will upgrade your R installation.
sudo add-apt-repository ppa:marutter/rrutter sudo apt update sudo apt full-upgrade
- 在DeepIn系统中使用eclipse创建maven的Web项目
1. 安装好jdk和eclipse以后,启动eclipse 2. 创建maven项目,选择Maven Project 3. 在创建项目过程中,创建简单Maven项目,不使用archetype创建(会联 ...
- C语言声明与定义的区别
转自:https://blog.csdn.net/gatieme/article/details/50640424 C++程序通常由许多文件组成,为了让多个文件访问相同的变量,C++区分了声明和定义. ...
- 之前学的yield
生成器&迭代器 生成器的特性1.生成器是一个有yield关键字的函数对象,yield暂停并保存并返回调用结果2.第一次通过next开始运行这个函数,以后每次next就从yield开始继续运行函 ...
- 容器之beanfactory抽丝剥茧系列一
1.总所周知,spring ioc功能实现的顶层接口就是BeanFactory.如下面类结构图 这张更加全面: 还有更加变态的 2.BeanFactory为最顶层接口,定义了最核心的需要实现的接口 p ...
- spring boot 上传文件大小超出限制
查看源码如下: org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration 可以看见调用了Multipa ...
- celery 使用
celery 1.celery介绍 celery能用来做什么: 1.异步任务 2.定时任务 3.延迟任务 1.1 理解celery的运行原理 1.可以不依赖任何服务器 通过自身命令 启动服务 2.ce ...
- 今日Python练习--正则表达式的相关练习import re
1.如何利用Python在文本中国提取手机号码 # 如何利用Python在文本中提取手机号码 import re content="白日依山尽,黄河入180320213699999909海流 ...
- 2022年8月学科能力综合测试(TACA)试题解答 Mathemaitca练习
目录 试题地址 1 4 5 10 13 你让我猜我肯定这么猜 试题地址 https://k.sina.com.cn/article_2897328623_acb1b9ef019011qen.html ...
- Hugging News #0317: ChatGLM 会成为 HF 趋势榜的第一名吗?
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...