Alice标签解析过程
要想自定义标签,得先清楚Alice标签原理,我不想说的太细,大致说一下:
可能你们注意到AIML文件每一个标签对应着在bitoflife.chatterbean.aiml包一个类。
在AIMLHandler类中的buildClassName函数,将标签名映射为bitoflife.chatterbean.aiml下的类。
privateStringbuildClassName(String tag) {
return"bitoflife.chatterbean.aiml."
+tag.substring(0, 1).toUpperCase()
+tag.substring(1).toLowerCase();
}
每一个标签解析类继承TemplateElement类,每一个TemplateElement类的核心函数是process函数,所有的工作就在process函数中完成,proces函数的返回值会直接返回给用户,作为用户question的answer。
例如bitoflife.chatterbean.aiml.Date类中的process函数,返回值就是日期格式。
实现自定义标签个关键就是继承TemplateElement类,实现process函数。
实现自定义标签解析类
下面代码实现了自定标签cs的解析类
package bitoflife.chatterbean.aiml;
import org.xml.sax.Attributes;
import bitoflife.chatterbean.Match;
public class Cs extends TemplateElement {
public Cs() {
}
public Cs(Attributes attributes) {
}
public int hashCode() {
return 131072;
}
public String process(Match match) {
return "我在测试自定义标签,哈哈。";
}
}