要想自定义标签,得先清楚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 "我在测试自定义标签,哈哈。"; } }
原文:http://blog.csdn.net/zhang_hui_cs/article/details/22687473