2017-02-22 4 views
0

Node.js에 대화방을 만들고 aiml-high를 사용하고 있습니다. AIML의 술어를 액세스하려고하므로 나중에 사용할 변수에 저장할 수 있습니다. 파이썬에서는 다음과 같은 술어를 구할 수있는 방법이 있다는 것을 알고 있습니다.Node.js에서 aiml-high를 사용하는 동안 AIML 선언문에 액세스하려면 어떻게해야합니까?

name = kernel.getPredicate("name", sessionId) 

여기 내 질문이 있습니다. 아래는 AIML 파일의 카테고리입니다.

<set name="language:>*</set> 

지금, 언어 기억하고 응답 할 수 있습니다 :

<category> 
    <pattern>DO YOU SPEAK <set name="language">*</set></pattern> 
    <condition name="language"> 
     <li value="english">Yes. I do speak <get name="language"/>.</li> 
     <li value="English">Yes. I do speak <get name="language"/>.</li> 
     <li>Sorry. I don't speak <get name="language"/>. Maybe one day I will learn though.</li> 
    </condition> 
    </category> 

사용자가 말한다면

,이 경우에 "프랑스어"입니다 언어, 여기에 저장됩니다 "프랑스어 줄 아세요" 따라서.

<li>Sorry. I don't speak <get name="language"/>. Maybe one day I will learn though.</li> 

... <get name="language"/>을 사용자가 입력 한 언어로 바꿉니다. JavaScript에서 해당 언어 술어에 액세스하여 나중에 사용할 수 있습니다. 그래서 누군가 Node.js에 chatbot을 빌드했는지 궁금해서이 술어를 저장하는 방법에 대한 통찰력을 얻었습니다.

답변

0

그래서이 질문을 게시 한 이후로 계속 aiml-high 노드 패키지의 코드를 살펴 보았습니다. 나는 사용자 생성 변수가 어디에 저장되어 있는지를 발견하고 aiml-high 노드 패키지의 aiml-high.js에 두 개의 새로운 메소드를 추가했다.

this.getStoredVariables = function() { 
    return storedVariableValues; 
} 

이 다음 방법으로 당신이 대신 전체 개체의 반환 할 저장된 변수를 지목 할 수 있습니다 :

내가 추가 한 첫 번째 방법은 저장된 모든 변수를 반환하는 것입니다.

this.getSpecificStoredVariable = function(v) { 
    return storedVariableValues[v]; 
} 

그래서,이 두 가지 방법이 간단하고 대부분의 개발자는 단지 AIML 높은 코드 자체를 통해보고 내가 한 일을 할 수있을 것입니다하더라도, 나는 누군가가 미래에 비슷한 대답을 찾고 있기를 바랍니다 이 답변을 통해 코드 자체를 살펴볼 필요가 없습니다.

또한 제 3의 방법을 추가하여 봇의 속성을 가져 왔습니다.

this.getAttributes = function() { 
    return botAttributes; 
}