====== Mono - C# API for Kamailio Devel Version ======
Kamailio can execute managed code assemblies via **app_mono** module:
* http://kamailio.org/docs/modules/devel/modules/app_mono.html
The C# API exported by Kamailio to the embedded Mono interpreter is defined in **SR.cs** file located in source tree **modules/app_mono/lib/SR.cs**.
To compile **SR.cs** to a library, use:
gmcs -t:library SR.cs
This will generate the file **SR.dll**. To link your C# file to it, use:
$ gmcs -r:SR.dll MyFile.cs
The API is stored in a **namespace**, named **SR**. The several classes offer access to internal Kamailio functionalities via public static functions.
===== Class Core =====
==== APIVersion ====
public extern static string APIVersion();
Return API version string.
==== Log ====
public extern static void Log(int level, string text);
Write a message via Kamailio logging system to specified log level.
==== Err ====
public extern static void Err(string text);
Write a message via Kamailio logging system to error log level.
==== Dbg ====
public extern static void Dbg(string text);
Write a message via Kamailio logging system to debug log level.
==== ModF ====
public extern static int ModF(string text);
Execute the function named by the value of parameter 'text' exported by a Kamailio module. It has to be a function with no parameters.
===== Class PV =====
==== GetS ====
public extern static string GetS(string pvn);
Get the string value of a pseudo-variable.
==== GetI ====
public extern static int GetI(string pvn);
Get the integer value of a pseudo-variable.
==== SetS ====
public extern static int SetS(string pvn, string val);
Set the pseudo-variable to a string value.
==== SetI ====
public extern static int SetI(string pvn, int val);
Set the pseudo-variable to an integer value.
==== Unset ====
public extern static int Unset(string pvn);
Unset the pseudo-variable (like assigning $null in kamailio.cfg).
==== IsNull ====
public extern static int IsNull(string pvn);
Return true if the pseudo-variable is null.
===== Class HDR =====
==== Append ====
public extern static int Append(string hv);
Add a header to the end of the headers list. The parameter must be full header, including name, body header and ending '\r\n'.
==== Remove ====
public extern static int Remove(string name);
Remove all headers matching the name.
==== Insert ====
public extern static int Insert(string hv);
Add a header to the beginning of the headers list. The parameter must be full header, including name, body header and ending '\r\n'.
==== AppendToReply ====
public extern static int AppendToReply(string hv);
Add a header to the headers list for local reply. The parameter must be full header, including name, body header and ending '\r\n'.
===== Example =====
A basic example of C# application using SR API:
using SR;
namespace MySRTest {
class Test {
static int Main(string[] args) {
SR.Core.Log(1, "Kamailio API Version: " + SR.Core.APIVersion() + "\n");
if (args.Length == 1) {
SR.Core.Log(1, "Parameter from Kamailio config:"
+ args[0] + "\n");
}
SR.Core.Dbg("Request URI is: " + SR.PV.GetS("$ru") + "\n");
SR.PV.SetS("$rU", "123");
SR.HDR.AppendToReply("My-Mono-Hdr: ok\r\n");
SR.Core.ModF("sl_reply_error");
return 1;
}
}
}