自定義Python版本ESL庫存取FreeSWITCH

2023-04-25 06:00:48

環境: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 獲取。