Author: sayer
Date: 2009-05-07 01:22:39 +0200 (Thu, 07 May 2009)
New Revision: 1368

Added:
   trunk/apps/dsm/mods/mod_py/Readme.mod_py.txt
Modified:
   trunk/apps/dsm/mods/mod_py/PyDSMSession.cpp
Log:
documentation and some bfix


Modified: trunk/apps/dsm/mods/mod_py/PyDSMSession.cpp
===================================================================
--- trunk/apps/dsm/mods/mod_py/PyDSMSession.cpp 2009-05-06 22:50:04 UTC (rev 
1367)
+++ trunk/apps/dsm/mods/mod_py/PyDSMSession.cpp 2009-05-06 23:22:39 UTC (rev 
1368)
@@ -111,7 +111,7 @@
     int loop = 0;
     int front = 0;
 
-    if(!PyArg_ParseTuple(args,"s|ii",&name, &loop))
+    if(!PyArg_ParseTuple(args,"s|ii", &name, &loop, &front))
       return NULL;
 
     GET_SESS_PTR;
@@ -281,8 +281,8 @@
     {"playPrompt",       (PyCFunction)playPrompt, METH_VARARGS,"play a 
prompt"},
     {"playFile",         (PyCFunction)playFile,   METH_VARARGS,"play a file"},
     {"recordFile",       (PyCFunction)recordFile, METH_VARARGS,"start 
recording to a file"},
-    {"getRecordLength",  (PyCFunction)getRecordLength, METH_VARARGS,"get the 
length of the current recording"},
-    {"getRecordDataSize",(PyCFunction)getRecordDataSize, METH_VARARGS,"get the 
data size of the current recording"},
+    {"getRecordLength",  (PyCFunction)getRecordLength, METH_NOARGS,"get the 
length of the current recording"},
+    {"getRecordDataSize",(PyCFunction)getRecordDataSize, METH_NOARGS,"get the 
data size of the current recording"},
     {"stopRecord",      (PyCFunction)stopRecord, METH_NOARGS,"stop the running 
recording"},
     {"closePlaylist",   (PyCFunction)closePlaylist, METH_VARARGS,"close the 
playlist"},
     {"setPromptSet",    (PyCFunction)setPromptSet, METH_VARARGS,"set prompt 
set"},
@@ -292,7 +292,7 @@
     {"mute",            (PyCFunction)mute, METH_NOARGS,"mute RTP)"},
     {"unmute",          (PyCFunction)unmute, METH_NOARGS,"unmute RTP"},
     {"B2BconnectCallee", (PyCFunction)B2BconnectCallee, METH_VARARGS,"connect 
callee of B2B leg"},
-    {"B2BterminateOtherLeg", (PyCFunction)B2BterminateOtherLeg, 
METH_VARARGS,"terminate other leg of B2B call"},
+    {"B2BterminateOtherLeg", (PyCFunction)B2BterminateOtherLeg, 
METH_NOARGS,"terminate other leg of B2B call"},
 
     {NULL}  /* Sentinel */
   };

Added: trunk/apps/dsm/mods/mod_py/Readme.mod_py.txt
===================================================================
--- trunk/apps/dsm/mods/mod_py/Readme.mod_py.txt        2009-05-06 22:50:04 UTC 
(rev 1367)
+++ trunk/apps/dsm/mods/mod_py/Readme.mod_py.txt        2009-05-06 23:22:39 UTC 
(rev 1368)
@@ -0,0 +1,168 @@
+mod_py - DSM actions and conditions in Python
+=============================================
+
+mod_py adds one action and one condition to DSM: py(...)
+
+py() action may execute arbitrary python code; py() condition 
+python code needs to evaluate to an expression which returns
+True or False (or and int value).
+
+The 'type' and 'params' are accessible to determine the current
+event's type and parameters.
+
+py() actions and conditions can access session's variables using
+session.var(name) and session.setvar(name, value).
+
+They may even directly use some media functionality implemented 
+in DSM sessions - see session module's help below. But, 
+conceptionally, mod_py is above DSM, so while it would be 
+possible it is not recommended to extend it with functions that
+manipulate the AmSession directly.
+
+Indentation is a little ugly with multi-line py() actions. 
+But this is Python's fault (in 21st century, who creates a 
+programming language with fixed indentation?).
+
+locals
+======
+type    - event type (dsm.Timer, dsm.Key, ...)
+params  - dictionary with event parameters 
+           (e.g. params['id'] for event==dsm.Timer)
+dsm     - module to access dsm functions (see below)
+session - module to access session functions (see below)
+
+example
+=======
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+import(mod_py);
+
+initial state begin 
+ enter {
+  py(dsm.INFO("hello dsm-world"))
+  py(
+session.setvar('some_variable','some val')
+print session.var('some_variable')
+print "dsm.Timer = ", dsm.Timer
+)
+  setTimer(1, 5);
+  log(2, $some_variable)
+  repost();
+};
+
+transition "timer" begin - py(type == dsm.Timer and params['id'] == '1')  / 
+         py(session.playFile('wav/default_en.wav')); -> wait;
+
+transition "key 1" begin - py(type == dsm.Key and params['key'] == '1')  / 
+         py(session.playFile('wav/default_en.wav')); -> wait;
+
+state wait;
+transition "bye recvd" (begin, wait) - hangup / stop -> end;
+state end;
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+modules
+=======
+------------------------
+help on module session:
+
+NAME
+    session
+
+FILE
+    (built-in)
+
+FUNCTIONS
+    B2BconnectCallee(string remote_party, string remote_uri [, bool 
relayed_invite])
+        connect callee of B2B leg
+
+    B2BterminateOtherLeg()
+        terminate other leg of B2B call
+
+    addSeparator(string name[, bool front])
+        add a named separator to playlist
+
+    closePlaylist(bool notify)
+        close the playlist
+
+    connectMedia()
+        connect media (RTP processing)
+
+    disconnectMedia()
+        disconnect media (RTP processing)
+
+    getRecordDataSize()
+        get the data size of the current recording
+
+    getRecordLength()
+        get the length of the current recording
+
+    mute()
+        mute RTP)
+
+    playFile(string name [, bool loop[, bool front]])
+        play a file
+
+    playPrompt(string name [, bool loop])
+        play a prompt
+
+    recordFile(string name)
+        start recording to a file
+
+    setError(int errno)
+        set error (errno)
+
+    setPromptSet(string name)
+        set prompt set
+
+    setvar(string name, string value)
+        set a session's variable
+
+    stopRecord()
+        stop the running recording
+
+    unmute()
+        unmute RTP
+
+    var(string name)
+        get a session's variable
+------------------------------------
+Help on module dsm:
+
+NAME
+    dsm
+
+FILE
+    (built-in)
+
+FUNCTIONS
+    DBG(string msg)
+        Log a message using SEMS' logging system, level debug
+
+    ERROR(string msg)
+        Log a message using SEMS' logging system, level error
+
+    INFO(string msg)
+        Log a message using SEMS' logging system, level info
+
+    WARN(string msg)
+        Log a message using SEMS' logging system, level warning
+
+    log(int level, string msg)
+        Log a message using SEMS' logging system
+
+DATA
+    Any = 0
+    B2BOtherBye = 13
+    B2BOtherReply = 12
+    DSMEvent = 10
+    Hangup = 6
+    Hold = 7
+    Invite = 1
+    Key = 3
+    NoAudio = 5
+    PlaylistSeparator = 11
+    SessionStart = 2
+    Timer = 4
+    UnHold = 8
+    XmlrpcResponse = 9
+


Property changes on: trunk/apps/dsm/mods/mod_py/Readme.mod_py.txt
___________________________________________________________________
Name: svn:eol-style
   + native

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to