环境: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 获取。 

python3使用pjsua进行呼叫测试的更多相关文章

  1. windos10环境下编译python3版pjsua库

    环境:windows10_x64python3.9_x64pjsua-2.10vs2015 pjsua编译参考这里: https://www.cnblogs.com/MikeZhang/p/pjsip ...

  2. 在Python3.5下安装和测试Scrapy爬网站

    1. 引言 Scrapy框架结构清晰,基于twisted的异步架构可以充分利用计算机资源,是爬虫做大的必备基础.本文将讲解如何快速安装此框架并使用起来. 2. 安装Twisted 2.1 同安装Lxm ...

  3. 11 . Python3之异常,调试和测试

    12.Python3入门之异常.调试和测试 在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修 ...

  4. python3+telnetlib实现简单自动测试

    1 telnetlib介绍 1.1 简介 官方介绍文档:telnetlib -- Telnet 客户端 - Python 3.9.6 文档 telnetlib 模块提供一个实现Telnet协议的类 T ...

  5. Python3入门 Python3+Selenium做UI页面测试的学习

    https://ke.qq.com/course/310732 一直计划着系统地看看Python3,这两天不用加班了,在网上下了些资源,自己演练一番. Python3标识符保留字,直接命令行中可以查看 ...

  6. Python3发送qq邮件,测试通过

    import smtplib from email.mime.text import MIMEText # 收件人列表 mail_namelist = ["10402852@qq.com&q ...

  7. Python魔术世界 1 如何使用Visual Studio在WIN10中一键安装Python3入门编程环境并测试Django

    本文通过VS安装Python和Django的环境,创建了一个Web程序,前后5分钟的操作,让你快速入门Python的编程世界,各种Python和Django的概念会在实战中给你娓娓道来. Django ...

  8. 如何在已经存在python2的linux环境上安装python3

    最近看到好多人都在问在已经存在python2.7的环境下如何安装python3,于是我决定写下这篇文档,供大家学习参考,希望能够给大家带来帮助 有的人在安装的时候可能会先将python2卸载掉,这个地 ...

  9. Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介

    前言 之前的系列博客,陆续学习整理了自动化测试环境的搭建.IE和Chrome浏览器驱动的配置.selenium-webdriver模块封装的元素定位以及控制浏览器.处理警示框.鼠标键盘等方法的使用,这 ...

  10. Linux CentOS7下安装Python3及其setuptools、pip

    CentOS 7系统自带Python2.7,我们尽量别去卸载它!!否则会出问题,比如yum无法使用等问题. 假若,在安装Python3时没有自动安装setuptools和pip,那么,如何在CentO ...

随机推荐

  1. [Linux/CentOS]通过yum获取rpm安装包

    1 yum获取rpm安装包 有时候你需要一个软件包在离线linux系统上安装,如果自己找软件包麻烦,可以linux yum下载需要的软件包. 准备工作是找一台能够联网的linux,并准备好了yum及y ...

  2. TS 导入导出那些事

    前言 最近用 TypeScript 写 npm 包,各种模块.命名空间.全局定义等等扰得我睡不着觉. 我便苦心研究,总结了几个比较冷门的,国内貌似基本上找不到资料的导入导出用法,顺便在其中又插入一些不 ...

  3. list列表和tuple、条件判断、循环、dict和set、调用函数、定义函数

    1.list列表是有序的可变的列表,可以进通过append()方法末尾添加,通过pop删除末尾以及根据索引pop(i)来删除指定索引对应的元素 通过给指定的列表元素赋值更改元素值,通过列表的索引查看元 ...

  4. 全网最详细中英文ChatGPT-GPT-4示例文档-食谱智能生成从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...

  5. odoo wizard界面显示带复选框列表及勾选数据获取

    实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如下图(非实际项目界面截图,仅用于介绍本文主题),打开记录详情页(form视图),点击某个按钮(图中的 ...

  6. Nginx 面试题总结大全

    转载请注明出处: 1 介绍下nginx特点与常用模块 2 nginx特点详细 3 反向代理和正向代理 4 负载均衡策略有哪些 5 Nginx如何实现动静分离?  6 Nginx 常用命令有哪些? 7 ...

  7. Pwn系列之Protostar靶场 Stack1题解

    (gdb) disasse main Dump of assembler code for function main: 0x08048464 <main+0>: push ebp 0x0 ...

  8. PBN衔接ILS时中间进近航段的保护区绘制方法

    收到网友提问,PBN程序和ILS程序在衔接时,中间进近航段的保护区该怎么去绘制. 这个问题怎么看呢?首先起始进近航段与中间进近航段存在两种连接方式,一种是直线进近.另一种是转弯进近,两者的保护区是显著 ...

  9. 如何理解 Spring Boot 中的 Starter ?

    假如 没有 Spring Boot Starter,我们有两种方式来创建 Spring Bean. spring xml 模式 (远古模式,并不推荐) spring API 来创建 Spring Be ...

  10. 2020-10-04:java中GC Root 对象有哪些?

    福哥答案2020-10-04:#福大大架构师每日一题# 简单回答:1.局部变量.2.静态引用的对象.3.常量引用的对象.4.JNI引用的对象. 中级回答:1.虚拟机栈(栈帧中的本地变量表)中引用的对象 ...