首页 > 编程语言 >python3解析FreeSWITCH会议室列表信息

python3解析FreeSWITCH会议室列表信息

时间:2024-04-29 23:12:36浏览次数:33  
标签:conference 解析 会议室 如下 获取 FreeSWITCH 列表 python3

操作系统 :CentOS 7.6_x64

FreeSWITCH版本 :1.10.9  

Python版本:3.9.12

进行FreeSWITCH会议室相关功能开发过程中,会遇到需要解析会议室列表信息并进行特定操作的情况,比如设置特定通道变量、发送dtmf、录音等。
今天整理下CentOS7环境下,使用Python3解析FreeSWITCH会议室列表信息然后进行特定操作的笔记,并提供相关示例代码、运行效果视频和配套文件下载。

我将从以下几方面进行展开:
  • 会议室信息格式及字段说明

  • 使用Python3解析会议室列表信息

  • 运行效果截图及视频

  • 配套资源下载

一、会议室信息格式及字段说明

1、会议室信息获取

发起会议:

conference test bgdial user/1001
conference test bgdial loopback/6001
conference test bgdial loopback/6002

查看会议列表:

conference list

 数据格式如下:

+OK Conference test (3 members rate: 8000 flags: running|answered|enforce_min|dynamic|exit_sound|enter_sound|json_status)
7;loopback/6002-a;baee0b74-4a4d-4df4-97e7-3a072e83fcf5;Outbound Call;6002;hear|speak|talking;0;0;100
6;loopback/6001-a;11be5368-ce8a-41f1-8efd-1ba415122cb2;Outbound Call;6001;hear|speak|talking|floor;0;0;100
5;sofia/internal/[email protected]:9800;c7ba756d-1959-4781-a2c8-2f8b291b0553;Outbound Call;1001;hear|speak;0;0;100

2、会议室信息字段解释

conference list命令没有表头,可在FreeSWITCH源码中找到字段解释。
文件:mod/applications/mod_conference/mod_conference.c

函数:conference_list

 字段含义列表如下 :

会议室成员id
channel name
成员uuid
caller id name
caller id number
flags
volume_in_level
volume_out_level
energy_level

3、其它格式

1)xml格式

命令:

conference xml_list

 2)json格式

命令:

conference json_list

 二、使用python3进行会议室信息解析

xml格式和json格式都携带有字段解释信息,这里以conference list返回的结果为例进行解析。

1、文本解析

关键点:

1)解析会议室名称;

2)获取会议室成员信息;

示例代码如下(parseConfTest1.py):

 完整代码可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20240429 获取。 运行效果如下:

2、ESL实时解析

这里演示下使用ESL实时获取会议室列表信息,并打印出会议室成员的uuid列表。

python3.9.12版本的ESL编译及使用,可参考这篇文章:

https://www.cnblogs.com/MikeZhang/p/py39esl-20230424.html 通过ESL接口实时获取会议列表信息并进行解析。 示例代码如下(parseConfRealTime1.py):

 完整代码可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20240429 获取。 运行效果如下:

3、对会议室成员执行特定操作

这里以设置通道变量为例,演示下如何对会议室成员批量执行操作。
设置通道变量的命令如下:

uuid_setvar c7ba756d-1959-4781-a2c8-2f8b291b0553 my_email [email protected]

验证命令如下:

uuid_getvar c7ba756d-1959-4781-a2c8-2f8b291b0553 my_email

 示例代码如下(setConfRealTime1.py):

完整代码可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20240429 获取。 运行效果如下:

4、运行效果视频

运行效果视频可从如下渠道获取: 关注微信公众号(聊聊博文,文末可扫码)后回复 2024042901 获取。

三、资源下载

本文涉及源码及预编译二进制文件,可以从如下途径获取:

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

 

标签:conference,解析,会议室,如下,获取,FreeSWITCH,列表,python3
From: https://www.cnblogs.com/MikeZhang/p/18166795/parseConf20240429

相关文章

  • 构造函数的成员初始化列表
    为什么要初始化成员对于类成员是基础数据类型,例如int、char这些,构造对象时,成员不会被初始化,值是随机的。下面代码可以验证下:classA{public:A(){}voidshowMember()const{std::cout<<"a:"<<a<<std::endl;}private:inta;};int......
  • python3的数据结构
    一.列表(列表可以修改,字符串和元组不能)list.append(x)-把一个元素添加到列表的结尾-相当于a[len(a):]=[x]list.extend(L)-通过添加指定列表的所有元素来扩充列表-相当于a[len(a):]=Llist.insert(i,x)-在指定位置插入一个元素-a.insert(0,x)会插入到整个列表之前-a.i......
  • 列表删除按钮,分页错位问题解决思路 table delete page loadTable
    列表删除按钮,分页错位问题解决思路this.$api('/xxx/xxx/deletexxx',{ids:id}).then(res=>{if(res.status!==20)returnthis.$Message.destroy()this.$Message.success('删除成功')if(this.tableData.leng......
  • 关于双向循环列表的插入、删除、遍历
    目录双向循环链表公式初始化双向循环链表构建双向循环链表结构体//双向循环链表节点定义typedefstructdouble_loop_node{chardata[DATA_LEN];//数据域,存储数据长度structdouble_loop_node*next;......
  • 【vue3入门】-【7】列表渲染
    列表渲染v-for列表渲染可以使用一个v-for指令基于一个数组来渲染一个列表,v-for指令的值需要使用iteminitems形式的特殊语法,其中items是源数据的数组,而item是迭代项的别名,item是可以改名的,和{{}}内的名称保持一致就行,结合div或其他标签使用,可以获取列表内的多个属性值v-fo......
  • vue中函数使用、class和style属性、条件渲染、列表渲染、数据的双向绑定、input事件、
    【事件指令中的函数使用】1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<title>Title</title>6<scriptsrc="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"&......
  • Python3.8.4 解决 ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently
    系统版本:CentOSLinuxrelease7.6.1810(Core)编译安装Python3.8.4[root@hankyoon~]#tar-xvfPython-3.8.4.tgz[root@hankyoon~]#cdPython-3.8.4/[root@hankyoon~]#./configure--prefix=/usr/local/python3.8[root@hankyoon~]#make&&makeinstall[......
  • MyBatis Plus 按指定顺序查询对象列表
    场景定义了一个字段,存储了一个json数组比如:[41,38,42],它的含义是一个线性的流程定义,所以保证顺序至关重要现在使用MyBatisPlus的API方法去通过ID数组查询得到对象数组List<ProcessNodePO>processNodeList=processNodeMapper.selectList(newLambdaQueryWrapper<Pro......
  • Python函数参数为列表问题
    defADD(a):print(3,a,hex(id(a)))a.remove(2)print(3,a,hex(id(a)))a=a.append(10)print(3,a,hex(id(a)))returnaa=[1,2,3]print(1,a,hex(id(a)))b=ADD(a)print(2,a,hex(id(a)))print(2,b,hex(id(b)))函数传参的......
  • 使用 Python 循环创建多个列表
    前言在Python中,我们可以使用循环来动态创建多个列表,这在处理数据、进行数据分析或进行算法实现时非常有用。本文将介绍几种常见的方法,以帮助大家学习如何使用循环创建多个列表。方法一:使用列表推导式列表推导式是Python中一种简洁的语法,可以快速生成列表。我们可以结合循......