[Freeswitch-svn] [commit] r3632 - in freeswitch/branches/jkr888/trunk: scripts src/mod/languages/mod_python

Freeswitch SVN jkr888 at freeswitch.org
Tue Dec 12 18:11:12 EST 2006


Author: jkr888
Date: Tue Dec 12 18:11:11 2006
New Revision: 3632

Modified:
   freeswitch/branches/jkr888/trunk/scripts/mytest.py
   freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch.py
   freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch_python.cpp
   freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch_python.h
   freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/mod_python.i
   freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp

Log:


Modified: freeswitch/branches/jkr888/trunk/scripts/mytest.py
==============================================================================
--- freeswitch/branches/jkr888/trunk/scripts/mytest.py	(original)
+++ freeswitch/branches/jkr888/trunk/scripts/mytest.py	Tue Dec 12 18:11:11 2006
@@ -1,20 +1,16 @@
-import sys, time 
 from freeswitch import *
+import sys, time 
 
-loop = 1
-
-def DTMFscanner(input, itype, buf, buflen):
+def onDTMF(input, itype, buf, buflen):
     print "input=",input
     print "itype=",itype
     print "buf=",buf
     print "buflen",buflen
-    return 0
+    if input == "#":
+        return 1
+    else:
+        return 0
 
-print "Hello World"
-print sys.path
-print dir()
-print sys.argv
-
 uuid = sys.argv[0]
 
 newSession = SessionContainer(uuid)
@@ -25,24 +21,17 @@
 newSession.console_clean_log("My uuid is " + uuid + "\n")
 
 newSession.answer()
-newSession.set_dtmf_callback(DTMFscanner)
+newSession.set_dtmf_callback(onDTMF)
 newSession.set_tts_parms("cepstral", "david")
 
-#fs_switch_ivr_session_transfer(session, "1234", "XML", "default")
 newSession.play_file("/root/test.gsm", "")
+newSession.speak_text("Please enter telephone number with area code and press pound sign. ") 
 
-#fs_switch_ivr_speak_text2(session, "cepstral", "david", "<break time='1s' />Welcome to my first python scripts running from <emphasis level='strong'>free switch </emphasis>application.")
-newSession.speak_text("The first of Europe's gamers got their hands on Nintendo's new video-game console on Friday after stores across the continent opened their doors at midnight to end die-hard fans long wait for a Wii.") 
+input = newSession.get_digits("", 11, "*#", 10000)
 
-#fs_switch_ivr_speak_text(session, 
-#                "cepstral",
-#                "david",
-#                None,
-#                0, 
-#                None,
-#                "Welcome to my first python application",
-#                None,
-#                0)
+newSession.console_log("1","result from get digits is "+ input +"\n")
 
-newSession.hangup("1")
+newSession.transfer("1000", "XML", "default")
+
+#newSession.hangup("1")
 

Modified: freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch.py
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch.py	(original)
+++ freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch.py	Tue Dec 12 18:11:11 2006
@@ -65,6 +65,8 @@
     def set_dtmf_callback(*args): return _freeswitch.SessionContainer_set_dtmf_callback(*args)
     def speak_text(*args): return _freeswitch.SessionContainer_speak_text(*args)
     def set_tts_parms(*args): return _freeswitch.SessionContainer_set_tts_parms(*args)
+    def get_digits(*args): return _freeswitch.SessionContainer_get_digits(*args)
+    def transfer(*args): return _freeswitch.SessionContainer_transfer(*args)
 
 class SessionContainerPtr(SessionContainer):
     def __init__(self, this):

Modified: freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch_python.cpp
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch_python.cpp	(original)
+++ freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch_python.cpp	Tue Dec 12 18:11:11 2006
@@ -117,3 +117,19 @@
     tts_name = tts_name_p;
     voice_name = voice_name_p;
 }
+
+void SessionContainer::get_digits(char *dtmf_buf, int len, char *terminators, int timeout)
+{
+    char terminator;
+
+    switch_ivr_collect_digits_count(session, dtmf_buf,(uint32_t) len,(uint32_t) len, terminators, &terminator, (uint32_t) timeout);
+
+}
+
+void SessionContainer::transfer(char *extension, char *dialplan, char *context)
+{
+    switch_ivr_session_transfer(session, extension, dialplan, context);
+}
+
+
+

