Author: jkr888 Date: Fri Dec 8 17:11:16 2006 New Revision: 3585 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 Fri Dec 8 17:11:16 2006 @@ -1,6 +1,15 @@ import sys, time from freeswitch import * +loop = 1 + +def DTMFscanner(input, itype, buf, buflen): + print "input=",input + print "itype=",itype + print "buf=",buf + print "buflen",buflen + return 0 + print "Hello World" print sys.path print dir() @@ -16,11 +25,14 @@ newSession.console_clean_log("My uuid is " + uuid + "\n") newSession.answer() +newSession.set_dtmf_callback(DTMFscanner) +newSession.set_tts_parms("cepstral", "david") #fs_switch_ivr_session_transfer(session, "1234", "XML", "default") newSession.play_file("/root/test.gsm", "") #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.") #fs_switch_ivr_speak_text(session, # "cepstral", 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 Fri Dec 8 17:11:16 2006 @@ -63,6 +63,8 @@ def set_state(*args): return _freeswitch.SessionContainer_set_state(*args) def play_file(*args): return _freeswitch.SessionContainer_play_file(*args) 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) 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 Fri Dec 8 17:11:16 2006 @@ -1,9 +1,13 @@ #include "freeswitch_python.h" +void *globalDTMFCallbackFunction; + SessionContainer::SessionContainer(char *nuuid) { uuid = nuuid; dtmfCallbackFunction = NULL; + tts_name = NULL; + voice_name = NULL; if ((session = switch_core_session_locate(uuid))) { switch_core_session_rwunlock(session); channel = switch_core_session_get_channel(session); @@ -74,7 +78,7 @@ status = switch_ivr_play_file(session, NULL, file, timer_name, NULL, NULL, 0); } else { - globalDTMFCallBackFunction = dtmfCallbackFunction; + globalDTMFCallbackFunction = dtmfCallbackFunction; status = switch_ivr_play_file(session, NULL, file, timer_name, PythonDTMFCallback, NULL, 0); } @@ -93,3 +97,23 @@ } } +int SessionContainer::speak_text(char *text) +{ + switch_status_t status; + + if (!dtmfCallbackFunction) { + status = switch_ivr_speak_text(session, tts_name, voice_name, NULL, 0, NULL, text, NULL, 0); + } + else { + globalDTMFCallbackFunction = dtmfCallbackFunction; + status = switch_ivr_speak_text(session, tts_name, voice_name, NULL, 0, PythonDTMFCallback, text, NULL, 0); + } + + return status == SWITCH_STATUS_SUCCESS ? 1 : 0; +} + +void SessionContainer::set_tts_parms(char *tts_name_p, char *voice_name_p) +{ + tts_name = tts_name_p; + voice_name = voice_name_p; +} 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 Fri Dec 8 17:11:16 2006 @@ -1,3 +1,6 @@ +#ifndef FREESWITCH_PYTHON_H +#define FREESWITCH_PYTHON_H + #include <Python.h> #ifdef __cplusplus @@ -6,7 +9,7 @@ #include <switch.h> -extern void *globalDTMFCallBackFunction = NULL; +extern void *globalDTMFCallbackFunction; extern switch_status_t PythonDTMFCallback(switch_core_session *session, void *input, switch_input_type_t itype, @@ -19,6 +22,8 @@ switch_channel_t *channel; char *uuid; PyObject *dtmfCallbackFunction; + char *tts_name; + char *voice_name; public: SessionContainer(char *uuid); ~SessionContainer(); @@ -32,6 +37,8 @@ void set_state(char *state); int play_file(char *file, char *timer_name); void set_dtmf_callback(PyObject *pyfunc); + int speak_text(char *text); + void set_tts_parms(char *tts_name, char *voice_name); protected: }; @@ -39,3 +46,4 @@ } #endif +#endif 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 Fri Dec 8 17:11:16 2006 @@ -7,7 +7,7 @@ %{ -extern switch_status_t PythonDTMFCallback(switch_core_session_t *session, +switch_status_t PythonDTMFCallback(switch_core_session_t *session, void *input, switch_input_type_t itype, void *buf, @@ -17,7 +17,7 @@ PyObject *result; switch_status_t dres = SWITCH_STATUS_FALSE; - func = (PyObject *) globalDTMFCallBackFunction; // Get Python function + func = (PyObject *) globalDTMFCallbackFunction; // Get Python function arglist = Py_BuildValue("(sisi)",input,itype,buf,buflen); // Build argument list result = PyEval_CallObject(func,arglist); // Call Python Py_DECREF(arglist); // Trash arglist 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 Fri Dec 8 17:11:16 2006 @@ -1605,7 +1605,7 @@ -extern switch_status_t PythonDTMFCallback(switch_core_session_t *session, +switch_status_t PythonDTMFCallback(switch_core_session_t *session, void *input, switch_input_type_t itype, void *buf, @@ -1615,7 +1615,7 @@ PyObject *result; switch_status_t dres = SWITCH_STATUS_FALSE; - func = (PyObject *) globalDTMFCallBackFunction; // Get Python function + func = (PyObject *) globalDTMFCallbackFunction; // Get Python function arglist = Py_BuildValue("(sisi)",input,itype,buf,buflen); // Build argument list result = PyEval_CallObject(func,arglist); // Call Python Py_DECREF(arglist); // Trash arglist @@ -1630,24 +1630,24 @@ #ifdef __cplusplus extern "C" { #endif -static int _wrap_globalDTMFCallBackFunction_set(PyObject *_val) { +static int _wrap_globalDTMFCallbackFunction_set(PyObject *_val) { { void * temp; if ((SWIG_ConvertPtr(_val, static_cast<void ** >(&temp), 0, SWIG_POINTER_EXCEPTION | SWIG_POINTER_DISOWN)) == -1) { - SWIG_append_errmsg("C/C++ variable 'globalDTMFCallBackFunction'"); + SWIG_append_errmsg("C/C++ variable 'globalDTMFCallbackFunction'"); return 1; } - globalDTMFCallBackFunction = (void *) temp; + globalDTMFCallbackFunction = (void *) temp; } return 0; } -static PyObject *_wrap_globalDTMFCallBackFunction_get(void) { +static PyObject *_wrap_globalDTMFCallbackFunction_get(void) { PyObject *pyobj = NULL; - pyobj = SWIG_NewPointerObj((void *)(globalDTMFCallBackFunction), SWIGTYPE_p_void, 0); + pyobj = SWIG_NewPointerObj((void *)(globalDTMFCallbackFunction), SWIGTYPE_p_void, 0); return pyobj; } @@ -1973,6 +1973,58 @@ } +static PyObject *_wrap_SessionContainer_speak_text(PyObject *, PyObject *args) { + PyObject *resultobj = NULL; + SessionContainer *arg1 = (SessionContainer *) 0 ; + char *arg2 = (char *) 0 ; + int result; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if(!PyArg_ParseTuple(args,(char *)"OO:SessionContainer_speak_text",&obj0,&obj1)) 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; + } + result = (int)(arg1)->speak_text(arg2); + + { + resultobj = SWIG_From_int(static_cast<int >(result)); + } + return resultobj; + fail: + return NULL; +} + + +static PyObject *_wrap_SessionContainer_set_tts_parms(PyObject *, PyObject *args) { + PyObject *resultobj = NULL; + SessionContainer *arg1 = (SessionContainer *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if(!PyArg_ParseTuple(args,(char *)"OOO:SessionContainer_set_tts_parms",&obj0,&obj1,&obj2)) 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; + } + (arg1)->set_tts_parms(arg2,arg3); + + 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; @@ -1994,6 +2046,8 @@ { (char *)"SessionContainer_set_state", _wrap_SessionContainer_set_state, METH_VARARGS, NULL}, { (char *)"SessionContainer_play_file", _wrap_SessionContainer_play_file, METH_VARARGS, NULL}, { (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_swigregister", SessionContainer_swigregister, METH_VARARGS, NULL}, { NULL, NULL, 0, NULL } }; @@ -2484,6 +2538,6 @@ SWIG_InstallConstants(d,swig_const_table); PyDict_SetItemString(d,(char*)"cvar", SWIG_globals); - SWIG_addvarlink(SWIG_globals,(char*)"globalDTMFCallBackFunction",_wrap_globalDTMFCallBackFunction_get, _wrap_globalDTMFCallBackFunction_set); + SWIG_addvarlink(SWIG_globals,(char*)"globalDTMFCallbackFunction",_wrap_globalDTMFCallbackFunction_get, _wrap_globalDTMFCallbackFunction_set); }