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

《FreeSWITCH参考手册》

1.11 mod_lua和mod_v8

这两个模块都是在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

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

可以看出,两个脚本的内容和功能基本上一样。第一行,对当前呼叫进行应答;然后,小睡一会(以确定能正确的建立媒体流);接着,播放一个声音文件;最后,挂机。

可以分别使用如下Dialplan将来话路由到上述脚本:

<action application="lua" data="/tmp/test.lua"/>

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

当然,两个脚本本质上是Lua或Script,因而你可以很容易地在脚本中加入条件判断、循环等,甚至也可以通过相关的API与数据库或其它系统交互。能实现什么样的程序,完全靠你的想象力,从现在起,就写个脚本练一练吧?



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