public void LadeAimlDateienAusVerzeichnis( string verzeichnis, GaitoBotEigenschaften botEigenschaften) { if (Directory.Exists(verzeichnis)) { string[] files = Directory.GetFiles(verzeichnis, "*.aiml"); if (files.Length == 0) { this._protokoll.AppendFormat(ResReader.Reader(this._protokollKultur).GetString("KeineAIMLDateienImVerzeichnisGefunden", this._protokollKultur), (object)verzeichnis); this._protokoll.Append("\n"); } foreach (string aimlDateiname in files) { this.AIMLDateiVerarbeiten(aimlDateiname, botEigenschaften); } this._protokoll.AppendFormat(ResReader.Reader(this._protokollKultur).GetString("VerzeichnisEingelesen", this._protokollKultur), (object)verzeichnis, (object)this._wissen.AnzahlCategories); this._protokoll.Append("\n"); } else { this._protokoll.AppendFormat(ResReader.Reader(this._protokollKultur).GetString("VerzeichnisNichtGefunden", this._protokollKultur), (object)verzeichnis); this._protokoll.Append("\n"); } }
public WissensLader(Wissen wissen, CultureInfo protokollKultur, Normalisierung normalisierung) { this._wissen = wissen; this._protokollKultur = protokollKultur; this._normalisierung = normalisierung; this._protokoll = new StringBuilder(); this._protokoll.AppendFormat(ResReader.Reader(this._protokollKultur).GetString("WissensLadenGestartetUm", this._protokollKultur), (object)DateTime.Now.ToString()); this._protokoll.Append("\n"); }
public string Lesen(string name) { name = name.ToLower(); if (!this.IsEmpty(name)) { return((string)this._eigenschaften[(object)name]); } return(ResReader.Reader((CultureInfo)null).GetString("unbekannteEigenschaft")); }
public string Lesen(string name) { name = name.ToLower(); if (!this.IsEmpty(name)) { return(this._eigenschaften[name]); } return(ResReader.Reader(null).GetString("unbekannteBotEigenschaft")); }
public string GetStarInhalt(int starNr) { if (!this._erfolgreich) { throw new ApplicationException("Requested STAR for not succesfull match!"); } string groupname = string.Format("star{0}", starNr); if (this._match.Groups[groupname] == null) { throw new ApplicationException(string.Format(ResReader.Reader(null).GetString("InputStarIndexUeberschritten"), starNr, this._eingabe)); } return(this._match.Groups[groupname].Value); }
public string GetStarInhalt(int starNr) { if (!this._erfolgreich) { throw new ApplicationException("Requested STAR for not succesfull match!"); } string index = string.Format("star{0}", (object)starNr); if (this._match.Groups[index] == null) { throw new ApplicationException(string.Format(ResReader.Reader((CultureInfo)null).GetString("InputStarIndexUeberschritten"), (object)starNr, (object)this._eingabe)); } return(this._match.Groups[index].Value); }
public void LadenAusXMLDoms(List <DomDocLadePaket> xmlDoms) { this.PreInit(); WissensLader wissensLader = new WissensLader(this._wissen, this._loggingKultur, this._normalisierung); wissensLader.AimlDateiWirdGeladen += new WissensLader.AimlDateiWirdGeladenEventHandler(this.loader_AIMLDateiWirdGeladen); foreach (DomDocLadePaket xmlDom in xmlDoms) { Application.DoEvents(); wissensLader.AimldomDokumentVerarbeiten(xmlDom.XmlDocument, xmlDom.Dateiname, this._botEigenschaften); } wissensLader.AimlDateiWirdGeladen -= new WissensLader.AimlDateiWirdGeladenEventHandler(this.loader_AIMLDateiWirdGeladen); this._ladeProtokoll.Append(wissensLader.Protokoll); this._ladeProtokoll.AppendFormat(ResReader.Reader(this._loggingKultur).GetString("DOMDokumenteEingelesen", this._loggingKultur), (object)xmlDoms.Count, (object)this._wissen.AnzahlCategories); this._ladeProtokoll.Append("\n"); this.PostInit(); }
public string GetAntwort(string eingabe, GaitoBotSession session) { if (eingabe == null || eingabe.Trim() == "") { eingabe = "TARGET EMPTYINPUT"; } session.Denkprotokoll.Add(new BotDenkProtokollSchritt(eingabe, BotDenkProtokollSchritt.SchrittArten.Eingabe)); AntwortFinder antwortFinder = new AntwortFinder(this._normalisierung.StartupInfos.SatzTrenner.ToArray(), this._normalisierung, this._wissen, session, this._botEigenschaften, this._beiEinwortEingabenOhneMatchAufSraiOnlyOneWordUmleiten); List <AntwortSatz> list = antwortFinder.GetAntwortSaetze(eingabe); StringBuilder stringBuilder = new StringBuilder(); if (list == null) { session.Denkprotokoll.Add(new BotDenkProtokollSchritt(ResReader.Reader(session.DenkprotokollKultur).GetString("KonnteKeineGueltigeAntwortEreugen", session.DenkprotokollKultur), BotDenkProtokollSchritt.SchrittArten.Warnung)); list = new List <AntwortSatz>(); list.Add(new AntwortSatz(ResReader.Reader(this.LoggingKultur).GetString("NotfallAntwort", this.LoggingKultur), true)); } foreach (AntwortSatz item in list) { string[] array = item.Satz.Split('|'); foreach (string text in array) { GaitoBotSessionSchritt gaitoBotSessionSchritt = new GaitoBotSessionSchritt(); gaitoBotSessionSchritt.BotAusgabe = text; if (session.LetzterSchritt != null) { gaitoBotSessionSchritt.That = session.LetzterSchritt.BotAusgabe; } else { gaitoBotSessionSchritt.That = string.Empty; } gaitoBotSessionSchritt.Topic = session.AktuellesThema; gaitoBotSessionSchritt.UserEingabe = eingabe; session.AddSchritt(gaitoBotSessionSchritt); if (stringBuilder.Length != 0) { stringBuilder.Append(" "); } stringBuilder.Append(text); } } return(stringBuilder.ToString()); }
public string GetAntwort(string eingabe, GaitoBotSession session) { if (eingabe == null || eingabe.Trim() == "") { eingabe = "TARGET EMPTYINPUT"; } session.Denkprotokoll.Add(new BotDenkProtokollSchritt(eingabe, BotDenkProtokollSchritt.SchrittArten.Eingabe)); List <AntwortSatz> antwortSatzList = new AntwortFinder(this._normalisierung.StartupInfos.SatzTrenner.ToArray(), this._normalisierung, this._wissen, session, this._botEigenschaften, this._beiEinwortEingabenOhneMatchAufSraiOnlyOneWordUmleiten).GetAntwortSaetze(eingabe); StringBuilder stringBuilder = new StringBuilder(); if (antwortSatzList == null) { session.Denkprotokoll.Add(new BotDenkProtokollSchritt(ResReader.Reader(session.DenkprotokollKultur).GetString("KonnteKeineGueltigeAntwortEreugen", session.DenkprotokollKultur), BotDenkProtokollSchritt.SchrittArten.Warnung)); antwortSatzList = new List <AntwortSatz>(); antwortSatzList.Add(new AntwortSatz(ResReader.Reader(this.LoggingKultur).GetString("NotfallAntwort", this.LoggingKultur), true)); } foreach (AntwortSatz antwortSatz in antwortSatzList) { string satz = antwortSatz.Satz; char[] chArray = new char[1] { '|' }; foreach (string str in satz.Split(chArray)) { session.AddSchritt(new GaitoBotSessionSchritt() { BotAusgabe = str, That = session.LetzterSchritt == null ? string.Empty : session.LetzterSchritt.BotAusgabe, Topic = session.AktuellesThema, UserEingabe = eingabe }); if ((uint)stringBuilder.Length > 0U) { stringBuilder.Append(" "); } stringBuilder.Append(str); } } return(stringBuilder.ToString()); }
public List <AntwortSatz> GetAntwortSaetze(string eingabe) { if (this._session == null) { throw new ApplicationException("_session = null!"); } string empty = string.Empty; string aktuellesThema = this._session.AktuellesThema; empty = ((this._session.LetzterSchritt == null) ? "*" : this._session.LetzterSchritt.BotAusgabe); this._session.Denkprotokoll.Add(new BotDenkProtokollSchritt(string.Format(ResReader.Reader(this._session.DenkprotokollKultur).GetString("ThatTopicImDenkprotokoll", this._session.DenkprotokollKultur), aktuellesThema, empty), BotDenkProtokollSchritt.SchrittArten.Info)); eingabe = this._normalisierer.StandardErsetzungenDurchfuehren(eingabe); string[] array = eingabe.Split(this._trenner, StringSplitOptions.RemoveEmptyEntries); List <AntwortSatz> list = new List <AntwortSatz>(); bool flag = true; string[] array2 = array; foreach (string text in array2) { if (text != null && text.Trim() != "") { AntwortSatz antwortSatz = this.GetQualifizierteAntwort_(text, empty, new ArrayList()); if (antwortSatz != null) { if (this._beiEinwortEingabenOhneMatchAufSraiOnlyOneWordUmleiten && antwortSatz.IstNotfallAntwort && eingabe.Trim().IndexOf(" ") == -1) { antwortSatz = new AntwortSatz("TARGET ONLYONEWORD", true); antwortSatz.IstNotfallAntwort = true; } if (antwortSatz.IstNotfallAntwort) { if (flag) { list = new List <AntwortSatz>(); list.Add(antwortSatz); } } else { if (flag) { list = new List <AntwortSatz>(); } list.Add(antwortSatz); flag = false; } } } } if (flag && !this._session.BereitsEineNotfallAntwortGezeigt) { this._session.BereitsEineNotfallAntwortGezeigt = true; return(this.GetAntwortSaetze("TARGET FIRSTBADANSWER")); } foreach (AntwortSatz item in list) { if (item.IstNotfallAntwort && item.Satz == "TARGET ONLYONEWORD") { AntwortSatz qualifizierteAntwort_ = this.GetQualifizierteAntwort_("TARGET ONLYONEWORD", "EMPTYTHAT", new ArrayList()); if (qualifizierteAntwort_ != null) { item.Satz = qualifizierteAntwort_.Satz; } } } if (list.Count == 0) { list = null; } return(list); }
private string GetAusgabeDiesesTags(long laengeBisherigeAntwort, XmlNode node, PatternMatcher patternMatch, PatternMatcher thatMatch, string that, out bool enthaeltAusschliesslichNotfallAntwort, ArrayList vorherigeSRAIs) { enthaeltAusschliesslichNotfallAntwort = false; if (node is XmlText) { return(node.InnerText); } XmlNode xmlNode2; switch (node.Name) { case "bot": if (node.Attributes["name"] == null) { enthaeltAusschliesslichNotfallAntwort = true; return("NAMELESS-BOT-PROPERTY"); } return(this._botEigenschaften.Lesen(node.Attributes["name"].Value)); case "condition": { ConditionStatus conditionStatus = new ConditionStatus(); conditionStatus.AttributeAusNodeHinzufuegen(node); if (!conditionStatus.KannSchonSchliessen || conditionStatus.Erfuellt(this._session)) { if (node.SelectNodes("li").Count == 0) { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool flag = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode, patternMatch, thatMatch, that, out flag, vorherigeSRAIs)); if (!flag) { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder.ToString()); } foreach (XmlNode item in node.SelectNodes("li")) { bool flag2 = false; if (item.Attributes["name"] == null && item.Attributes["value"] == null && item.Attributes["contains"] == null && item.Attributes["exists"] == null) { flag2 = true; } else { ConditionStatus conditionStatus2 = conditionStatus.Clone(); conditionStatus2.AttributeAusNodeHinzufuegen(item); flag2 = (conditionStatus2.KannSchonSchliessen && conditionStatus2.Erfuellt(this._session)); } if (flag2) { bool flag3 = default(bool); string ausgabeDiesesTags = this.GetAusgabeDiesesTags(laengeBisherigeAntwort, item, patternMatch, thatMatch, that, out flag3, vorherigeSRAIs); if (flag3) { enthaeltAusschliesslichNotfallAntwort = true; } return(ausgabeDiesesTags); } } } return(""); } case "formal": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode2 in node.ChildNodes) { bool flag17 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode2, patternMatch, thatMatch, that, out flag17, vorherigeSRAIs)); if (!flag17) { enthaeltAusschliesslichNotfallAntwort = false; } } char c2 = ' '; StringBuilder stringBuilder5 = new StringBuilder(); string text3 = stringBuilder.ToString(); for (int j = 0; j < text3.Length; j++) { char c3 = text3[j]; if (c2 == ' ') { stringBuilder5.Append(c3.ToString().ToUpper()); } else { stringBuilder5.Append(c3.ToString().ToLower()); } c2 = c3; } return(stringBuilder5.ToString()); } case "gender": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode3 in node.ChildNodes) { bool flag9 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode3, patternMatch, thatMatch, that, out flag9, vorherigeSRAIs)); if (!flag9) { enthaeltAusschliesslichNotfallAntwort = false; } } return(this._normalisierer.GeschlechtAustauschen(stringBuilder.ToString())); } case "get": if (node.Attributes["name"] != null) { string text = StandardGlobaleEigenschaften.GetStandardConditionContent(node.Attributes["name"].Value); if (text == null) { text = this._session.UserEigenschaften.Lesen(node.Attributes["name"].Value); } return(text); } return(ResReader.Reader(null).GetString("unbekannteEigenschaft")); case "input": { int num = 1; if (node.Attributes["index"] != null) { string value2 = node.Attributes["index"].Value; if (!string.IsNullOrEmpty(value2)) { value2 = value2.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0]; if (!int.TryParse(value2, out num)) { num = 1; } } } if (num < 0) { num = 1; } if (num > this._session.LetzteSchritte.Count - 1) { return(""); } string userEingabe = this._session.LetzteSchritte[this._session.LetzteSchritte.Count - num].UserEingabe; if (userEingabe == "TARGET BOTSTART") { return(""); } return(userEingabe); } case "li": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode4 in node.ChildNodes) { bool flag14 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode4, patternMatch, thatMatch, that, out flag14, vorherigeSRAIs)); if (!flag14) { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder.ToString()); } case "lowercase": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode5 in node.ChildNodes) { bool flag10 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode5, patternMatch, thatMatch, that, out flag10, vorherigeSRAIs)); if (!flag10) { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder.ToString().ToLower()); } case "person2": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode6 in node.ChildNodes) { bool flag5 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode6, patternMatch, thatMatch, that, out flag5, vorherigeSRAIs)); if (!flag5) { enthaeltAusschliesslichNotfallAntwort = false; } } return(this._normalisierer.Person2Austauschen(stringBuilder.ToString())); } case "person": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode7 in node.ChildNodes) { bool flag8 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode7, patternMatch, thatMatch, that, out flag8, vorherigeSRAIs)); if (!flag8) { enthaeltAusschliesslichNotfallAntwort = false; } } return(this._normalisierer.PersonAustauschen(stringBuilder.ToString())); } case "random": { if (node.SelectNodes("li").Count == 0) { enthaeltAusschliesslichNotfallAntwort = true; return("NO LI-TAGS IN RANDOM-TAG"); } XmlNode node11 = this.WaehleZufaelligenNode(node.SelectNodes("li")); bool flag13 = default(bool); string ausgabeDiesesTags3 = this.GetAusgabeDiesesTags(laengeBisherigeAntwort, node11, patternMatch, thatMatch, that, out flag13, vorherigeSRAIs); if (flag13) { enthaeltAusschliesslichNotfallAntwort = true; } return(ausgabeDiesesTags3); } case "script": { if (node.Attributes["language"] == null) { return(node.OuterXml); } string value4 = node.Attributes["language"].Value; if (!(value4 == "gaitoscript")) { if (value4 == "javascript") { goto IL_0c19; } goto IL_0c19; } GaitoScriptInterpreter gaitoScriptInterpreter = new GaitoScriptInterpreter(this._session); gaitoScriptInterpreter.Execute(node.InnerText); if (gaitoScriptInterpreter.Fehler == null) { if (gaitoScriptInterpreter.Ausgabe == null) { return(""); } return(gaitoScriptInterpreter.Ausgabe); } return(string.Format("GaitoScript-Error: {0}", gaitoScriptInterpreter.Fehler)); } case "sentence": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode8 in node.ChildNodes) { bool flag15 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode8, patternMatch, thatMatch, that, out flag15, vorherigeSRAIs)); if (!flag15) { enthaeltAusschliesslichNotfallAntwort = false; } } bool flag16 = true; StringBuilder stringBuilder4 = new StringBuilder(); string text2 = stringBuilder.ToString(); for (int i = 0; i < text2.Length; i++) { char c = text2[i]; if (flag16) { stringBuilder4.Append(c.ToString().ToUpper()); if (c != ' ') { flag16 = false; } } else { stringBuilder4.Append(c); } char c2 = c; } return(stringBuilder4.ToString()); } case "set": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode9 in node.ChildNodes) { bool flag6 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode9, patternMatch, thatMatch, that, out flag6, vorherigeSRAIs)); if (!flag6) { enthaeltAusschliesslichNotfallAntwort = false; } } if (node.Attributes["name"] != null) { string value = node.Attributes["name"].Value; string a = value.Trim().ToLower(); if (a == "topic") { this._session.SetzeAktuellesThema(stringBuilder.ToString()); } this._session.UserEigenschaften.Setzen(value, stringBuilder.ToString()); } return(stringBuilder.ToString()); } case "srai": { vorherigeSRAIs.Add(node); StringBuilder stringBuilder2 = new StringBuilder(); foreach (XmlNode childNode10 in node.ChildNodes) { bool flag12 = default(bool); stringBuilder2.Append(this.GetAusgabeDiesesTags(0L, childNode10, patternMatch, thatMatch, that, out flag12, vorherigeSRAIs)); } StringBuilder stringBuilder3 = new StringBuilder(); if (laengeBisherigeAntwort > 0) { stringBuilder3.Append("|"); that = "EMPTYTHAT"; } AntwortSatz qualifizierteAntwort_ = this.GetQualifizierteAntwort_(stringBuilder2.ToString(), that, vorherigeSRAIs); if (qualifizierteAntwort_ == null) { enthaeltAusschliesslichNotfallAntwort = true; } else { stringBuilder3.Append(qualifizierteAntwort_.Satz); if (qualifizierteAntwort_.IstNotfallAntwort) { enthaeltAusschliesslichNotfallAntwort = true; } else { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder3.ToString()); } case "star": { int starNr2 = 1; if (node.Attributes["index"] != null && !int.TryParse(node.Attributes["index"].Value, out starNr2)) { starNr2 = 1; } return(patternMatch.GetStarInhalt(starNr2)); } case "that": { int num2 = 1; if (node.Attributes["index"] != null) { string value3 = node.Attributes["index"].Value; if (!string.IsNullOrEmpty(value3)) { value3 = value3.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0]; if (!int.TryParse(value3, out num2)) { num2 = 1; } } } if (num2 < 0) { num2 = 1; } if (num2 == 1) { return(that); } if (num2 > this._session.LetzteSchritte.Count - 1) { return(""); } return(this._session.LetzteSchritte[this._session.LetzteSchritte.Count - num2].BotAusgabe); } case "thatstar": { int starNr = 1; if (node.Attributes["index"] != null && !int.TryParse(node.Attributes["index"].Value, out starNr)) { starNr = 1; } return(thatMatch.GetStarInhalt(starNr)); } case "think": foreach (XmlNode childNode11 in node.ChildNodes) { bool flag7 = default(bool); this.GetAusgabeDiesesTags(laengeBisherigeAntwort, childNode11, patternMatch, thatMatch, that, out flag7, vorherigeSRAIs); } return(""); case "uppercase": { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode12 in node.ChildNodes) { bool flag4 = default(bool); stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + stringBuilder.Length, childNode12, patternMatch, thatMatch, that, out flag4, vorherigeSRAIs)); if (!flag4) { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder.ToString().ToUpper()); } default: { return(node.OuterXml); } IL_0c19: xmlNode2 = node.Clone(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode13 in xmlNode2.ChildNodes) { if (childNode13.Name == "get") { bool flag11 = default(bool); string ausgabeDiesesTags2 = this.GetAusgabeDiesesTags(laengeBisherigeAntwort, childNode13, patternMatch, thatMatch, that, out flag11, vorherigeSRAIs); if (!flag11) { enthaeltAusschliesslichNotfallAntwort = false; } XmlText newChild = childNode13.OwnerDocument.CreateTextNode(ausgabeDiesesTags2); xmlNode2.InsertBefore(newChild, childNode13); xmlNode2.RemoveChild(childNode13); } } return(xmlNode2.OuterXml); } }
private bool PasstCategory(WissensCategory category, string eingabe, string that, ArrayList vorherigeSRAIs, out AntwortSatz antwort) { PatternMatcher patternMatcher = new PatternMatcher(category.That.RegExObjekt, that); if (patternMatcher.Erfolgreich) { PatternMatcher patternMatcher2 = new PatternMatcher(category.Pattern.RegExObjekt, eingabe); if (patternMatcher2.Erfolgreich) { this._session.Denkprotokoll.Add(new BotDenkProtokollSchritt(string.Format(ResReader.Reader(this._session.DenkprotokollKultur).GetString("PassendeKategorieGefunden", this._session.DenkprotokollKultur)), BotDenkProtokollSchritt.SchrittArten.PassendeKategorieGefunden, category)); AntwortSatz antwortSatz = this.InterpretiereCategory_(category, patternMatcher2, patternMatcher, that, vorherigeSRAIs); if (antwortSatz.IstNotfallAntwort) { antwort = antwortSatz; } else if (category.Pattern.Inhalt == "*" && category.That.Inhalt == "*") { antwort = new AntwortSatz(antwortSatz.Satz, true); } else { antwort = new AntwortSatz(antwortSatz.Satz, false); } return(true); } } antwort = null; return(false); }
private string GetAusgabeDiesesTags( long laengeBisherigeAntwort, XmlNode node, PatternMatcher patternMatch, PatternMatcher thatMatch, string that, out bool enthaeltAusschliesslichNotfallAntwort, ArrayList vorherigeSRAIs) { enthaeltAusschliesslichNotfallAntwort = false; if (node is XmlText) { return(node.InnerText); } switch (node.Name) { case "bot": if (node.Attributes["name"] != null) { return(this._botEigenschaften.Lesen(node.Attributes["name"].Value)); } enthaeltAusschliesslichNotfallAntwort = true; return("NAMELESS-BOT-PROPERTY"); case "condition": ConditionStatus conditionStatus1 = new ConditionStatus(); conditionStatus1.AttributeAusNodeHinzufuegen(node); if (!conditionStatus1.KannSchonSchliessen || conditionStatus1.Erfuellt(this._session)) { if (node.SelectNodes("li").Count == 0) { StringBuilder stringBuilder = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder.ToString()); } foreach (XmlNode selectNode in node.SelectNodes("li")) { bool flag; if (selectNode.Attributes["name"] == null && selectNode.Attributes["value"] == null && selectNode.Attributes["contains"] == null && selectNode.Attributes["exists"] == null) { flag = true; } else { ConditionStatus conditionStatus2 = conditionStatus1.Clone(); conditionStatus2.AttributeAusNodeHinzufuegen(selectNode); flag = conditionStatus2.KannSchonSchliessen && conditionStatus2.Erfuellt(this._session); } if (flag) { bool enthaeltAusschliesslichNotfallAntwort1; string ausgabeDiesesTags = this.GetAusgabeDiesesTags(laengeBisherigeAntwort, selectNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs); if (enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = true; } return(ausgabeDiesesTags); } } } return(""); case "formal": StringBuilder stringBuilder1 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder1.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder1.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } char ch1 = ' '; StringBuilder stringBuilder2 = new StringBuilder(); foreach (char ch2 in stringBuilder1.ToString()) { if (ch1 == ' ') { stringBuilder2.Append(ch2.ToString().ToUpper()); } else { stringBuilder2.Append(ch2.ToString().ToLower()); } ch1 = ch2; } return(stringBuilder2.ToString()); case "gender": StringBuilder stringBuilder3 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder3.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder3.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } return(this._normalisierer.GeschlechtAustauschen(stringBuilder3.ToString())); case "get": if (node.Attributes["name"] != null) { return(StandardGlobaleEigenschaften.GetStandardConditionContent(node.Attributes["name"].Value) ?? this._session.UserEigenschaften.Lesen(node.Attributes["name"].Value)); } return(ResReader.Reader((CultureInfo)null).GetString("unbekannteEigenschaft")); case "input": int result1 = 1; if (node.Attributes["index"] != null) { string str = node.Attributes["index"].Value; if (!string.IsNullOrEmpty(str)) { if (!int.TryParse(str.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0], out result1)) { result1 = 1; } } } if (result1 < 0) { result1 = 1; } if (result1 > this._session.LetzteSchritte.Count - 1) { return(""); } string userEingabe = this._session.LetzteSchritte[this._session.LetzteSchritte.Count - result1].UserEingabe; if (userEingabe == "TARGET BOTSTART") { return(""); } return(userEingabe); case "li": StringBuilder stringBuilder4 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder4.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder4.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder4.ToString()); case "lowercase": StringBuilder stringBuilder5 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder5.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder5.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder5.ToString().ToLower()); case "person": StringBuilder stringBuilder6 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder6.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder6.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } return(this._normalisierer.PersonAustauschen(stringBuilder6.ToString())); case "person2": StringBuilder stringBuilder7 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder7.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder7.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } return(this._normalisierer.Person2Austauschen(stringBuilder7.ToString())); case "random": if (node.SelectNodes("li").Count == 0) { enthaeltAusschliesslichNotfallAntwort = true; return("NO LI-TAGS IN RANDOM-TAG"); } XmlNode node1 = this.WaehleZufaelligenNode(node.SelectNodes("li")); bool enthaeltAusschliesslichNotfallAntwort2; string ausgabeDiesesTags1 = this.GetAusgabeDiesesTags(laengeBisherigeAntwort, node1, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort2, vorherigeSRAIs); if (enthaeltAusschliesslichNotfallAntwort2) { enthaeltAusschliesslichNotfallAntwort = true; } return(ausgabeDiesesTags1); case "script": if (node.Attributes["language"] == null) { return(node.OuterXml); } string str1 = node.Attributes["language"].Value; if (!(str1 == "gaitoscript")) { if (str1 == "javascript") { ; } XmlNode xmlNode = node.Clone(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in xmlNode.ChildNodes) { if (childNode.Name == "get") { bool enthaeltAusschliesslichNotfallAntwort1; string ausgabeDiesesTags2 = this.GetAusgabeDiesesTags(laengeBisherigeAntwort, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } XmlText textNode = childNode.OwnerDocument.CreateTextNode(ausgabeDiesesTags2); xmlNode.InsertBefore((XmlNode)textNode, childNode); xmlNode.RemoveChild(childNode); } } return(xmlNode.OuterXml); } GaitoScriptInterpreter scriptInterpreter = new GaitoScriptInterpreter(this._session); scriptInterpreter.Execute(node.InnerText); if (scriptInterpreter.Fehler != null) { return(string.Format("GaitoScript-Error: {0}", (object)scriptInterpreter.Fehler)); } if (scriptInterpreter.Ausgabe == null) { return(""); } return(scriptInterpreter.Ausgabe); case "sentence": StringBuilder stringBuilder8 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder8.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder8.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } bool flag1 = true; StringBuilder stringBuilder9 = new StringBuilder(); foreach (char ch2 in stringBuilder8.ToString()) { if (flag1) { stringBuilder9.Append(ch2.ToString().ToUpper()); if (ch2 != ' ') { flag1 = false; } } else { stringBuilder9.Append(ch2); } } return(stringBuilder9.ToString()); case "set": StringBuilder stringBuilder10 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder10.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder10.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } if (node.Attributes["name"] != null) { string name = node.Attributes["name"].Value; if (name.Trim().ToLower() == "topic") { this._session.SetzeAktuellesThema(stringBuilder10.ToString()); } this._session.UserEigenschaften.Setzen(name, stringBuilder10.ToString()); } return(stringBuilder10.ToString()); case "srai": vorherigeSRAIs.Add((object)node); StringBuilder stringBuilder11 = new StringBuilder(); foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder11.Append(this.GetAusgabeDiesesTags(0L, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); } StringBuilder stringBuilder12 = new StringBuilder(); if (laengeBisherigeAntwort > 0L) { stringBuilder12.Append("|"); that = "EMPTYTHAT"; } AntwortSatz qualifizierteAntwort = this.GetQualifizierteAntwort_(stringBuilder11.ToString(), that, vorherigeSRAIs); if (qualifizierteAntwort == null) { enthaeltAusschliesslichNotfallAntwort = true; } else { stringBuilder12.Append(qualifizierteAntwort.Satz); enthaeltAusschliesslichNotfallAntwort = qualifizierteAntwort.IstNotfallAntwort; } return(stringBuilder12.ToString()); case "star": int result2 = 1; if (node.Attributes["index"] != null && !int.TryParse(node.Attributes["index"].Value, out result2)) { result2 = 1; } return(patternMatch.GetStarInhalt(result2)); case nameof(that): int result3 = 1; if (node.Attributes["index"] != null) { string str2 = node.Attributes["index"].Value; if (!string.IsNullOrEmpty(str2)) { if (!int.TryParse(str2.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries)[0], out result3)) { result3 = 1; } } } if (result3 < 0) { result3 = 1; } if (result3 == 1) { return(that); } if (result3 > this._session.LetzteSchritte.Count - 1) { return(""); } return(this._session.LetzteSchritte[this._session.LetzteSchritte.Count - result3].BotAusgabe); case "thatstar": int result4 = 1; if (node.Attributes["index"] != null && !int.TryParse(node.Attributes["index"].Value, out result4)) { result4 = 1; } return(thatMatch.GetStarInhalt(result4)); case "think": foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; this.GetAusgabeDiesesTags(laengeBisherigeAntwort, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs); } return(""); case "uppercase": StringBuilder stringBuilder13 = new StringBuilder(); enthaeltAusschliesslichNotfallAntwort = true; foreach (XmlNode childNode in node.ChildNodes) { bool enthaeltAusschliesslichNotfallAntwort1; stringBuilder13.Append(this.GetAusgabeDiesesTags(laengeBisherigeAntwort + (long)stringBuilder13.Length, childNode, patternMatch, thatMatch, that, out enthaeltAusschliesslichNotfallAntwort1, vorherigeSRAIs)); if (!enthaeltAusschliesslichNotfallAntwort1) { enthaeltAusschliesslichNotfallAntwort = false; } } return(stringBuilder13.ToString().ToUpper()); default: return(node.OuterXml); } }