前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义Python版本ESL库访问FreeSWITCH

自定义Python版本ESL库访问FreeSWITCH

原创
作者头像
麦壳儿
发布2023-04-25 00:06:53
7550
发布2023-04-25 00:06:53
举报
文章被收录于专栏:pyvoippyvoip

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

文件内容:

代码语言:javascript
复制
#! /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

具体如下:

代码语言:javascript
复制
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 目录:

代码语言:javascript
复制
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 目录,执行如下命令:

代码语言:javascript
复制
./devel-bootstrap.sh && ./configure

注意:该步骤需要在第2步完成之后进行。

2)编译ESL模块

进入 freeswitch-1.10.9.-release/libs/esl 目录,执行 编译操作:

make py3mod

三、运行效果

1、ESL库导入效果

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

2、接收事件

这里将ESL库复制到其它机器进行事件接收测试,示例代码如下:

代码语言:javascript
复制
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())

运行效果如下:

3、发送命令

这里将ESL库复制到其它机器进行originate测试,示例代码如下:

代码语言:javascript
复制
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")

运行效果如下:

四、资源下载

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

关注微信公众号(聊聊博文)后回复 20230424 获取。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景描述
  • 二、具体实现
    • 1、准备自定义Python环境
      • 2、准备编译环境
        • 3、编译ESL库
        • 三、运行效果
          • 1、ESL库导入效果
            • 2、接收事件
              • 3、发送命令
              • 四、资源下载
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档