2017-02-22 31 views
0

Я создаю chatbot в Node.js и использую aiml-high. Я пытаюсь получить доступ к предикатам AIML, чтобы я мог хранить их в переменных, которые я буду использовать позже. Я знаю, что в Python есть способ получить предикаты так:Как я могу получить доступ к предикатам AIML при использовании aiml-high в Node.js

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> 

Если пользователь говорит, язык, который в данном случае является «французский», хранится здесь «Вы говорите по-французски Do» соответственно.

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

... замена <get name="language"/> с языком, что пользователь имел вход. Я хотел бы получить доступ к этому языковому предикату в своем JavaScript, чтобы впоследствии использовать его. Итак, мне было интересно, если кто-нибудь построил чатбот в Node.js и будет иметь представление о том, как сохранить эти предикаты.

ответ

0

Итак, после публикации этого вопроса я продолжал просматривать код для пакета с большим количеством узлов. Я выяснил, где хранятся пользовательские переменные, и добавлено два новых метода для aiml-high.js в пакете aiml-high node.

Первый метод, который я добавил один, который возвращает все сохраненные переменные:

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

Следующий метод позволяет выделить какую сохраненную переменную, которую вы хотите возвращается вместо всего объекта.

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

Таким образом, даже если эти два метода просты и большинство разработчиков будут иметь возможность делать то, что я сделал, просто глядя через сам AIML-высокого код, я надеюсь, что кто-то ищет подобный ответ в будущем приходит через этот ответ, поэтому им не нужно просматривать сам код.

Кроме того, я добавил третий метод для получения атрибутов бота.

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