自定义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写了20行代码

    下面是操作步骤和示例: 打开“女神相册”登录页面,有效账户的密码进行尝试,看看是否可以登录成功。 如果你无法记得自己的密码,可以点击登录页面下方的“忘记密码”链接,根据提示进行密码重置操作。 如果你仍然无法登录,可以查看登录页面的源代码,尝试使用Python代码来模拟登录过程。 以下是示例1: import requests login_url = &quo…

    python 2023年6月3日
    00
  • Python语言描述机器学习之Logistic回归算法

    以下是关于“Python语言描述机器学习之Logistic回归算法”的完整攻略: 简介 Logistic回归是一种常见的分类算法,它可以将数据分成两个类别。Python中有多种库可以实现Logistic回归算法,例如scikit-learn和numpy。本教程将介绍如何使用Python实现Logistic回归算法,并提供两个示例。 Logistic回归算法 …

    python 2023年5月14日
    00
  • 解决Python3错误:SyntaxError: unexpected EOF while parsin

    当我们在Python3中编写代码时,有时候会遇到SyntaxError: unexpected EOF while parsing的错误。这个错误通常是由于代码中存在语法错误或缺少代码的一部分导致。本攻略将介绍如何决这个问题,并提供一些示例。 问题描述 在Python3中,当我们编写时,有时候会遇到以下错误: SyntaxError: unexpected …

    python 2023年5月13日
    00
  • Python多线程与同步机制浅析

    Python多线程与同步机制浅析 在Python中,多线程是一种非常常见的并发编程方式。多线程可以提高程序的执行效率,但同时也会带来一些问题,如线程安全、死锁等。为了解决这些问题,我们需要使用同步机制来保证线程之间的协调和安全。 多线程 多线程是在一个程序中同时运行多个线程,每个线程都可以独立执行不同的任务。多线程可以提高程序的执行效率,特别是在处理I/O密…

    python 2023年5月14日
    00
  • Python面向对象总结及类与正则表达式详解

    Python面向对象总结及类与正则表达式详解 Python面向对象总结 Python是一种面向对象的编程语言,支持类、对象、继承、多态等面向对象的特性。下面是Python面向对象的一些基本概念: 类 类是一种抽象的数据类型,用来具有相同属性和方法的对象的集合。在Python中,我们可以使用class关键字定义一个类。下面是一个例子,演示如何定义一个类: cl…

    python 2023年5月14日
    00
  • python调用subprocess模块实现命令行操作控制SVN的方法

    操作系统提供了许多可以通过命令行来完成的功能,例如在Linux系统中通过命令行来操作SVN版本库。在python中可以通过subprocess模块来实现这样的命令行操作。 需求分析 首先,我们需要对我们要实现的功能进行需求分析,确定我们要实现哪些功能。在这个需求分析中,我们需要达到以下目的: 通过Python控制SVN仓库进行一系列版本控制的操作 因此,我们…

    python 2023年6月3日
    00
  • 详解Django 和 Python 的区别

    Django是一个基于Python语言的Web框架,Python是一种动态、强类型、解释性编程语言,它们之间的区别主要表现在以下几个方面: 1. 用途和应用场景的不同 Python是一种通用编程语言,适用于各种领域的编程工作。Django则是一种Web框架,主要用于快速开发高质量的Web应用程序。 例如,一个简单的Python程序可以用来计算1+1: # P…

    python-answer 2023年3月25日
    00
  • Python实现迪杰斯特拉算法并生成最短路径的示例代码

    下面是详细讲解“Python实现迪杰斯特拉算法并生成最短路径的示例代码”的完整攻略,包括算法原理、Python实现和两个示例说明。 算法原理 Dijkstra算法是一种用于查找图中最短路径的算法。其主要思想是从起点开始,逐步扩展到其他节点,直到到达终点。在扩展的过程中,记录每个节点的最短路径和前驱节点,最终得到起点到终点的最短路径。Dijkstra算法的实现…

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