• 自定义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 获取。

     

  • 相关阅读:
    分享几个可以免费使用GPT的网站
    Java刷题day34
    Android 编译插桩操纵字节码
    戴建业老师对李白和杜甫的讨论
    传智杯#5练习赛_树的变迁
    快速掌握 MyBatis 框架(二)
    如何将多模态数据融入到BERT架构中-多模态BERT的两类预训练任务
    vue.config.js 多环境配置
    python barplot 比例bili scanpy
    LeetCode每日一题:1333. 餐厅过滤器(2023.9.27 C++)
  • 原文地址:https://www.cnblogs.com/MikeZhang/p/py39esl-20230424.html