2015-11-30 60 views
0

我是新使用<oob>標記,我正在使用pandora-bot進行聊天。 我使用了許多aiml標籤並完成了我的工作。請指導如何在aiml中使用oob標籤,以便其響應可以在android編程中實現。如何使用AIML <oob>標記

請隨時提問,如果有任何事情不清楚。
oob標記正在響應,但未打開搜索或撥打電話。

回答

0
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文件的響應的方法,它稱爲必要的功能