2017-06-11 13 views
2

私はアンドロイドでalice 2 aiml chatbotを使用しています。私の必要性は、いくつかの計算の後にユーザーが回答を返すように特定の質問が出されたときに、特定のメソッドを呼び出すことができるようにすることです。 私は全く同じドメインでthis question posted earlierを追跡しましたが、aimlprocessorextensionの実装を理解することができませんでした。そして、電話をかけることや、ユーザーが特定のmsgに警告ボックスを表示するだけでは、何らかの模範的な実装が必然的に必要です。AIML processorextensionカスタムJavaメソッド呼び出し

助けてください。

+0

こんにちは..この問題は解決しましたか? – Jugi

+0

@Jugiはい。しかし私はそれを非常に原油的に解決しました。だから私がやったのは、ある機能を呼び出すために必要だったaimlの返信の前に#記号を追加することでした。 #が(splitメソッドを使用して)javaコードによって検出された場合、特定の関数がスイッチケースを使用して呼び出されました。私はまた、疑問を持って私のaimlファイルを表示することができます。 –

+0

ありがとうございます。私はAIMLProcessorExtensionを使ってこれに対する解決策を見つけました。私はポストで私の答えを共有します。同時に、あなたの実装を共有して、これをどのように解決したかを知ってください。 – Jugi

答えて

1

これは私がJava側から問題を解決するために行ったことです。 AIMLProcessorExtensionを実装するクラスを作成します。クラスは

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 ""; 
     } 
    } 
} 

、以下のようになります。そして、私のメインクラスで私は上記のアプローチを使用してメートルの実装を行っているようなもの、

AIMLProcessor.extension = new TestAIMLExtenstion(); 

を追加しました。

+0

これはaimlのためのドキュメントにあったが、何とか私の要求に合っていないように私はそれを実装することができませんでした。たぶんこれは良いです。共有ありがとう! +1 –

関連する問題