lua脚本在执行过程中,可动态接收参数,这样可以让系统更灵活,以上节的自动外呼为例,callout.lua改成下面这样:

-- 主叫
local callernum = argv[1];
-- 被叫
local calleenum = argv[2]; freeswitch.consoleLog("info","debug==> caller:" .. callernum .. ", callee:" .. calleenum .. "\n");
-- print("debug=> caller:" .. callernum .. ", callee:" .. calleenum .. "\n"); session = freeswitch.Session("user/" .. callernum);
while session:ready() do
session:execute("bridge","user/" .. calleenum);
end

注1:argv是1个内置的变量,存储了传进来的参数(注:下标从1开始)

注2:lua脚本一般不太容易断点调试,所以建议关键的地方打日志(类似freeswitch.consoleLog 或 print)

然后esl java client中调用lua的地方,改成:

client.sendAsyncApiCommand("luarun", "callout.lua 1000 1001");

  

freeswitch控制台,可以看到日志及其它关键信息

如果没有开控制台(比如:freeswitch后台运行),可以直接打开日志文件 ,一般是在 \FreeSWITCH\log\freeswitch.log

参考文档 :

https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Client-and-Developer-Interfaces/Lua-API-Reference/Lua-examples/Lua-arguments-calling-functions_16354984/

https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Client-and-Developer-Interfaces/Lua-API-Reference/#sessionconsolelog

https://www.thenoccave.com/2012/03/change-freeswitch-log-location/

FreeSwitch: esl 调用lua动态传参&日志查看的更多相关文章

  1. 在Java中动态传参调用Python脚本

    最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...

  2. Postman 串行传参和动态传参详解

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行 目录 串行传参 动态传参 使用 ...

  3. python----函数的动态传参

    函数的动态传参 *args 将所有的实参的位置参数聚合到一个元组,并将这个元组赋值给args 有些时候,对于函数,传入的实参数量可能是不固定的,也就是动态的,这个时候我们就需要用到函数的动态传参.下面 ...

  4. python函数的动态传参.作用域与命名空间

    一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi ...

  5. python记录_day10 动态传参 命名空间 作用域

    一.动态传参 动态传参用到 *args 和 **kwargs ,*号表示接收位置参数,args是参数名:**表示接收关键字参数,kwargs是参数名 def chi(*food): print(foo ...

  6. Postman高级应用——串行传参和动态传参详解

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 用Postman做接口测试的时候,要把多条用例一起执行,就需要把用例连接起来,一次性执行 目录 串行传参 动态传参 使用 ...

  7. Android使用Gradle命令动态传参完成打包,不需要修改代码

    不得不说,Gradle很强大,有人会问Gradle是什么?这里也不细讲,在我认为他就是一个构建神器.Gradle 提供了: 一个像 Ant 一样的非常灵活的通用构建工具 一种可切换的, 像 Maven ...

  8. python-函数进阶-动态传参,名称空间,作用域的问题

    一.函数的动态的动态参数 动态参数分为两种:动态接收位置参数.动态接收关键字参数. 1.*args  位置参数动态传参 # 顺序: 位置参数=>*args(arguments) => 默认 ...

  9. uploadifive 1.1.2 动态传参

    之前用过Flash版本的uploadify,写过一篇关于uploadify动态传参的文章(点击打开链接).后来有了HTML5版本的上传控件,叫uploadifive,测试着用了一下,效果还不错.这里主 ...

  10. python(动态传参、命名空间、函数嵌套、global和nonlocal关键字)

    一.函数的动态传参 1.*args位置参数动态传参 def chi(*food): print(food) chi("烧烤","火锅","虾吃虾涮&q ...

随机推荐

  1. CSharp_core

    C#核心篇 面向对象的概念 封装(类).继承,多态 类 基本概念 具有相同特征.相同行为.一类事物的抽象 类是对象的模板,可以通过类创建出对象 关键词class 类的申明 申明在nameplace语句 ...

  2. [随记]-linux侦听端口的4种方法

    侦听 192.168.0.1 服务器上的 10086 端口是否打开 1. telnet telnet是windows 内置的功能,当然 linux 也有.用法:  tenlet 192.168.0.1 ...

  3. vue3 基础-组件间传值及校验

    本篇讲基于对页面组件化拆分后, 组件之间如何进行数据传递, 通常是父组件如何给子组件进行传值, 子组件接收并进行数据校验后再使用. 父子组件传值 <!DOCTYPE html> <h ...

  4. 使用离线部署32B模型实现OpenDeepWiki项目代码自动分析与文档生成

    背景介绍 在企业环境中,我们经常需要对公司项目代码进行分析和文档生成.然而,考虑到代码的保密性,将代码上传至公共AI平台存在安全隐患.为解决这一问题,我们可以在公司内部GPU服务器上部署强大的大语言模 ...

  5. JavaScript环境搭建与调试

    JavaScript的环境搭建非常简单,一个Chrome浏览器(实际上任何浏览器都自带有JavaScript解释器,Chrome对调试更友好,下载链接:http://www.51xiazai.cn/s ...

  6. AtCoder Beginner Contest 372 补题记录

    A - delete 题意: 输出删除字符串中 . 后的字符串 思路: 只输出字符串中不是 . 的字符 void solve() { string s = sread(); for(auto it:s ...

  7. flutter3-deepseek流式AI模板|Flutter3.27+Dio+DeepSeeek聊天ai助手

    基于Flutter3+DeepSeek-V3+Markdown跨平台流式ai打字输出问答助手. flutter3-deepseek-chat跨平台ai流式实例,基于Flutter3.27+Dart3+ ...

  8. Kali Linux 从入门到实战:系统详解与工具指南

    Kali Linux 从入门到实战:系统详解与工具指南 1. Kali Linux 简介 Kali Linux 是一款基于 Debian 的 Linux 发行版,专为 渗透测试 和 网络安全审计 设计 ...

  9. web29~web39

    参考博客: https://blog.csdn.net/m0_62422842/article/details/125507970 https://www.cnblogs.com/amazingman ...

  10. 解决 Electron 安装失败问题的实用指南

    遇到安装失败问题? 在国内或其他网络受限的环境中,安装 Electron 时可能会遇到各种错误.以下是一些解决这些问题的有效方法. 如果您在Electron-Egg安装过程中遇到安装npm包报错的问题 ...