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