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 "我在測試自定義標籤,哈哈。";
}
}