User Tools

Site Tools


embeddedapi:devel:lua

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
embeddedapi:devel:lua [2011/12/28 11:36]
miconda [SR.dispatcher Package]
embeddedapi:devel:lua [2017/06/23 11:31]
sdamm
Line 10: Line 10:
 Module **app_lua** allows execution of Lua scripts from SIP router configuration file, providing access to SIP message which is processed at that time. Module **app_lua** allows execution of Lua scripts from SIP router configuration file, providing access to SIP message which is processed at that time.
 Exported functions by **app_lua** are available in the Lua script as package **sr**. Exported functions by **app_lua** are available in the Lua script as package **sr**.
 +
 +This page is a documentation for the 5.0 branch of Kamailio as well, as there won't be any new features added to this way of executing lua code in Kamailio. If in doubt (and all needed modules are available), use the [[https://www.kamailio.org/wiki/devel/config-engines|KEMI way]] for your lua application.
  
 References: References:
Line 60: Line 62:
   * dbg   * dbg
   * info   * info
 +  * notice
   * warn   * warn
   * err   * err
Line 306: Line 309:
 </code> </code>
  
 +===== SR.XAVP =====
 +
 +xavp management functions.
 +
 +==== sr.xavp.get_keys ====
 +
 +returns an array table with the key names of the xavp variable.
 +
 +Prototype
 +
 +<code c>
 +t = sr.xavp.get_keys("xavp_name", 0)
 +</code>
 +
 +Example
 +
 +<code c>
 +$xavp(test=>one) = 1;
 +$xavp(test[0]=>two) = "two";
 +$xavp(test[0]=>three) = 3;
 +</code>
 +
 +<code c>
 +t = sr.xavp.get_keys("test", 0)
 +for k,v in pairs(t) do
 +  sr.log("info", string.format("%d:%s\n", k, v))
 +end
 +</code>
 +
 +Result
 +
 +<code c>
 +1:three
 +2:two
 +3:one
 +</code>
 +
 +==== sr.xavp.get ====
 +
 +returns a dictionary table with the values of the xavp variable.
 +Third param is optional and it choose between get all the values of a key ( 0, default) or just the first ones (1)
 +
 +If second param is nil will return all indexes. If second param is <0 will return the index counting from then end ( -1 is the last value )
 +
 +Prototype
 +
 +<code c>
 + sr.xavp.get(xavp_name, indx, flag)
 +</code>
 +
 +Example
 +
 +<code c>
 +$xavp(test=>a) = 4;
 +$xavp(test[0]=>b) = "four";
 +$xavp(test[0]=>a) = 5;
 +$xavp(test[0]=>b) = "five";
 +$xavp(test[0]=>a) = 6;
 +$xavp(test[0]=>b) = "six";
 +
 +$xavp(test=>a) = 1;
 +$xavp(test[0]=>a) = 2;
 +$xavp(test[0]=>a) = 3;
 +$xavp(test[0]=>b) = "one";
 +$xavp(test[0]=>b) = "two";
 +$xavp(test[0]=>b) = "three";
 +</code>
 +
 +<code c>
 + t = sr.xavp.get("test", 0, 0)
 + sr.log("dbg", string.format("sr.xavp.get('test', 0, 0)->%s\n", table.tostring(t)))
 + t = sr.xavp.get("test", 0, 1)
 + sr.log("dbg", string.format("sr.xavp.get('test', 0, 1)->%s\n", table.tostring(t)))
 + t = sr.xavp.get("test", nil, 0)
 + sr.log("dbg", string.format("sr.xavp.get('test', nil, 0)->%s\n", table.tostring(t)))
 + t = sr.xavp.get("test", nil, 1)
 + sr.log("dbg", string.format("sr.xavp.get('test', nil, 1)->%s\n", table.tostring(t)))
 + t = sr.xavp.get("test", -1, 1)
 + sr.log("dbg", string.format("sr.xavp.get('test', -1, 1)->%s\n", table.tostring(t)))
 +</code>
 +
 +Result
 +
 +<code c>
 + sr.xavp.get('test', 0, 0)->{a={3,2,1},b={"three","two","one"}}
 + sr.xavp.get('test', 0, 1)->{a=3,b="three"}
 + sr.xavp.get('test', nil, 0)->{{a={3,2,1},b={"three","two","one"}},{a={6,5,4},b={"six","five","four"}}}
 + sr.xavp.get('test', nil, 1)->{{a=3,b="three"},{a=6,b="six"}}
 + sr.xavp.get('test', -1, 1)->{a=6,b="six"}
 +</code>
 ===== SR.SL Package ===== ===== SR.SL Package =====
  
Line 483: Line 576:
 </code> </code>
  
 +==== sr.sqlops.xquery ====
 +
 +Execute SQL query and store in XAVP.
 +
 +Prototype
 +
 +<code c>
 +sr.sqlops.xquery("connection", "query", "xavp")
 +</code>
  
 ===== SR.RR Package ===== ===== SR.RR Package =====
Line 726: Line 828:
  
 ==== sr.uac.replace_from ==== ==== sr.uac.replace_from ====
 +
 +===== SR.TMX Package =====
 +
 +==== sr.tmx.t_suspend ====
 +
 +===== SR.MQUEUE Package =====
 +
 +==== sr.mq.add ====
  
embeddedapi/devel/lua.txt ยท Last modified: 2017/06/23 11:31 by sdamm