翼度科技»论坛 编程开发 python 查看内容

python3使用pjsua进行呼叫测试

5

主题

5

帖子

15

积分

新手上路

Rank: 1

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

 1、音频设备设置

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

2、编码设置

可以通过set_codec_priority函数来设置编码的优先级,避免编码问题导致呼叫失败。pjsua支持的编码列表如下:
  1. speex/8000/1
  2. speex/32000/1
  3. iLBC/8000/1
  4. GSM/8000/1
  5. PCMU/8000/1
  6. PCMA/8000/1
  7. G722/16000/1
  8. opus/48000/2
  9. G729/8000/1
  10. L16/44100/1
  11. L16/44100/2
复制代码
具体可参考如下文档:https://docs.pjsip.org/en/latest/api/generated/pjsip/group/group__PJSUA__LIB__MEDIA.html#group__PJSUA__LIB__MEDIA

3、自动播放声音文件

1)通过 create_player 函数创建playerId;2)通过player_get_slot函数获取slot;3)通过call对象获取呼叫的slot;4)然后conf_connect进行连接两个slot连接,进而实现音频播放。 具体参考这里:https://docs.pjsip.org/en/latest/api/generated/pjsip/group/group__PJSUA__LIB__MEDIA.html#group__PJSUA__LIB__MEDIA 

二、具体实现

 1、作为uac进行测试

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

 完整代码获取途径:关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 
2、作为uas进行测试

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

 完整代码获取途径:关注微信公众号(聊聊博文,文末可扫码)后回复 20230622 获取。 
2)编写拨号方案
  1. <extension name="pjsua_uas_test">
  2.     <condition field="destination_number" expression="^123$">
  3.          <action application="set" data="hangup_after_bridge=true"/>
  4.          <action application="bridge" data="sofia/external/123@192.168.137.32:55081"/>
  5.     </condition>
  6. </extension>
复制代码
三、运行效果

1、uac测试效果

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

 运行效果视频获取途径:
关注微信公众号(聊聊博文,文末可扫码)后回复 2023062201 获取。 2、uas测试效果

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

运行效果视频获取途径:
关注微信公众号(聊聊博文,文末可扫码)后回复 2023062202 获取。 
四、资源获取

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


来源:https://www.cnblogs.com/MikeZhang/p/pyPjsuaExample20230623.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具