在上一個(gè)章節(jié)中,我們介紹了通過(guò)內(nèi)置的XML IVR引擎創(chuàng)建基本的IVR應(yīng)用。XML IVR引擎可以創(chuàng)建相對(duì)簡(jiǎn)單,相對(duì)靜態(tài)的IVR應(yīng)用場(chǎng)景。FreeSWITCH同樣支持另外一種搭建IVR場(chǎng)景的方式,這種方式比內(nèi)置的IVR引擎更加強(qiáng)大,靈活。這種方法就是通過(guò)調(diào)用各種腳本語(yǔ)言來(lái)配合FreeSWITCH 創(chuàng)建靈活的IVR應(yīng)用模塊。FreeSWITCH 支持以下幾種腳本語(yǔ)言來(lái)創(chuàng)建IVR:
·JavaScript
·Lua
·Perl
我們可以通過(guò)以上任何一種語(yǔ)言來(lái)進(jìn)行IVR開(kāi)發(fā)。在這個(gè)章節(jié),我們重點(diǎn)技術(shù)Lua (www.lua.org),它是一種輕量級(jí)的基本語(yǔ)言,可以嵌入到其他的項(xiàng)目中。最著名的例子就是魔獸世界。
【每一種腳本語(yǔ)言都有他們各自的優(yōu)勢(shì)和劣勢(shì)。因?yàn)長(zhǎng)ua 執(zhí)行比較快,穩(wěn)定性好,而且容易學(xué)習(xí),所以我們選擇Lua 作為重點(diǎn)技術(shù)的基本語(yǔ)言。如果一切條件不變,Lua相對(duì)來(lái)說(shuō)是比較好的選擇用來(lái)編寫(xiě)撥號(hào)規(guī)則腳本!
在這個(gè)章節(jié),我們將討論以下內(nèi)容:
·使用Lua語(yǔ)言開(kāi)發(fā)
·創(chuàng)建語(yǔ)音應(yīng)用
·高級(jí)IVR
·腳本使用提示
開(kāi)發(fā)語(yǔ)音應(yīng)用中使用了Lua腳本語(yǔ)言,在我們的實(shí)例中,我們將更多使用自定義的phrase macros。
使用Lua語(yǔ)言開(kāi)發(fā)
當(dāng)我們使用實(shí)例配置文件時(shí),Lua已經(jīng)被默認(rèn)加載。為了確認(rèn)用戶(hù)已經(jīng)安裝運(yùn)行了Lua, 打開(kāi)fs_cli,然后執(zhí)行命令lua。用戶(hù)應(yīng)該看到類(lèi)似的結(jié)果:
freeswitch@internal> lua
-ERR no reply
如果看到錯(cuò)誤信息,這個(gè)錯(cuò)誤信息提示沒(méi)有發(fā)現(xiàn)此命令,那么用戶(hù)需要安裝加載mod_lua 到系統(tǒng)中。就像我們編譯加載mod_flite那樣安裝此模塊。參考第二章,編譯和安裝的詳細(xì)信息。
從撥號(hào)規(guī)則中運(yùn)行Lua腳本
從
<action application="lua"
data="my_script.lua arg1 arg2 arg3"/>
通過(guò)空格界定傳遞到腳本的參數(shù)。包含一個(gè)帶空格的傳遞參數(shù),請(qǐng)使用單引號(hào)來(lái)界定參數(shù):
<action application="lua"
data="my_script.lua 'arg 1' 'arg 2' 'arg 3'"/>
在Windows環(huán)境下: <action application="lua" data="C:\full\path\to\my_script.lua"/> 開(kāi)始編寫(xiě)腳本之前,讓我們簡(jiǎn)單了解一下Lua語(yǔ)言的語(yǔ)法。
未完待續(xù)······