广告 《大道至简,给所有人看的编程课》 🔥

《FreeSWITCH参考手册》

1.19 mod_spidermonkey

SpiderMonkey是第一款最早面世的JavaScript引擎,它是Mozilla使用的Javascript引擎。FreeSWITCH也使用了该引擎来在FreeSWITCH内部支持Javascript嵌入式语言。

FreeSWITCH中对Javascript脚本的支持是在mod_spidermonkey中实现的。通过该模块,可以使用Javascrip控制呼叫流程,如,你可以使用如下Dialplan将电话交给一个Javascript脚本处理:

<action application="javascript" data="/tmp/test.js"/>

然后,创建如下js文件:

session.answer();
session.sleep(1000);
session.streamFile("/tmp/hello-js.wav");
session.hangup();

在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目录下。



本书版权所有 © 杜金房及各位贡献者 2016-2023,仅供在线阅读,谢绝一切形式转载。 本书还在写作中,持续更新。 如果你也想写上几句,欢迎加入我们。 | 返回首页 |