protected override Unifiable ProcessChangeU() { if (CheckNode("state")) { try { var varMSM = botActionMSM; string payload = templateNodeInnerText.ToValue(query); string payload3 = InnerXmlText(templateNode); string prevLastDefMachine = varMSM.lastDefMachine; string state = GetAttribValue("name", null); string machine = GetAttribValue("machine", prevLastDefMachine); string init_prob_str = GetAttribValue("init_prob", "0.1"); string self_prob_str = GetAttribValue("self_prob", "0.1"); double init_prob = double.Parse(init_prob_str); double self_prob = double.Parse(self_prob_str); varMSM.lastDefState = state; MachineSideEffect(() => { varMSM.lastDefState = prevLastDefMachine; varMSM.defState(machine, state, init_prob, self_prob); string responseCode = "<aiml graph=\"msm\"> " + payload3 + " </aiml>"; AddSideEffect("Add AIML " + responseCode, () => TargetBot.AddAiml(responseCode)); }); } catch (Exception e) { writeToLogWarn("MSMWARN: " + e); } } return(Unifiable.Empty); }
protected override Unifiable ProcessChangeU() { if (CheckNode("responsetopic")) { try { var varMSM = botActionMSM; string payload = templateNodeInnerText.ToValue(query); string payload2 = Recurse(); string payload3 = InnerXmlText(templateNode); string machine = GetAttribValue("machine", varMSM.lastDefMachine); string myState = GetAttribValue("state", varMSM.lastDefState); string myTopic = GetAttribValue("topic", null); string prob_str = GetAttribValue("prob", "0.1"); double prob = double.Parse(prob_str); payload= payload.Replace("rcategory", "category"); payload= payload.Replace("rpattern", "pattern"); string responseCode = "<aiml graph=\"msm\"> <topic name=\"" + myTopic + "\"> " + payload + " </topic> </aiml>"; AltBot.writeDebugLine("MSM: response_topic ResponseCode = {0}", responseCode); MachineSideEffect(() => varMSM.addResponse(machine, myState, myTopic, prob)); // TODO: define machine-state -> topic AddSideEffect("Add AIML " + responseCode, () => TargetBot.AddAiml(responseCode)); } catch (Exception e) { writeToLogWarn("MSMWARN: " + e); } } return Unifiable.Empty; }