自定义Python版本ESL库访问FreeSWITCH

yizhihongxing

环境: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

自定义Python版本ESL库访问FreeSWITCH

 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

自定义Python版本ESL库访问FreeSWITCH

三、运行效果

 1、ESL库导入效果

在编译目录导入ESL库,具体效果如下:

自定义Python版本ESL库访问FreeSWITCH

 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())

运行效果如下:

自定义Python版本ESL库访问FreeSWITCH

 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

 四、资源下载

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

关注微信公众号(聊聊博文,文末可扫码)后回复 20230424 获取。

自定义Python版本ESL库访问FreeSWITCH

 

原文链接:https://www.cnblogs.com/MikeZhang/p/py39esl-20230424.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:自定义Python版本ESL库访问FreeSWITCH - Python技术站

(0)
上一篇 2023年4月24日
下一篇 2023年4月25日

相关文章

  • 备战618!用Python脚本帮你实现淘宝秒杀

    备战618!用Python脚本帮你实现淘宝秒杀攻略 一、背景介绍 据说每年的6月18日是淘宝最大的促销日,很多用户都会在这一天迎来购物狂欢节。但在这样的场景下,商品的抢购速度也非常快,很多用户都想通过自动化脚本来实现商品的秒杀,但是这么做也存在以下风险: 违反淘宝网的使用风险规范,有可能导致账号被封禁 服务器负荷较大,有可能对淘宝网的正常运作产生影响 因此,…

    python 2023年6月6日
    00
  • python 制作一个gui界面的翻译工具

    制作一个GUI界面的翻译工具可以分为以下几个步骤: 1. 确定需求 首先,你需要明确你的翻译工具的需求,例如它能够翻译哪些语言,是否需要支持多种翻译引擎等。 2. 选择GUI库 Python中有许多GUI库可供选择,例如Tkinter、PyQt、wxPython等。选择其中一个符合需求的GUI库,如果不确定可以上网查阅相关资料或者进行对比试用。 3. 集成翻…

    python 2023年6月5日
    00
  • 利用Python中的内置open函数读取二进制文件

    读取二进制文件可以使用Python内置的open函数,通过指定读取模式’rb’,来读取文件的二进制数据。 下面是利用Python中的内置open函数读取二进制文件的完整攻略: 1. 打开二进制文件 使用open函数打开二进制文件,可以指定打开模式为’rb’,代码示例: with open(‘test.bin’, ‘rb’) as f: # f为文件对象,可以…

    python 2023年6月2日
    00
  • 基于Pandas读取csv文件Error的总结

    针对“基于Pandas读取csv文件Error”的总结,我会按照以下内容进行详细讲解: 背景介绍 基于Pandas读取csv文件的错误总结 示例说明1 示例说明2 总结 接下来,我将按照这个结构逐一进行介绍和解释。 1. 背景介绍 Pandas是一个流行的Python数据分析库。通过Pandas,我们可以载入各种数据集,并且完成数据分析和处理。其中,读取CS…

    python 2023年5月13日
    00
  • python中csv文件创建、读取及修改等操作实例

    下面详细讲解一下Python中CSV文件的创建、读取和修改等操作实例。 CSV文件的创建 CSV文件是一种常见的文件格式,它可以用来存储简单的数据表格。在Python中,我们可以使用csv模块来创建和操作CSV文件。 以下是使用csv模块创建和写入CSV文件的代码示例: import csv # 将数据写入CSV文件 with open(‘data.csv’…

    python 2023年6月3日
    00
  • python实现识别手写数字 python图像识别算法

    下面是详细讲解“Python实现识别手写数字的图像识别算法”的完整攻略,包括算法原理、Python实现和两个示例。 算法原理 手写数字识别是图像识别的一个重要应用,其基本思想是将手写数字图像转换为数字特征向量,然后使用分类算法对其进行分类。常用的手写数字识别法包括KNN、SVM、神经网络等。其中,神经网络是一种非常有效的手写数字识别算法,其基本思想是通过多层…

    python 2023年5月14日
    00
  • python实现词法分析器

    实现一个词法分析器可以帮助我们更好地理解编译原理的相关概念,同时也可以加深我们对Python语言本身的理解。下面是一个基本的Python词法分析器实现攻略: 准备工作 在开始之前,你需要安装Python的编程环境,推荐使用Python 3.x版本,具体下载路径可以访问官网。另外,需要安装独立的模块来解析文本输入,可以通过Pip来进行安装,具体操作可参考下面的…

    python 2023年5月19日
    00
  • Python3 Loguru输出日志工具的使用

    Python3 Loguru输出日志工具的使用 Loguru是一个Python3的日志输出工具,它提供了简单易用的API,可以方便地输出日志信息。本文将为您详细讲解Loguru使用方法,包Loguru的安装、使用方法、常用API等。过程中供两个示例说明。 Loguru的安装 在Python3中,可以使用pip命令安装Loguru库。以下是安装Loguru的命…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部