自定義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

 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 獲取。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章