Modified: freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch_python.h
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch_python.h	(original)
+++ freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/freeswitch_python.h	Tue Dec 12 18:11:11 2006
@@ -39,6 +39,8 @@
         void set_dtmf_callback(PyObject *pyfunc);
         int  speak_text(char *text);
         void set_tts_parms(char *tts_name, char *voice_name);
+        void get_digits(char *dtmf_buf, int len, char *terminators, int timeout);
+        void transfer(char *extensions, char *dialplan, char *context);
     protected:
 };
 

Modified: freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/mod_python.i
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/mod_python.i	(original)
+++ freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/mod_python.i	Tue Dec 12 18:11:11 2006
@@ -1,4 +1,8 @@
 %module freeswitch
+%include "cstring.i"
+
+%cstring_bounded_mutable(char *dtmf_buf, 128);
+
 %{
 #include "freeswitch_python.h"
 %}

Modified: freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp
==============================================================================
--- freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp	(original)
+++ freeswitch/branches/jkr888/trunk/src/mod/languages/mod_python/mod_python_wrap.cpp	Tue Dec 12 18:11:11 2006
@@ -1604,7 +1604,146 @@
 /*@@*/
 
 
+SWIGINTERN int
+  SWIG_CheckLongInRange(long value, long min_value, long max_value,
+			const char *errmsg)
+{
+  if (value < min_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError, 
+		   "value %ld is less than '%s' minimum %ld", 
+		   value, errmsg, min_value);
+    }
+    return 0;    
+  } else if (value > max_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError,
+		   "value %ld is greater than '%s' maximum %ld", 
+		   value, errmsg, max_value);
+    }
+    return 0;
+  }
+  return 1;
+}
 
