FreeSWITCH之lua脚本事件订阅

2023-05-16

目录

相关接口简要说明

Even

EventConsumer

pop获取事件

bind订阅

代码示例

事件创建

事件订阅


FreeSWITCH中通过订阅事件,我们能获取到各种实时信息,进而可以对通话进行精确的控制。在lua中我们既能方便地订阅各种事件,也能自己生成所需的事件。

相关接口简要说明

Even

freeswitch.Event创建一个事件,然后添加内容,最后发出

  • event:addBody

  • event:addHeader

  • event:fire

 

EventConsumer

freeswitch.EventConsumer:订阅一个事件,获取内容

  • event:getBody

  • event:getHeader

  • event:getType

  • event:serialize

 

序列化输出获取的事件内容

-- Print as text

io.write(params:serialize());

io.write(params:serialize("text")); 

-- Print as JSON

io.write(params:serialize("json"));

 

pop获取事件

订阅事件后,通过pop获取事件:

con = freeswitch.EventConsumer("<event_name>"[,"<subclass type>"]); 

-- pop() returns an event or nil if no events

con:pop() 

-- pop(1) blocks until there is an event

con:pop(1) 

-- pop(1,500) blocks for max half a second until there is an event

 

bind订阅

通过bind订阅所需事件

con = freeswitch.EventConsumer();

con:bind("RELOADXML");

con:bind("SHUTDOWN");

con:bind("CUSTOM", "multicast::event");

 

代码示例

事件创建

local event = freeswitch.Event("custom", "Xugd::Quit")
event:addHeader("myKey", "MyValue")
event:fire()

 

事件订阅

订阅指定事件,获取并输出,直到有退出事件

local con = freeswitch.EventConsumer();
con:bind("SHUTDOWN")
con:bind("CUSTOM", "Xugd::MyStatus")
con:bind("CUSTOM", "Xugd::Quit")

while true do
    local evt = con:pop(1)
    local eType = evt:getType() 
    freeswitch.consoleLog("DEBUG", "Get Event: " .. eType .. ", " .. type(eType) .. "\n")
    if eType == "SHUTDOWN" then
        freeswitch.consoleLog("INFO", "SHUTDOWN: To Quit\n")
        break
    end
    
    if eType == "CUSTOM" then 
        local eClass = evt:getHeader("Event-Subclass")      
        freeswitch.consoleLog("DEBUG", "Event-Subclass: " .. eClass .. "\n")
        if eClass == "Xugd::Quit" then
            freeswitch.consoleLog("INFO", "Xugd::Quit: To Quit\n")
            break
        end
        
        if eClass == "Xugd::MyStatus" then
            local status= evt:getHeader("MyStaus")
            .....           
            freeswitch.consoleLog("INFO", "Xugd::MyStatus: " .. status .. "\n") 
        end
    end -- if-type  
