SpiderMonkey是第一款最早面世的JavaScript引擎,它是Mozilla使用的Javascript引擎。FreeSWITCH也使用了该引擎来在FreeSWITCH内部支持Javascript嵌入式语言。
FreeSWITCH中对Javascript脚本的支持是在mod_spidermonkey
中实现的。通过该模块,可以使用Javascrip控制呼叫流程,如,你可以使用如下Dialplan将电话交给一个Javascript脚本处理:
action application="javascript" data="/tmp/test.js"/> <
然后,创建如下js文件:
.answer();
session.sleep(1000);
session.streamFile("/tmp/hello-js.wav");
session.hangup(); session
在js脚本中,可以得到一个session对象(Object),然后就可以对该session进行操作了。一个session代表一路通话。从上面的js脚本中很容易看出,第一行用于对来话进行应答,第二行小睡一会(1000毫秒),第三行则播放一个.wav
文件,第四行挂机。
是的,它等于以下Dialplan:
action application="answer"/>
<action application="sleep" data="1000"/>
<action application="playback" data="/tmp/hello-js.wav"/>
<action application="hangup"/> <
但是,大家都知道,在Dialplan中加入逻辑判断等功能都是有限的,但在Javascript中就不同了,你很容易写一些 if-else 之类的语句判断当前的场景进而执行不同的动作。关于这一点,我们在此就不举例子,有兴趣的可以自己研究一下。
除了SpiderMonkey外,另一个Javascript引擎是V8,这是一个在Google
Chrome中以及
Node.js中使用的Javascript引擎,它提供了比SpiderMondey更好的性能。FreeSWITCH中也实现了一个mod_v8
模块。该模块除了与mod_spidermonkey
有一些小小的差别外,在API上完全兼容。也就是说,上述的test.js脚本在mod_v8
下也能正常运行。
由于mod_v8
的出现,现在mod_spidermonkey
已经不推荐使用了,并被移到源代码库的legacy
目录下。