这两个模块都是在FreeSWITCH支持使用嵌入式语言来控制呼叫流程的。我们在以前的文章中也曾不同程度地提到他们。
其中mod_lua
支持Lua语言,Lua是很有名的嵌入式语言,能非常好地嵌入其它语言的程序中。该模块有两个版本,最新的版本支持Lua
5.2,而支持Lua 5.1的版本现在已被移动到源代码的legacy目录中。
mod_v8
支持Javascript,由Google的v8库提供支持,v8库已被成功用于Chrome及node.js中,性能强劲。其实对Javascript的支持也有两个版本,另一个版本也在legacy目录中,叫mod_spidermonkey
。Spidermonkey是Firefox中的Javascript引擎。
Lua和Javascript两种语言有很多相似的地方,我们不必多说,先来看两个脚本:
test.lua
session:answer()
session:sleep(1000)
session:streamFile("/tmp/hello-lua.wav")
session:hangup()
test.js
.answer();
session.sleep(1000);
session.streamFile("/tmp/hello-js.wav");
session.hangup(); session
可以看出,两个脚本的内容和功能基本上一样。第一行,对当前呼叫进行应答;然后,小睡一会(以确定能正确的建立媒体流);接着,播放一个声音文件;最后,挂机。
可以分别使用如下Dialplan将来话路由到上述脚本:
action application="lua" data="/tmp/test.lua"/> <
或
action application="javascript" data="/tmp/test.js"/> <
当然,两个脚本本质上是Lua或Script,因而你可以很容易地在脚本中加入条件判断、循环等,甚至也可以通过相关的API与数据库或其它系统交互。能实现什么样的程序,完全靠你的想象力,从现在起,就写个脚本练一练吧?