end -- while

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeSWITCH之lua脚本事件订阅 的相关文章

  • Lua:字符串中的换行符

    我一直在开发一个格式化程序 它将接受一个长字符串并将其格式化为一系列在特定字符限制内的单词处断开的行 例如 他吃面包每 8 个字符断开一次 将返回类似以下内容的内容 He eats the bread 这是因为 He eats 包含 7 个
  • Lua解释器相当于Matlab“whos”命令吗?

    Octave Matlab IPython whos 命令的 Lua 等价物是什么 我正在尝试以交互方式学习 Lua 并想看看当前定义了哪些变量 Lua 中的所有全局变量都驻留在可用作全局变量的表中 G http www lua org m
  • 逐行编写 Lua 脚本

    我使用以下命令将 Lua 脚本添加到我的 C 应用程序中动态Lua http dynamiclua codeplex com 图书馆 它运作得很好 我想实现您获取正在执行的当前行 就像在 Visual Studio 中一样 并突出显示它 目
  • ESP8266 NodeMCU 堆内存不足

    我正在尝试通过从我的笔记本电脑发送 POST 使用 node js 来使用 ESP8266 01 来切换 LED 我现在遇到内存问题 因为每当我发送 POST 请求时 ESP 中使用的内存就会增加 而堆内存会减少 并且当没有剩余内存时它会崩
  • 用于数据存储的 Lua 与 XML

    我们中的许多人都被灌输了使用 XML 来存储数据的观念 它的优点和缺点众所周知 我当然不想在这里讨论它们 然而 在我用 C 编写的项目中 我也使用 Lua 我非常惊讶 Lua 能够如此出色地存储和处理数据 然而 Lua 的这一方面却鲜为人知
  • Lua中如何去除字符串中的空格?

    我想从 Lua 中的字符串中删除所有空格 这是我尝试过的 string gsub str string gsub str string gsub str s 这似乎不起作用 如何删除所有空格 它有效 您只需分配实际结果 返回值 使用以下变体
  • 无法在cmake中使用find_package找到Lua标头

    我正在尝试使用 CMake 为我使用 Lua 的项目构建生成 make 文件 当我运行 make 时出现此错误 path to my project luaudio luaudio c 1 17 fatal error lua h No s
  • 如何使用Lua脚本语言打开Web套接字?

    作为初学者 我想在基于 Linux 的服务器上使用 Lua 打开一个 Web 套接字 该服务器应允许 Android 客户端连接到它 你能给我一些用Lua打开网络套接字的示例代码吗 您两周前已经问过同样的问题并得到了回答 LUA 脚本 We
  • 使用 EVAL、SCAN 和 DEL 的 Redis 通配符删除脚本返回“非确定性命令后不允许写入命令”

    因此 我正在寻求构建一个 lua 脚本 该脚本使用 SCAN 根据模式查找键并删除它们 原子地 我首先准备了以下脚本 local keys local done false local cursor 0 repeat local resul
  • 在 lua 中使用相等运算符比较数字有多安全?

    在我的引擎中 我有一个用于脚本编写的 Lua VM 在脚本中 我写了这样的内容 stage stage 1 if stage 5 then end and objnum tonumber 5 if stage objnum 根据 Lua 来
  • 创建独立的 Lua 可执行文件

    有没有一种简单的方法可以从 Lua 脚本创建独立的 exe 文件 基本上这将涉及链接 Lua 解释器和脚本 我相信这是可能的 PLT 方案允许以相同的方式创建独立的可执行文件 但是到底是如何实现的呢 查看srlua http www tec
  • Lua中如何对数字表求和?

    Lua有内置的吗sum 功能 我似乎找不到一个 我几乎翻遍了文档中的所有地方 或许table sum 或类似的东西 以遵循当前的约定 但由于我找不到它 我不得不实现它 function sum t local sum 0 for k v i
  • 我应该用 C++ 封装 Lua 代码的哪些代码?

    我终于将 LuaBind 配置为与我的 C 项目一起使用 我最近发现 Tiled 地图编辑器可以选择将文件导出为 lua 所以我想尝试一下 我将使用什么代码来封装下面粘贴的代码以使其与我的 C RPG 项目一起使用 return versi
  • 循环直到在表中找到 2 个特定值?

    我试图找到一种更聪明的方法来解决这个问题 这是与游戏相关的代码的摘录 它循环遍历每个背包的每个插槽 直到找到铲子和绳子 local continue local foundShovel foundRope for i 0 Container
  • C 的哪些部分最可移植?

    我最近读到了 Lua 联合创始人 Luiz H de Figueredo 和 Roberto Ierusalimschy 的采访 他们讨论了 Lua 的设计和实现 至少可以说这是非常有趣的 然而 讨论的一部分让我想起了一些事情 Robert
  • 检查lua中是否存在目录?

    如何检查 lua 中是否存在目录 如果可能的话最好不使用 LuaFileSystem 模块 尝试做类似以下 python 行的事情 os path isdir path 这是一种在 Unix 和 Windows 上都适用的方式 无需任何外部
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • corona sdk中拖动物理对象

    我尝试在场景中拖动重力 0 0 的动态主体 我有一个主体类型为动态的正方形 以及一个主体类型为静态的图像 但是当将方形拖动到图像上时 它会产生一点力 但是可以超出图像并传递到另一边 如图所示 这是我拖动正方形的代码 local functi
  • Lua中如何获取表中的最大整数?

    Lua中如何获取表中的最大整数 在Lua 5 1及更早版本中 你可以使用 math max unpack 1 2 3 4 5 这受到Lua堆栈大小的限制 在 PUC Lua 5 1 上 该值的最大值可达 ca 8000 个数字 如果堆栈空闲
  • 在lua中组合两个函数

    我刚开始学习lua 所以我的要求可能是不可能的 现在 我有一个接受函数的方法 function adjust focused window fn local win window focusedwindow local winframe w

