自定义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

自定义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月25日
下一篇 2023年4月25日

相关文章

  • 使用python将图片按标签分入不同文件夹的方法

    下面是使用Python将图片按标签分入不同文件夹的方法的完整攻略。 步骤一:安装依赖包 在Python项目中,通常需要用到两个常用的第三方库:Pillow和os,如果你已经安装了Python,可以通过以下命令安装这两个库: pip install Pillow pip install os 步骤二:准备数据 使用python进行图片分类,需要准备一个包含所有…

    python 2023年6月3日
    00
  • Python socket实现的简单通信功能示例

    我们来详细讲解一下“Python socket实现的简单通信功能示例”的完整攻略。 首先,为了使用Python socket库实现通信功能,我们需要明白以下几个基础概念: IP地址:指的是网络中的设备的唯一标识,从网络层上区分网络中不同的计算机。 端口:在同一台计算机中,基于不同应用程序的需要,会分配不同的端口。这样可以让此计算机上的不同应用程序同时使用网络…

    python 2023年5月19日
    00
  • Python语法学习之进程池与进程锁详解

    Python语法学习之进程池与进程锁详解 进程池 在Python中,可以通过multiprocessing模块来实现多进程的编程。当我们需要创建多个进程的时候,就需要使用到进程池。 进程池的使用 要使用Python中的进程池,可以使用multiprocessing.Pool类来创建进程池。具体的使用方法如下: from multiprocessing imp…

    python 2023年5月19日
    00
  • 详解Python 序列化Serialize 和 反序列化Deserialize

    详解Python 序列化Serialize 和 反序列化Deserialize 序列化(Serialization)是将数据结构或对象状态转换为可以存储或传输的格式的过程。在网络传输、数据存储和编程中经常会使用序列化。Python提供了可以方便地序列化和反序列化数据的标准库模块。 序列化 Python常用的序列化方式有两种:pickle和json。 Pick…

    python 2023年6月2日
    00
  • python实现kNN算法识别手写体数字的示例代码

    现在我来为你讲解Python实现kNN算法识别手写体数字的示例代码的完整攻略。本文主要包含以下几个部分: kNN算法简介 数据集介绍 实现过程 示例说明 总结 1. kNN算法简介 kNN算法是一种基于距离度量进行分类的机器学习算法。其全称为k-Nearest Neighbor(k近邻)算法。kNN算法的核心思想是:如果一个样本在特征空间中的k个最相似(即特…

    python 2023年6月6日
    00
  • Python实现语音识别和语音合成功能

    Python实现语音识别和语音合成功能 简介 语音识别和语音合成技术是人机交互领域非常重要的一部分,Python作为广受欢迎的编程语言之一,具有丰富的语音处理库和工具,可以用来实现语音识别和语音合成功能。 实现流程 语音识别 语音识别是将语音转换为文本的过程,一般分为以下几个步骤: 获取语音输入 对语音进行预处理,如去除噪音等 将预处理后的语音转换成数字信号…

    python 2023年5月19日
    00
  • python 动态调用函数实例解析

    Python动态调用函数实例解析 在Python中,我们可以使用动态调用函数的方式来实现更加灵活的编程。本文将介绍Python动态调用函数的实现方式,包括使用函数名字符串、使用getattr函数、使用字典等方式,并提供两个示例。 使用函数名字符串 在Python中,我们可以使用函数名字符串来动态调用函数。以下是一个示例: def add(x, y): ret…

    python 2023年5月15日
    00
  • Python如何处理大数据?3个技巧效率提升攻略(推荐)

    那就让我来详细讲解一下“Python如何处理大数据?3个技巧效率提升攻略(推荐)”的完整攻略,包含以下三个技巧: 技巧一:使用适当的数据结构 在处理大量数据时,数据结构的选择非常重要。Python 中的列表、元组、集合以及字典等都是常见的数据结构,但它们的性能各不相同。在数据量比较大的情况下,应该选择性能更好的数据结构来存储和处理数据,比如使用 Numpy …

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