• python3使用pjsua进行呼叫测试


    环境:CentOS 7.6_x64   
    Python版本 :3.9.12
    pjsip版本:2.13
     
    之前写过一篇CentOS7环境编译python3.9版本pjsua的文章:
    在上篇文章中我着重介绍了怎样编译python3.9版本的pjsua库,并演示了如何使用,今天记录下CentOS7环境下python3.9使用pjsua作为uas或uac,对接FreeSWITCH进行呼叫测试的过程,并提供示例代码及相关资源下载,可从如下渠道获取:
    关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 

    一、关键点描述

     1、音频设备设置

    CentOS7虚拟机没有音频设备,可以通过set_null_snd_dev来避免pjsua模块报错。

    2、编码设置

    可以通过set_codec_priority函数来设置编码的优先级,避免编码问题导致呼叫失败。
    pjsua支持的编码列表如下:
    复制代码
    speex/8000/1
    speex/32000/1
    iLBC/8000/1
    GSM/8000/1
    PCMU/8000/1
    PCMA/8000/1
    G722/16000/1
    opus/48000/2
    G729/8000/1
    L16/44100/1
    L16/44100/2
    复制代码
    具体可参考如下文档:

     

    3、自动播放声音文件

    1)通过 create_player 函数创建playerId;
    2)通过player_get_slot函数获取slot;
    3)通过call对象获取呼叫的slot;
    4)然后conf_connect进行连接两个slot连接,进而实现音频播放。
     
    具体参考这里:

      

    二、具体实现

     1、作为uac进行测试

    需要作为分机注册到FreeSWITCH,示例如下:
    acc = lib.create_account(pj.AccountConfig("192.168.137.32:5060", "1012", "0000"))

    代码如下:

     完整代码获取途径:关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 

    2、作为uas进行测试

    1)编写UAS脚本
    需要指定sip服务端口,示例如下:
    tp= lib.create_transport(pj.TransportType.UDP,pj.TransportConfig(55081))
    lib.start()

    代码如下:

     完整代码获取途径:关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 

    2)编写拨号方案
    复制代码
    <extension name="pjsua_uas_test">
        <condition field="destination_number" expression="^123$">
             <action application="set" data="hangup_after_bridge=true"/>
             <action application="bridge" data="sofia/external/123@192.168.137.32:55081"/>
        condition>
    extension>
    复制代码

    三、运行效果

    1、uac测试效果

    1)启动FreeSWITCH;
    2)运行uac脚本注册分机;
    source /root/py39env/env.sh
    /root/py39env/bin/python3.9 uac.py
    3)使用软电话注册分机;
    4)使用软电话拨打uac分机; 
    预期效果:
    软电话可听到uac分机播放的音频。

     运行效果视频获取途径:

    关注微信公众号(聊聊博文,文末可扫码)后回复 2023062201 获取。 

    2、uas测试效果

    1)启动FreeSWITCH;
    2)编写拨号方案;
    3)运行uas脚本启动服务;
    source /root/py39env/env.sh
    /root/py39env/bin/python3.9 uas.py
    4)使用软电话注册分机;
    5)使用软电话拨打接入号验证;
    预期效果:
    软电话可听到uas播放的音频。

    运行效果视频获取途径:

    关注微信公众号(聊聊博文,文末可扫码)后回复 2023062202 获取。 

    四、资源获取

    本文涉及源码和文件,可以从如下途径获取:
    关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 

  • 相关阅读:
    每日一题——使用tkinter开发GUI程序习题
    [.NET 6] IHostedService 的呼叫等等我的爱——等待Web应用准备就绪
    算法与数据结构-AC自动机
    flask缓存、信号的使用
    最简单入门的SpringBoot+Vue项目用WebSoket完整教程代码,做客服,即时通信的看过来!
    HI3559AV100 GPIO配置和操作(二)
    【版本发布公告】HMS Core 6.6.0来啦
    接口防止重复提交,订单避免重复下单
    2022-8-24 华为秋招笔试
    镜头之滤光片---关于日夜两用双通滤光片
  • 原文地址:https://www.cnblogs.com/MikeZhang/p/pyPjsuaExample20230623.html