FreeSWITCH向lua脚本传递参数

在FreeSWITCH中控制IVR流程或者处理IVR中的一些逻辑事务时,lua扮演着一个重要角色,有时我们需要向脚本中传递一些参数,并且lua脚本也支持该功能。但是在FS中使用lua向脚本传递参数的时候,有一点需要注意:lua脚本中的接收参数的表名是argv,而不是普通lua脚本中的arg。

我在调用脚本的时候,需要向脚本中传递一个音频的文件名,(下面是脚本中的部分内容)

local fileName = arg[1];    --获取文件名
--freeswitch.consoleLog("INFO", "fileName:"..fileName);
print(fileName);

这样写,在命令行中,直接使用

lua /usr/local/freeswitch2/scripts/yuxxx.lua test
在命令行中,会正确输出test,但是在FS中通过

 <action application="lua" data="${path}/scripts/yuxxx.lua ${fileName}.wav" />
则会出现错误信息

[ERR] mod_lua.cpp:203 /usr/local/freeswitch2/scripts/yuxxx:1: attempt to index global 'arg' (a nil value)
stack traceback:
	/usr/local/freeswitch2/scripts/yuxxx.lua:1: in main chunk 

通过搜索资料,在WIKI上看到资料,里面有关于参数传递的部分,里面说是使用argv对象来获取传递的参数
将脚本中的arg换成argv,再在FS环境中通过lua来调用该脚本,并传递参数,果然正常了。

但是,随后又直接在命令行中使用

lua /usr/local/freeswitch2/scripts/yuxxx.lua test

则又会出现错误

lua: /usr/local/freeswitch2/scripts/yuxxx.lua:1: attempt to index global 'argv' (a nil value)
stack traceback:
    /usr/local/freeswitch2/scripts/yuxxx.lua:1: in main chunk
    [C]: in ?

一个问题折腾了一下午,虽然最后问题解决了,但还是不知道为啥会这样。。。

FreeSWITCH lua 中文WIKI。。




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值