freeswitch的lua使用總結

    至於怎麼安裝就不說了,網上一搜一大堆,通常建議源碼安裝,源碼安裝模塊都比較全,加模塊也比較方便。下面簡單的說一下各個模塊git

    在使用ivr的時候,通常都是lua實現ivr。雖然fs提供了menu的配置,可是感受不太靈活。要使用lua的ivr首先得 寫一個lua的腳本。express

--打印日誌
session:consoleLog("info","--------------進入歡迎的語音菜單");
--要執行answer才能給對方播放語音菜單
session:answer();
--設置這一行纔會在lua執行完畢以後不自動掛斷
session:setAutoHangup(false)

--在死循環裏面必定要判斷當前會話還有沒有效
while(session:ready()==true) do

        --播放語音,告訴對方,每個撥號的選項
        session:streamFile("/usr/local/freeswitch/sounds/welcome.wav");
   
        --這裏獲取對端輸入的dtmf信息,也就算按下的是多少
        local digit = session:getDigits(2, "#", 1000);
         --下面對數字逐一判斷 選擇執行
        if(digit == "0") then
                
                
                --若是匹配按下的是0,進入call center,call center是一個APP,默認沒用call center模塊,須要在源碼自行安裝而且 須要load mod_callcenter加載
                session:consoleLog("info","進入callcenter");
                session:execute("callcenter","necoagent");
        end
end

而後就須要在撥號計劃裏面指定給lua執行了。lua也是一個app.session

<extension name="default_1236">
         <condition field="destination_number" expression="^(1236)$">
        <action application="lua" data="腳本所在目錄/腳本文件名"/>
      </condition>
    </extension>

這樣,當我向fs撥號1236的時候就會執行個人腳本app

        lua在fs中應用很是廣。還能夠在lua裏面監聽某一個事件進而進行處理。在conf/autoload_configs/lua.conf.xml 裏面能夠設置事件回調的hook.lua

<hook event="CUSTOM" subclass="conference::maintenance" script="lua目錄/lua文件名"/>日誌

加上這樣一句以後,當有事件自定義事件的conference::maintenance 發生的時候就會執行這個lua的腳本。固然有些事件也能夠在撥號計劃裏面指定腳本code

 <action application="set" data="bridge_pre_execute_aleg_app=lua"/>
   <action application="set" data="bridge_pre_execute_aleg_data=/usr/local/freeswitch/scripts/a.lua"/>xml

加上這兩句,就會在橋接以前在a腿上執行lua. 事件

相關文章
相關標籤/搜索