自定义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 ... 
随机推荐
- datax-web踩坑记录
			实习期间接触了两种ETL工具:kettle.datax 1.datax-web的安装 (跟着文档一步步来就好了) https://github.com/WeiYe-Jing/datax-web/blo ... 
- spring-boot-devtools热部署揭秘
			前言 在开发项目过程中,当修改了某些代码后需要本地验证时,需要重启本地服务进行验证,启动这个项目,如果项目庞大的话还是需要较长时间的,spring开发团队为我们带来了一个插件:spring-boot- ... 
- 3-XSS漏洞
			1.XSS原理 跨站脚本攻击是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种.它允许恶意用户将代码注入网页,其他用户在浏览网页时会受到影响.恶意用户利用xss代码攻击成功后,可能得到很高的权 ... 
- selenium 设置时区
			driver = webdriver.Chrome() tz_params = {'timezoneId': 'America/New_York'} driver.execute_cdp_cmd('E ... 
- 转贴:阿里云ESC-centos7服务器小白搭建FTP教程
			1. 安装vsftpd yum -y install vsftpd 2. 检查vsftpd是否安装成功 rpm -q vsftpd vsftpd-3.0.2-29.el7_9.x86_64 # 检查方 ... 
- element ui upload 组件多文件上传,最终只显示上传一个的问题
			问题描述:一次选多张图片上传的时候界面上只有一张图片显示,并且上传调用的接口次数与选择的图片数量一致,且接口已200. JSON格式,"url"是最终显示的图片地址 { & ... 
- App测试之appium参数入门
			Appium入门参数: platformName:平台名称,一般是Android或iOS: platformVersion:平台的版本号,可以使用以下命令: adb shell getprop ro. ... 
- 多路复用IO:select poll epoll
			[电话面试]io多路复用专题面试 这个真猛 有人做了笔记:点这里 select Select(Max+1,&rset,null,null,null)是因为0~max是max+1. 过程: 将文 ... 
- [ARC152D] Halftree题解
			很好的一道题,即使是我这种菜鸡也感到心潮澎湃. 直觉有余,证明不足.思路有余,推导不足. 无论是什么比赛,对拍都是最有效的查错方式. 本篇题解里的所有图片采用 graph_editor 制作. 题意简 ... 
- Windows10一劳永逸的禁止更新/恢复更新
			之前发表过一篇文章Windows10彻底关闭自动更新,这篇文章相对复杂了些.而且还是有一定几率会触发从而自动打开更新.下面讲的就是怎么一次性永久关闭更新,即使触发了更新,也不能下载更新,从而达到真正的 ... 
