• <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實戰(zhàn)》:嵌入式腳本

    2012-08-22 11:06:12   作者:杜金房    來源:FreeSWITCH   評論:0  點擊:36463


      非 Session 函數(shù)

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

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

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

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

      獨立的 Lua 腳本

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

      數(shù)據(jù)庫

      在 Lua 中,可以使用 LuaSQL 連接各種關系型數(shù)據(jù)庫,但據(jù)說 LuaSQL 與某些版本的數(shù)據(jù)庫驅動結合有內存泄漏問題,配置起來也比較復雜。

      另一種連接數(shù)據(jù)庫的方式是直接使用 freeswitch.Dbh。它可以直接通過 FreeSWITCH 內部的數(shù)據(jù)庫連接句柄來連接 sqlite 數(shù)據(jù)庫或任何支持 ODBC 的數(shù)據(jù)庫。下面是一個來自 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 瀏覽器上最主流的編程語言,它最早是設計出來用于配合 HTML 渲染頁面用的,近幾年由于 Node.js 的發(fā)展使它在服務器端的應用也已發(fā)揚光大。它遵循 EMCAScript 標準。

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

      除語法不同外,用法上與 Lua 類似,如使用 javascript (它是一個APP) 執(zhí)行一個 session 相關的腳本,或 jsrun (它是一個API)執(zhí)行一個非 session 相關的腳本。

      其它腳本語言

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


     

    相關閱讀:

    • 0

    • 0

    • 0

    • 0

    • 0

    • 0

    • 0

    • 0

    分享到:   收藏

    專題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 尼勒克县| 西宁市| 凉城县| 新和县| 德格县| 广平县| 广灵县| 泾川县| 江津市| 微山县| 辽宁省| 司法| 醴陵市| 连江县| 加查县| 珲春市| 施甸县| 长乐市| 铜陵市| 葵青区| 双辽市| 莒南县| 福安市| 扎赉特旗| 福建省| 仙游县| 榆树市| 河曲县| 突泉县| 祁连县| 明星| 长岭县| 渝中区| 莒南县| 镇坪县| 云梦县| 丰台区| 闽侯县| 佛冈县| 手游| 磐安县| http://444 http://444 http://444 http://444 http://444 http://444