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

相关文章

  • python开发一款翻译工具

    Python开发一款翻译工具攻略 Python开发一款翻译工具是一项很有意义的工作。这需要熟悉Python编程语言及其常用库,同时也需要一定的自然语言处理技能。下面是一个实现Python开发一款翻译工具的攻略。 1. 设计 在设计翻译工具之前,需要明确以下几个问题: 翻译的语言,支持哪些语言? 输入和输出的数据格式? 是否需要使用第三方API? 例如,我们可…

    python 2023年6月3日
    00
  • python聚类算法选择方法实例

    Python聚类算法选择方法实例 聚类是一种无监督学习方法,它将相似的数据点分组到一起。在本攻略中,我们将介绍如何选择适合的聚类算法来处理不同类型的数据。 步骤1:了解聚类算法 在选择聚类算法之前,我们需要了解不同类型的聚类算法。在本攻略中,我们将介绍两种常见的聚类算法:K均值聚类和层次聚类。 K均值聚类 K均值聚类是一种基于距的聚类算法,它将数据点分成K个…

    python 2023年5月14日
    00
  • 一些Python中的二维数组的操作方法

    在Python中,二维数组是常见的数据结构。本文将详细讲解一些Python中的二维数组的操作方法。 创建二维数组 在Python中,可以使用列表嵌套的方式来二维数组。下面是一个示例: # 示例1:创建二维数组 rows, cols = (3, 4) arr = [[0 for j in range(cols)] for i in range(rows)] p…

    python 2023年5月13日
    00
  • python 实现两个字符串乘法小练习

    这里我们就来详细讲解一下Python实现两个字符串乘法的小练习,包含以下内容: 题目介绍 思路分析 详细代码实现 示例说明 1.题目介绍 这是一道比较基础的字符串乘法小练习,给定两个只包含数字的字符串num1和num2,求它们的乘积,返回一个字符串表示。 例如: 输入: num1 = “2”, num2 = “3”,输出: “6” 输入: num1 = “1…

    python 2023年6月5日
    00
  • 详解python的sorted函数对字典按key排序和按value排序

    下面是对“详解python的sorted函数对字典按key排序和按value排序”的完整攻略,主要分为以下几个部分: sorted函数的介绍 对字典按key排序 对字典按value排序 示范代码演示 1. sorted函数的介绍 sorted函数是Python内置的排序函数,它可以对序列、集合和字典等可迭代类型进行排序。sorted函数默认按照升序排序,如果…

    python 2023年5月13日
    00
  • Python timer定时器两种常用方法解析

    Python timer定时器两种常用方法解析 当我们需要在代码中设置定期执行某个任务时,Python内置的timer定时器可以非常方便地帮助我们完成。在本文中,我们将详细讲解Python timer定时器的两种常用方法,并且提供示例说明。 方法一:使用Threading模块 Threading模块是Python中用于多线程编程的核心模块之一。我们可以通过该…

    python 2023年5月19日
    00
  • Python实现将SQLite中的数据直接输出为CVS的方法示例

    下面是Python实现将SQLite中的数据直接输出为CVS的方法示例的完整攻略。 1. 准备工作 首先需要在机器上安装Python和SQLite。 安装Python:可以在官网下载安装包或使用包管理工具进行安装。 安装SQLite:在Linux和macOS系统下,可以使用系统自带的SQLite,也可以使用包管理工具安装;在Windows系统下,可在SQLi…

    python 2023年6月3日
    00
  • Python 中的Sympy详细使用

    Python中的Sympy详细使用攻略 什么是Sympy Sympy是一个符号数学库,它允许您使用符号运算进行数学计算而不是数字运算。符号数学可以帮助您处理复杂的算式和方程,而不是仅仅计算数值结果。 安装Sympy Sympy可以使用pip包管理工具来进行安装,只需要在终端输入如下命令即可: pip install sympy 常见用法 定义符号 在Symp…

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