2

python3使用pjsua进行呼叫测试

 1 year ago
source link: https://www.cnblogs.com/MikeZhang/p/pyPjsuaExample20230623.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
环境: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模块报错。
300959-20230623011451805-2080912431.png

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
具体可参考如下文档:
300959-20230623011557826-1295663660.png

3、自动播放声音文件

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

二、具体实现

 1、作为uac进行测试

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

代码如下:

300959-20230623012047656-942170912.png

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

2、作为uas进行测试

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

代码如下:

300959-20230623012102251-429174695.png

 完整代码获取途径:关注微信公众号(聊聊博文,文末可扫码)后回复 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/[email protected]: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分机播放的音频。
300959-20230623012119034-1510322237.png

 运行效果视频获取途径:

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

2、uas测试效果

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

运行效果视频获取途径:

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

四、资源获取

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK