環境:CentOS 7.6_x64
Python版本:3.9.12
FreeSWITCH版本 :1.10.9
ESL庫是FreeSWITCH對外提供的介面,使用起來很方便,但該庫是基於C語言實現的,Python使用該庫的話需要使用原始碼進行編譯。
如果使用系統自帶的Python版本進行編譯,過程會比較流暢,就不描述了。這裡記錄下使用自定義Python版本(比如自編譯的Python版本)編譯及使用ESL的過程,並提供預編譯的二進位制檔案。
這裡使用 Python 3.9.12 版本,具體編譯過程可參考這篇文章:
關注微信公眾號(聊聊博文,文末可掃碼)後回覆 2022072401 獲取。
Python環境目錄:/usr/local/python39
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
1) 生成Makefile檔案
進入 freeswitch-1.10.9.-release 目錄,執行如下命令:
./devel-bootstrap.sh && ./configure
注意:該步驟需要在第2步完成之後進行。
2)編譯ESL模組
進入 freeswitch-1.10.9.-release/libs/esl 目錄,執行 編譯操作:
make py3mod
在編譯目錄匯入ESL庫,具體效果如下:
這裡將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())
執行效果如下:
這裡將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")
執行效果如下:
本文涉及原始碼及預編譯二進位制檔案,可以從如下途徑獲取: