return false;\r
}\r
\r
+ AppDomain.CurrentDomain.AssemblyResolve += (_, rargs) => {\r
+ Log.WriteLine(LogLevel.Debug, "Trying to resolve assembly '{0}'.", rargs.Name);\r
+ if (rargs.Name == Assembly.GetExecutingAssembly().FullName) return Assembly.GetExecutingAssembly();\r
+ var path = Path.Combine(managedDir, rargs.Name + ".dll");\r
+ Log.WriteLine(LogLevel.Debug, "Resolving to: '" + path + "'.");\r
+ return File.Exists(path) ? Assembly.LoadFile(path) : null;\r
+ };\r
+\r
// This is a simple one-time loader to get things in memory\r
// Some day we should allow reloading of modules or something\r
loadAssemblies(managedDir)\r
{\r
string f = Path.Combine(managedDir, s);\r
try {\r
+ Log.WriteLine(LogLevel.Debug, "Loading '{0}'.", f);\r
System.Reflection.Assembly.LoadFile(f);\r
}\r
catch (Exception ex) {\r
}\r
catch (Exception ex) {\r
Log.WriteLine(LogLevel.Warning, "Exception in hangupCallback: {0}", ex.ToString());\r
- throw;\r
}\r
}\r
\r
\r
string inputCallback(IntPtr input, Native.switch_input_type_t inputType)\r
{\r
- switch (inputType) {\r
- case FreeSWITCH.Native.switch_input_type_t.SWITCH_INPUT_TYPE_DTMF:\r
- using (var dtmf = new Native.switch_dtmf_t(input, false)) {\r
- return dtmfCallback(dtmf);\r
- }\r
- case FreeSWITCH.Native.switch_input_type_t.SWITCH_INPUT_TYPE_EVENT:\r
- using (var swevt = new Native.switch_event(input, false)) {\r
- return eventCallback(swevt);\r
- }\r
- default:\r
- return "";\r
+ try {\r
+ switch (inputType) {\r
+ case FreeSWITCH.Native.switch_input_type_t.SWITCH_INPUT_TYPE_DTMF:\r
+ using (var dtmf = new Native.switch_dtmf_t(input, false)) {\r
+ return dtmfCallback(dtmf);\r
+ }\r
+ case FreeSWITCH.Native.switch_input_type_t.SWITCH_INPUT_TYPE_EVENT:\r
+ using (var swevt = new Native.switch_event(input, false)) {\r
+ return eventCallback(swevt);\r
+ }\r
+ default:\r
+ return "";\r
+ }\r
+ } catch (Exception ex) {\r
+ Log.WriteLine(LogLevel.Error, "InputCallback threw exception: " + ex.ToString());\r
+ return "-ERR InputCallback Exception: " + ex.Message;\r
}\r
}\r
\r
- string dtmfCallback(Native.switch_dtmf_t dtmf)\r
- {\r
+ string dtmfCallback(Native.switch_dtmf_t dtmf) {\r
var f = DtmfReceivedFunction;\r
- return f == null ?\r
- "-ERR No DtmfReceivedFunction set." :\r
- f(((char)(byte)dtmf.digit), TimeSpan.FromMilliseconds(dtmf.duration));\r
+ return f == null ? "" \r
+ : f(((char)(byte)dtmf.digit), TimeSpan.FromMilliseconds(dtmf.duration));\r
}\r
\r
- string eventCallback(Native.switch_event swevt)\r
- {\r
+ string eventCallback(Native.switch_event swevt) {\r
using (var evt = new FreeSWITCH.Native.Event(swevt, 0)) {\r
var f = EventReceivedFunction;\r
- return f == null ?\r
- "-ERR No EventReceivedFunction set." :\r
- f(evt);\r
+ return f == null ? "" \r
+ : f(evt);\r
}\r
}\r
\r
return ret;
}
- public static switch_status_t switch_ivr_detect_speech(SWIGTYPE_p_switch_core_session session, string mod_name, string grammar, string path, string dest, switch_asr_handle ah) {
+ public static switch_status_t oh(SWIGTYPE_p_switch_core_session session, string mod_name, string grammar, string path, string dest, switch_asr_handle ah) {
switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_detect_speech(SWIGTYPE_p_switch_core_session.getCPtr(session), mod_name, grammar, path, dest, switch_asr_handle.getCPtr(ah));
return ret;
}