自定义Python版本ESL库访问FreeSWITCH

打印 上一主题 下一主题

主题 891|帖子 891|积分 2673

环境: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
文件内容:
  1. #! /bin/bash
  2. pydir=/usr/local/python39
  3. export CFLAGS="-I$pydir/include"
  4. export LDFLAGS="-L$pydir/lib"
  5. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$pydir/lib
复制代码
2)将python3的软链接指向python3.9
具体如下:
  1. 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 目录:
  1. mv python-config python-config-bak
  2. cp /usr/local/python39/bin/python3.9-config python-config
复制代码
3、编译ESL库

1) 生成Makefile文件
进入 freeswitch-1.10.9.-release 目录,执行如下命令:
  1. ./devel-bootstrap.sh && ./configure
复制代码
注意:该步骤需要在第2步完成之后进行。
2)编译ESL模块
进入 freeswitch-1.10.9.-release/libs/esl 目录,执行 编译操作:
make py3mod

三、运行效果

 1、ESL库导入效果

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

 2、接收事件

这里将ESL库复制到其它机器进行事件接收测试,示例代码如下:
  1. from ESL import *
  2. con = ESLconnection("localhost","8021","ClueCon")
  3. if con.connected:
  4.     con.events("plain", "all");
  5.     while True:
  6.         e = con.recvEvent()
  7.         if e:
  8.             print(e.serialize())
复制代码
运行效果如下:

 3、发送命令

这里将ESL库复制到其它机器进行originate测试,示例代码如下:
  1. from ESL import *
  2. con = ESLconnection("localhost","8021","ClueCon")
  3. if con.connected:
  4.     e = con.api("bgapi originate user/1000 &echo")
  5.     print(e.getBody())
  6. else:
  7.     print("Not connected")
复制代码
运行效果如下:

 四、资源下载

本文涉及源码及预编译二进制文件,可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20230424 获取。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表