0
我是新使用<oob>
標記,我正在使用pandora-bot進行聊天。 我使用了許多aiml標籤並完成了我的工作。請指導如何在aiml中使用oob標籤,以便其響應可以在android編程中實現。如何使用AIML <oob>標記
請隨時提問,如果有任何事情不清楚。
oob標記正在響應,但未打開搜索或撥打電話。
我是新使用<oob>
標記,我正在使用pandora-bot進行聊天。 我使用了許多aiml標籤並完成了我的工作。請指導如何在aiml中使用oob標籤,以便其響應可以在android編程中實現。如何使用AIML <oob>標記
請隨時提問,如果有任何事情不清楚。
oob標記正在響應,但未打開搜索或撥打電話。
private static String recursEval(Node node, ParseState ps) {
LOG.info("AIMLProcessor.recursEval(node: " + node + ", ps: " + ps + ")");
try {
LOG.info("in AIMLProcessor.recursEval(), node string: " + DomUtils.nodeToString(node));
String nodeName = node.getNodeName();
LOG.info("in AIMLProcessor.recursEval(), nodeName: " + nodeName);
LOG.info("in AIMLProcessor.recursEval(), node.getNodeValue(): " + node.getNodeValue());
if (nodeName.equals("#text")) return node.getNodeValue();
else if (nodeName.equals("#comment")) {
LOG.info("in AIMLProcessor.recursEval(), comment = "+node.getTextContent());
return "";
}
else if (nodeName.equals("template"))
return evalTagContent(node, ps, null);
else if (nodeName.equals("random"))
return random(node, ps);
else if (nodeName.equals("condition"))
return loopCondition(node, ps);
else if (nodeName.equals("srai"))
return srai(node, ps);
else if (nodeName.equals("sr"))
return respond(ps.starBindings.inputStars.star(0), ps.that, ps.topic, ps.chatSession, sraiCount);
else if (nodeName.equals("sraix"))
return sraix(node, ps);
else if (nodeName.equals("set"))
return set(node, ps);
else if (nodeName.equals("get"))
return get(node, ps);
else if (nodeName.equals("map")) // AIML 2.0 -- see also <set> in pattern
return map(node, ps);
else if (nodeName.equals("bot"))
return bot(node, ps);
else if (nodeName.equals("id"))
return id(node, ps);
else if (nodeName.equals("size"))
return size(node, ps);
else if (nodeName.equals("vocabulary")) // AIML 2.0
return vocabulary(node, ps);
else if (nodeName.equals("program"))
return program(node, ps);
else if (nodeName.equals("date"))
return date(node, ps);
else if (nodeName.equals("interval"))
return interval(node, ps);
//else if (nodeName.equals("gossip")) // removed from AIML 2.0
// return gossip(node, ps);
else if (nodeName.equals("think"))
return think(node, ps);
else if (nodeName.equals("system"))
return system(node, ps);
else if (nodeName.equals("explode"))
return explode(node, ps);
else if (nodeName.equals("normalize"))
return normalize(node, ps);
else if (nodeName.equals("denormalize"))
return denormalize(node, ps);
else if (nodeName.equals("uppercase"))
return uppercase(node, ps);
else if (nodeName.equals("lowercase"))
return lowercase(node, ps);
else if (nodeName.equals("formal"))
return formal(node, ps);
else if (nodeName.equals("sentence"))
return sentence(node, ps);
else if (nodeName.equals("person"))
return person(node, ps);
else if (nodeName.equals("person2"))
return person2(node, ps);
else if (nodeName.equals("gender"))
return gender(node, ps);
else if (nodeName.equals("star"))
return inputStar(node, ps);
else if (nodeName.equals("thatstar"))
return thatStar(node, ps);
else if (nodeName.equals("topicstar"))
return topicStar(node, ps);
else if (nodeName.equals("that"))
return that(node, ps);
else if (nodeName.equals("input"))
return input(node, ps);
else if (nodeName.equals("request"))
return request(node, ps);
else if (nodeName.equals("response"))
return response(node, ps);
else if (nodeName.equals("learn") || nodeName.equals("learnf"))
return learn(node, ps);
else if (nodeName.equals("addtriple"))
return addTriple(node, ps);
else if (nodeName.equals("deletetriple"))
return deleteTriple(node, ps);
else if (nodeName.equals("javascript"))
return javascript(node, ps);
else if (nodeName.equals("select"))
return select(node, ps);
else if (nodeName.equals("uniq"))
return uniq(node, ps);
else if (nodeName.equals("first"))
return first(node, ps);
else if (nodeName.equals("rest"))
return rest(node, ps);
else if (nodeName.equals("resetlearnf"))
return resetlearnf(node, ps);
else if (nodeName.equals("resetlearn"))
return resetlearn(node, ps);
else if (extension != null && extension.extensionTagSet().contains(nodeName)) return extension.recursEval(node, ps) ;
else return (genericXML(node, ps));
} catch (Exception ex) {
ex.printStackTrace();
return "";
}
}
你會發現這樣一個程序中的AB類AIMLProcessor那裏你必須添加OOB標籤的實現方法。這是根據在響應中發現的標籤解析來自aiml文件的響應的方法,它稱爲必要的功能