随机推荐

  • 第6章 项目整体管理

    文章目录 项目整体管理6个过程6 2 项目整体管理实现过程项目章程的 作用 xff08 四定经计联 xff09 制定项目章程的 输入1 项目工作说明书 xff08 SOW xff09 2 商业论证 xff08 决定项目是否值得投资 xff0
  • 第7章 项目范围管理

    文章目录 7 1 项目范围管理概念7 1 1 项目范围管理的 含义 及 作用7 1 2 项目范围管理的主要 过程 xff08 6个 xff1a 编收定创确控 xff09 7 2 编制 范围管理计划编制范围管理计划过程的输出1 范围管理计划2
  • 第8章 项目进度管理

    文章目录 8 1 规划项目进度管理项目进度管理计划 8 2 定义活动8 2 3 定义活动的输出 xff08 活动清单 活动属性 里程碑清单 xff09 8 3 排列活动顺序8 3 2 排列活动顺序的工具与技术1 前导图法 xff08 PDM
  • 第9章 项目成本管理

    文章目录 9 1 1 成本与成本管理概念项目成本管理的过程 9 1 2 相关术语成本的类型 xff08 6种 xff09 应急储备与管理储备 9 2 3 项目成本管理计划制订的 输出9 3 1 项目成本估算的主要相关因素项目估算还需要考虑但
  • 第10章 项目质量管理

    文章目录 10 1 2 质量管理及其 发展史10 1 3 项目质量管理 xff08 包括 xff1a 规划质量管理 实施质量保证 质量控制 xff09 10 2 3 规划质量管理 的工具与技术1 成本效益分析法2 质量成本法 xff08 一
  • 第11章 项目人力资源管理

    文章目录 项目人力资源管理 过程11 2 1 编制项目人力资源计划的工具与技术 xff08 1 xff09 层次结构图 xff08 工作 组织 资源 分解结构 xff09 xff08 2 xff09 矩阵图 xff08 责任分配矩阵 xff
  • 第12章 项目沟通管理和干系人管理

    文章目录 沟通渠道计算 xff08 M 61 n n 1 2 xff09 12 1 2 沟通的方式沟通管理计划的编制过程12 2 2 制订沟通管理计划的工具4 沟通方法 xff08 交互式 推式 拉式 xff09 12 3 2 管理沟通的工
  • 第13章 项目合同管理

    文章目录 13 2 1 按信息系统 范围 划分的合同分类1 总承包合同2 单项工程承包合同3 分包合同 13 2 2 按项目 付款方式 划分的合同分类1 总价合同2 成本补偿合同 xff08 卖方有利 xff09 3 工料合同 13 3 1
  • FS-Cli常用命令简介

    目录 退出操作 日志与显示操作 全局变量 fsctl xff1a 发送控制信息 通话相关命令简介 show xff1a 显示信息 fs cli是FreeSWITCH的一个客户端连接程序 xff0c 可以方便地查看运行情况 xff0c 并对其
  • 第14章 项目采购管理

    文章目录 采购管理包括如下几个过程14 2 编制采购计划编制采购计划的输出1 xff09 采购管理计划2 xff09 采购工作说明书3 xff09 采购文件 14 2 3 工作说明书 xff08 SOW xff09 14 3 实施采购14
  • 第15章 信息(文档)和配置管理

    文章目录 软件文档的分类 xff08 1 xff09 开发文档 xff1a 描述开发过程 本身 xff08 2 xff09 产品文档 xff1a 描述开发过程的 产物 xff08 3 xff09 管理文档 xff1a 记录项目管理的信息 文
  • 第16章 变更管理

    文章目录 16 1 项目变更的基本概念16 1 1 项目变更的含义16 1 2 项目变更的分类16 1 3 项目变更产生的原因 16 2 变更管理的基本原则16 3 变更管理角色职责与工作程序16 3 1 角色职责16 3 2 工作程序 1
  • 第17章 信息系统安全管理

    文章目录 信息安全属性及目标 xff08 1 xff09 保密性 xff08 Confidentiality xff09 xff08 2 xff09 完整性 xff08 Integrity xff09 xff08 3 xff09 可用性 x
  • 第18章 项目风险管理

    文章目录 18 1 2 风险的分类按照性质划分 xff08 纯粹 投机 xff09 按照产生原因 xff08 自然 社会 政治 经济 技术 xff09 18 1 3 风险的性质 xff08 客观 偶然 相对 社会 不确定 xff09 项目风
  • 第19章 项目收尾管理

    文章目录 19 1 项目验收 xff08 1 xff09 验收测试 xff08 2 xff09 系统试运行 xff08 3 xff09 系统文档验收 xff08 4 xff09 项目终验 19 2 项目总结 xff08 属于项目收尾的 管理
  • 第20章 知识产权管理、第21章 法律法规和标准规范

    文章目录 20 1 2 知识产权的特性 58420 2 1 著作权及邻接权 58520 2 2 专利权 58920 2 3 商标权 59221 3 诉讼时效 59921 6 3 标准分级与标准类型 60321 7 2 信息系统集成项目管理常
  • 系统集成项目管理工程师 下午 真题 及考点(2022年四套卷)

    文章目录 2022年下半年试题一 xff1a 第10章 项目质量管理 xff0c 流程图 核查表 帕累托图 xff0c 7种质量工具 xff0c 一致性成本和非一致性成本 xff0c 质量保证和质量控制试题二 xff1a 第8章 项目进度管
  • 系统集成项目管理工程师 下午 真题 及考点(2021年上下半年)

    文章目录 2021年下半年试题一 xff1a 第18章 项目风险管理 xff0c 风险应对策略 xff0c 风险的性质 xff08 客观 偶然 相对 社会 不确定 xff09 试题二 xff1a 第9章 项目成本管理 xff0c 执行绩效
  • 系统集成项目管理工程师 下午 真题 及考点(2020年下半年)

    文章目录 2020年下半年试题一 xff1a 第10章 项目质量管理 xff0c 规划质量管理过程的输入试题二 xff1a 第9章 项目成本管理 xff0c 典型 xff1a EAC 61 AC 43 ETC 61 AC 43 xff08
  • FreeSWITCH之lua脚本事件订阅

    目录 相关接口简要说明 Even EventConsumer pop获取事件 bind订阅 代码示例 事件创建 事件订阅 FreeSWITCH中通过订阅事件 xff0c 我们能获取到各种实时信息 xff0c 进而可以对通话进行精确的控制 在