環境:CentOS 7.6_x64Python版本:3.9.12FreeSWITCH版本 :1.10.9 一、背景描述 ESL庫是FreeSWITCH對外提供的介面,使用起來很方便,但該庫是基於C語言實現的,Python使用該庫的話需要使用源碼進行編譯。如果使用系統自帶的Python版本進行編譯,過 ...
環境: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
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
三、運行效果
1、ESL庫導入效果
在編譯目錄導入ESL庫,具體效果如下:
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())
運行效果如下:
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")
運行效果如下:
四、資源下載
本文涉及源碼及預編譯二進位文件,可以從如下途徑獲取:
關註微信公眾號(聊聊博文,文末可掃碼)後回覆 20230424 獲取。微信公眾號: