Tags 如何使用AIML<;oob>;标签

Tags 如何使用AIML<;oob>;标签,tags,aiml,Tags,Aiml,我是新使用标签的,我正在使用潘多拉聊天机器人。 我使用了许多aiml标签并完成了我的工作。请指导如何在aiml中使用oob标记,以便在android编程中实现其响应 如果有任何不清楚的地方,请随时提问。 oob标记正在响应,但未打开搜索或拨号呼叫 private static String recursEval(节点节点,解析状态){ private static String recursEval(Node node, ParseState ps) { LOG.info("AIMLP

我是新使用
标签的,我正在使用潘多拉聊天机器人。 我使用了许多aiml标签并完成了我的工作。请指导如何在aiml中使用oob标记,以便在android编程中实现其响应

如果有任何不清楚的地方,请随时提问。
oob标记正在响应,但未打开搜索或拨号呼叫

private static String recursEval(节点节点,解析状态){
 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 "";
    }
}
LOG.info(“AIMLProcessor.recursEval(节点:“+node+”,ps:“+ps+”)); 试一试{ LOG.info(“在AIMLProcessor.recursEval()中,节点字符串:”+DomUtils.nodeToString(节点)); 字符串nodeName=node.getNodeName(); LOG.info(“在AIMLProcessor.recursEval()中,节点名:“+nodeName”); LOG.info(“在AIMLProcessor.recursEval()中,node.getNodeValue():”+node.getNodeValue()); if(nodeName.equals(“#text”))返回node.getNodeValue(); else if(nodeName.equals(“#注释”)){ LOG.info(“在AIMLProcessor.recursEval()中,comment=“+node.getTextContent()); 返回“”; } else if(nodeName.equals(“模板”)) 返回evalTagContent(node,ps,null); else if(nodeName.equals(“random”)) 返回随机(节点,ps); else if(nodeName.equals(“条件”)) 返回循环条件(节点,ps); else if(nodeName.equals(“srai”)) 返回srai(节点,ps); else if(nodeName.equals(“sr”)) 返回响应(ps.starBindings.inputStars.star(0)、ps.that、ps.topic、ps.chatSession、sraiCount); else if(nodeName.equals(“sraix”)) 返回sraix(节点,ps); else if(nodeName.equals(“set”)) 返回集(节点,ps); else if(nodeName.equals(“get”)) 返回get(节点,ps); else if(nodeName.equals(“map”)//AIML2.0——另请参见模式中的 返回图(节点,ps); else if(nodeName.equals(“bot”)) 返回bot(节点,ps); else if(nodeName.equals(“id”)) 返回id(节点,ps); else if(nodeName.equals(“size”)) 返回大小(节点,ps); else if(nodeName.equals(“词汇”)//aiml2.0 返回词汇表(node,ps); else if(nodeName.equals(“程序”)) 返回程序(节点,ps); else if(nodeName.equals(“日期”)) 返回日期(节点,ps); else if(nodeName.equals(“interval”)) 返回间隔(节点,ps); //else if(nodeName.equals(“gossip”)//从AIML2.0中删除 //返回流言(节点,ps); else if(nodeName.equals(“think”)) 返回思考(节点,ps); else if(nodeName.equals(“系统”)) 返回系统(节点,ps); else if(nodeName.equals(“explode”)) 返回爆炸(节点,ps); else if(nodeName.equals(“normalize”)) 返回规范化(节点,ps); else if(nodeName.equals(“反规范化”)) 返回非规范化(节点,ps); else if(nodeName.equals(“大写”)) 返回大写字母(node,ps); else if(nodeName.equals(“小写”)) 返回小写(node,ps); else if(nodeName.equals(“正式”)) 返回正式(节点,ps); else if(nodeName.equals(“句子”)) 返回句(node,ps); else if(nodeName.equals(“person”)) 返回人(节点,ps); else if(nodeName.equals(“person2”)) 返回人员2(节点,ps); else if(nodeName.equals(“性别”)) 返回性别(节点,ps); else if(nodeName.equals(“星”)) 返回inputStar(节点,ps); else如果(nodeName.equals(“thatstar”)) 返回该星(节点,ps); else if(nodeName.equals(“topicstar”)) 返回topicStar(节点,ps); else如果(nodeName.equals(“that”)) 返回(节点,ps); else if(nodeName.equals(“输入”)) 返回输入(节点,ps); else if(nodeName.equals(“请求”)) 返回请求(节点,ps); else if(nodeName.equals(“响应”)) 返回响应(节点,ps); else if(nodeName.equals(“learn”)| | nodeName.equals(“learnf”)) 返回学习(节点,ps); else if(nodeName.equals(“addtriple”)) 返回addTriple(节点,ps); else if(nodeName.equals(“deletetetree”)) 返回deletetetree(节点,ps); else if(nodeName.equals(“javascript”)) 返回javascript(节点,ps); else if(nodeName.equals(“选择”)) 返回选择(节点,ps); else if(nodeName.equals(“uniq”)) 返回uniq(节点,ps); else if(nodeName.equals(“first”)) 首先返回(节点,ps); else if(nodeName.equals(“rest”)) 返回rest(node,ps); else if(nodeName.equals(“resetlearnf”)) 返回resetlearnf(节点,ps); else if(nodeName.equals(“resetlearn”)) 返回resetlearn(节点,ps); else if(extension!=null&&extension.extensionTagSet().contains(nodeName))返回extension.recursEval(node,ps); else返回(genericXML(node,ps)); }捕获(例外情况除外){ 例如printStackTrace(); 返回“”; } }
在AIMLProcessor类的程序ab中,您会发现这样一个方法,您必须添加oob标记的实现。这是一种根据在响应中找到的标记来解析aiml文件中的响应的方法,它调用必要的函数