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 获取。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)