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://www.thenoccave.com/2012/03/change-freeswitch-log-location/