• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>

    《FreeSWITCH: VoIP實(shí)戰》:嵌入式腳本

    2012-08-22 11:06:12   作者:杜金房    來(lái)源:FreeSWITCH   評論:0  點(diǎn)擊:


      非 Session 函數

      Lua 腳本中也可以使用跟 sesion 不相關(guān)的函數,最典型的是 freeswitch.consoleLog(),用于輸出日志,如:

     freeswitch.consoleLog("NOTICE", "Hello lua log!\n")

      另外一個(gè)是 freeswitch.API,它允許你執行任意 API,如

     api = freeswitch.API();
     reply = api:executeString("sofia", "status");

      獨立的 Lua 腳本

      獨立的 Lua 腳本可以直接在控制臺終端上(使用 luarun)執行,這種腳本大部分可用于執行一些非 Session 相關(guān)的功能,后面我們會(huì )講到相關(guān)例子。

      數據庫

      在 Lua 中,可以使用 LuaSQL 連接各種關(guān)系型數據庫,但據說(shuō) LuaSQL 與某些版本的數據庫驅動(dòng)結合有內存泄漏問(wèn)題,配置起來(lái)也比較復雜。

      另一種連接數據庫的方式是直接使用 freeswitch.Dbh。它可以直接通過(guò) FreeSWITCH 內部的數據庫連接句柄來(lái)連接 sqlite 數據庫或任何支持 ODBC 的數據庫。下面是一個(gè)來(lái)自 FreeSWITCH wiki 的例子。

     local dbh = freeswitch.Dbh("dsn","user","pass") -- when using ODBC
     -- OR --
     -- local dbh = freeswitch.Dbh("core:my_db") -- when using sqlite

     assert(dbh:connected()) -- exits the script if we didn't connect properly

     dbh:test_reactive("SELECT * FROM my_table",
                       "DROP TABLE my_table",
                       "CREATE TABLE my_table (id INTEGER(8), name VARCHAR(255))")

     dbh:query("INSERT INTO my_table VALUES(1, 'foo')") -- populate the table
     dbh:query("INSERT INTO my_table VALUES(2, 'bar')") -- with some test data

     dbh:query("SELECT id, name FROM my_table", function(row)
       stream:write(string.format("%5s : %s\n", row.id, row.name))
     end)

     dbh:query("UPDATE my_table SET name = 'changed'")
     stream:write("Affected rows: " .. dbh:affected_rows() .. "\n")

     dbh:release() -- optional

      Javascript

      相對于 Lua, 大家可能對 Javascript 更熟悉一些。Javascript 是 Web 瀏覽器上最主流的編程語(yǔ)言,它最早是設計出來(lái)用于配合 HTML 渲染頁(yè)面用的,近幾年由于 Node.js 的發(fā)展使它在服務(wù)器端的應用也已發(fā)揚光大。它遵循 EMCAScript 標準。

      通過(guò)加載 mod_spidermonkey 模塊可以使用 js 解析器,模塊 mod_spidermonkey_odbc 則支持在 Javascript 腳本中連接 ODBC 數據庫。

      除語(yǔ)法不同外,用法上與 Lua 類(lèi)似,如使用 javascript (它是一個(gè)APP) 執行一個(gè) session 相關(guān)的腳本,或 jsrun (它是一個(gè)API)執行一個(gè)非 session 相關(guān)的腳本。

      其它腳本語(yǔ)言

      其它腳本語(yǔ)言的使用也類(lèi)似,讀者可參照使用。值得一提的是,FreeSWITCH 有一個(gè) mod_managed 模塊支持 Windows .NET 架構下的語(yǔ)言(F#, VB.NET, C#, IronRuby, IronPython, JScript.NET),通過(guò) mono 也可以支持其它平臺(如 Linux )。


     

    分享到: 收藏

    專(zhuān)題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 永丰县| 临泽县| 宝坻区| 高淳县| 全椒县| 东台市| 招远市| 垫江县| 隆子县| 昌都县| 宾川县| 夹江县| 万州区| 金门县| 金湖县| 高陵县| 顺昌县| 阜平县| 拜城县| 沐川县| 高碑店市| 台北县| 堆龙德庆县| 当雄县| 三河市| 金堂县| 宜兰市| 泊头市| 延寿县| 通许县| 西昌市| 罗平县| 疏勒县| 礼泉县| 松潘县| 澄江县| 拉孜县| 永顺县| 北碚区| 永泰县| 高碑店市| http://444 http://444 http://444 http://444 http://444 http://444