//------------------------------------------------------------------------------------------- public string GetVariable(ref FreeSWITCH.Native.ManagedSession session, string settingName, string expectedType, string regex) { Debug(ref session, session.HookState.ToString()); string value = session.GetVariable(settingName); if (!String.IsNullOrWhiteSpace(value)) { session.Execute("log", "INFO Loaded pre-set variable \"" + settingName + "\": '" + value + "'"); return value; } string entered = null; while (true) { entered = PlayAndGet(ref session, 1, 20, settingName, null).Replace("*", "."); WriteToLog("Entered: " + entered); if (regex == null || Regex.Match(entered, regex).Success) { session.Execute("Playback", @"receivepayment\YouEntered.wav"); session.Execute("Say", "en " + expectedType + " masculine " + entered); if (PlayAndGet(ref session, 1, 1, "IsThisCorrect", null) == "1") { session.Execute("Playback", @"receivepayment\ThankYou.wav"); break; } } else { string failFile = @"receivepayment\" + settingName + "-TryAgain.wav"; session.Execute("Playback", failFile); } } return entered; }
//------------------------------------------------------------------------------------------- public string PlayAndGet(ref FreeSWITCH.Native.ManagedSession session, int digits, string promptFile, string failFile) { if (session.getState() == _executeState) return session.PlayAndGetDigits(digits, digits, _maxTries, _timeout, "", promptFile, failFile, "", "response", 10000, "0"); else return string.Empty; }
//------------------------------------------------------------------------------------------- private void FreeSwitch_Events(FreeSWITCH.EventBinding.EventBindingArgs args) { switch_event evt = args.EventObj; try { Console.WriteLine("Event " + evt.event_id + ":" + Path.GetFileName(evt.last_header.value));// +blockConsole.Text } catch { } if (evt.event_id.ToString() == "SWITCH_EVENT_CUSTOM" && evt.last_header.value == "UP") Console.WriteLine("Switch Started"); }
//------------------------------------------------------------------------------------------- public string PlayAndGet(ref FreeSWITCH.Native.ManagedSession session, int mindigits, int maxdigits, string promptFile, string regex) { string playFile = @"receivepayment\" + promptFile + ".wav"; string failFile = @"receivepayment\" + promptFile + "-TryAgain.wav"; if (session.getState() == "CS_EXECUTE") { return session.PlayAndGetDigits(mindigits, maxdigits, 5, 7000, "#", playFile, failFile, regex, "response", 10000, null); } else { throw new Exception("Call is not in the proper state: " + session.getState()); } }
//------------------------------------------------------------------------------------------- private string xml_search(FreeSWITCH.SwitchXmlSearchBinding.XmlBindingArgs args) { return null; }
private string xml_search(FreeSWITCH.SwitchXmlSearchBinding.XmlBindingArgs args) { if (args.KeyName != "name" || args.Section != "configuration" || args.TagName != "configuration") return null; switch (args.KeyValue) { case "sofia.conf": return generate_xml_config(args.KeyValue, "Sofia Endpoint", sofia.gen_config); case "event_socket.conf": return generate_xml_config(args.KeyValue, "Socket Client", event_socket.gen_config); case "conference.conf": return generate_xml_config(args.KeyValue, "Audio Conference", conference.gen_config); } return null; }
private void event_handler(FreeSWITCH.EventBinding.EventBindingArgs args) { if (Application.Current == null)//can happen during shutdown return; if (BroadcastHandler == null) BroadcastHandler = new BroadcastEventDel(BroadcastEvent); Application.Current.Dispatcher.BeginInvoke(BroadcastHandler, new object[] { new FSEvent(args.EventObj) }); }
private string xml_search(FreeSWITCH.SwitchXmlSearchBinding.XmlBindingArgs args) { if (args.KeyName != "name" || args.Section != "configuration" || args.TagName != "configuration" || args.KeyValue != "sofia.conf") return null; String config = sofia_config; config = config.Replace("SIP_SERVER", sip_server + ":" + sip_port); config = config.Replace("SIP_USERNAME", sip_user); config = config.Replace("SIP_PASSWORD", sip_password); return config; }
private void event_handler(FreeSWITCH.EventBinding.EventBindingArgs args) { OnSofiaEvent(args.EventObj); }
//------------------------------------------------------------------------------------------- public void Debug(ref FreeSWITCH.Native.ManagedSession session, string output) { session.Execute("log", "INFO " + output); }
private void event_handler(FreeSWITCH.EventBinding.EventBindingArgs args) { Dispatcher.BeginInvoke(del, new object[]{args.EventObj }); }