C'est ce que j'ai fait pour résoudre le problème de côté java. Créez une classe qui implémente AIMLProcessorExtension. La classe ressemblera à quelque chose comme ci-dessous,
public class TestAIMLExtenstion implements AIMLProcessorExtension
{
public Set<String> extensionTagNames = Utilities.stringSet("contactid","multipleids","displayname","dialnumber","emailaddress","contactbirthday","addinfo");
public Set <String> extensionTagSet() {
return extensionTagNames;
}
public String recursEval(Node node, ParseState ps) {
try {
String nodeName = node.getNodeName();
if (nodeName.equals("contactid"))
return contactId(node, ps);
else if (nodeName.equals("multipleids"))
return multipleIds(node, ps);
else if (nodeName.equals("dialnumber"))
return dialNumber(node, ps);
else if (nodeName.equals("addinfo"))
return newContact(node, ps);
else if (nodeName.equals("displayname"))
return displayName(node, ps);
else if (nodeName.equals("emailaddress"))
return emailAddress(node, ps);
else if (nodeName.equals("contactbirthday"))
return contactBirthday(node, ps) ;
else return (AIMLProcessor.genericXML(node, ps));
} catch (Exception ex) {
ex.printStackTrace();
return "";
}
}
}
Et dans ma classe principale j'ai ajouté quelque chose comme,
AIMLProcessor.extension = new TestAIMLExtenstion();
Je l'ai fait la mise en œuvre de m en utilisant l'approche ci-dessus.
salut .. avez-vous résolu ce problème? – Jugi
@Jugi Oui. mais je l'ai résolu d'une manière très grossière. Donc ce que j'ai fait, c'était ajouter un symbole # devant les réponses dans aiml pour lequel je devais invoquer une certaine fonction. Si le # a été détecté par le code java (en utilisant la méthode split), la fonction particulière a été invoquée à l'aide d'un commutateur. Je peux aussi montrer mes fichiers aiml en cas de doute. –
merci. J'ai trouvé une solution pour cela en utilisant AIMLProcessorExtension. Je vais partager ma réponse dans le post. En attendant, partagez votre implémentation pour savoir comment vous avez résolu cela. – Jugi