+
+SWIGINTERN int
+  SWIG_AsVal_long(PyObject * obj, long* val)
+{
+  if (PyLong_Check(obj)) {
+    long v = PyLong_AsLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return 1;
+    } else {
+      if (!val) PyErr_Clear();
+      return 0;
+    }
+  }
+  if (PyInt_Check(obj)) {
+    if (val) *val = PyInt_AsLong(obj);
+    return 1;
+  }
+  if (val) {
+    SWIG_type_error("long", obj);
+  }
+  return 0;
+ }
+
+
+#if INT_MAX != LONG_MAX
+SWIGINTERN int
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{ 
+  const char* errmsg = val ? "int" : (char*)0;
+  long v;
+  if (SWIG_AsVal_long(obj, &v)) {
+    if (SWIG_CheckLongInRange(v, INT_MIN,INT_MAX, errmsg)) {
+      if (val) *val = static_cast<int >(v);
+      return 1;
+    } else {
+      return 0;
+    }
+  } else {
+    PyErr_Clear();
+  }
+  if (val) {
+    SWIG_type_error(errmsg, obj);
+  }
+  return 0;    
+}
+#else
+SWIGINTERNINLINE int
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{
+  return SWIG_AsVal_long(obj,(long*)val);
+}
+#endif
+
+
+SWIGINTERNINLINE int
+SWIG_As_int(PyObject* obj)
+{
+  int v;
+  if (!SWIG_AsVal_int(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier. 
+     */
+    memset((void*)&v, 0, sizeof(int));
+  }
+  return v;
+}
+
+  
+SWIGINTERNINLINE int
+SWIG_Check_int(PyObject* obj)
+{
+  return SWIG_AsVal_int(obj, (int*)0);
+}
+
+
+SWIGINTERN PyObject*
+t_output_helper(PyObject* target, PyObject* o) {
+  if (!target) {
+    target = o;
+  } else if (target == Py_None) {  
+    Py_DECREF(target);
+    target = o;
+  } else {
+    if (!PyList_Check(target)) {
+      PyObject *o2 = target;
+      target = PyList_New(1);
+      PyList_SetItem(target, 0, o2);
+    }
+    PyList_Append(target,o);
+    Py_DECREF(o);
+    }
+  return target;
+}
+
+
+SWIGINTERN PyObject *
+SWIG_FromCharPtr(const char* cptr)
+{ 
+  if (cptr) {
+    size_t size = strlen(cptr);
+    if (size > INT_MAX) {
+      return SWIG_NewPointerObj(const_cast<char* >(cptr), 
+				SWIG_TypeQuery("char *"), 0);
+    } else {
+      if (size != 0) {
+	return PyString_FromStringAndSize(cptr, size);
+      } else {
+	return PyString_FromString(cptr);
+      }
+    }
+  }
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+
+
 switch_status_t PythonDTMFCallback(switch_core_session_t *session, 
                                         void *input, 
                                         switch_input_type_t itype, 
@@ -2025,6 +2164,85 @@
 }
 
 
+static PyObject *_wrap_SessionContainer_get_digits(PyObject *, PyObject *args) {
+    PyObject *resultobj = NULL;
+    SessionContainer *arg1 = (SessionContainer *) 0 ;
+    char *arg2 = (char *) 0 ;
+    int arg3 ;
+    char *arg4 = (char *) 0 ;
+    int arg5 ;
+    char temp2[128+1] ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    PyObject * obj4 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOOO:SessionContainer_get_digits",&obj0,&obj1,&obj2,&obj3,&obj4)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_SessionContainer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        char *t = 0; size_t n;                                                   
+        SWIG_AsCharPtrAndSize(obj1, &t, &n);                                   
+        if (SWIG_arg_fail(2)) SWIG_fail;                                   
+        if ( n > (size_t)128 ) n = (size_t)128;                                  
+        memcpy(temp2, t, sizeof(char)*n);                                         
+        temp2[n] = 0;                                                             
+        arg2 = (char *) temp2;                                                    
+    }
+    {
+        arg3 = static_cast<int >(SWIG_As_int(obj2)); 
+        if (SWIG_arg_fail(3)) SWIG_fail;
+    }
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) {
+        SWIG_arg_fail(4);SWIG_fail;
+    }
+    {
+        arg5 = static_cast<int >(SWIG_As_int(obj4)); 
+        if (SWIG_arg_fail(5)) SWIG_fail;
+    }
+    (arg1)->get_digits(arg2,arg3,arg4,arg5);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    arg2[128] = 0; resultobj = t_output_helper(resultobj, SWIG_FromCharPtr(arg2));
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_SessionContainer_transfer(PyObject *, PyObject *args) {
+    PyObject *resultobj = NULL;
+    SessionContainer *arg1 = (SessionContainer *) 0 ;
+    char *arg2 = (char *) 0 ;
+    char *arg3 = (char *) 0 ;
+    char *arg4 = (char *) 0 ;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    PyObject * obj3 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOOO:SessionContainer_transfer",&obj0,&obj1,&obj2,&obj3)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_SessionContainer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    if (!SWIG_AsCharPtr(obj1, (char**)&arg2)) {
+        SWIG_arg_fail(2);SWIG_fail;
+    }
+    if (!SWIG_AsCharPtr(obj2, (char**)&arg3)) {
+        SWIG_arg_fail(3);SWIG_fail;
+    }
+    if (!SWIG_AsCharPtr(obj3, (char**)&arg4)) {
+        SWIG_arg_fail(4);SWIG_fail;
+    }
+    (arg1)->transfer(arg2,arg3,arg4);
+    
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
 static PyObject * SessionContainer_swigregister(PyObject *, PyObject *args) {
     PyObject *obj;
     if (!PyArg_ParseTuple(args,(char*)"O", &obj)) return NULL;
@@ -2048,6 +2266,8 @@
 	 { (char *)"SessionContainer_set_dtmf_callback", _wrap_SessionContainer_set_dtmf_callback, METH_VARARGS, NULL},
 	 { (char *)"SessionContainer_speak_text", _wrap_SessionContainer_speak_text, METH_VARARGS, NULL},
 	 { (char *)"SessionContainer_set_tts_parms", _wrap_SessionContainer_set_tts_parms, METH_VARARGS, NULL},
+	 { (char *)"SessionContainer_get_digits", _wrap_SessionContainer_get_digits, METH_VARARGS, NULL},
+	 { (char *)"SessionContainer_transfer", _wrap_SessionContainer_transfer, METH_VARARGS, NULL},
 	 { (char *)"SessionContainer_swigregister", SessionContainer_swigregister, METH_VARARGS, NULL},
 	 { NULL, NULL, 0, NULL }
 };



More information about the Freeswitch-svn mailing list