Как я могу получить доступ к предикатам AIML при использовании целевого уровня в Node.js
Я создаю чат-бота в Node.js и использую прицел. Я пытаюсь получить доступ к предикатам AIML, чтобы сохранить их в переменных, которые я буду использовать позже. Я знаю, что в Python есть способ получить предикаты примерно так:
name = kernel.getPredicate("name", sessionId)
Итак, вот мой вопрос более подробно. Ниже приведена категория из моего файла AIML.
<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>
Если пользователь говорит "Вы говорите по-французски", язык, который в данном случае является "французским", хранится здесь:
<set name="language:>*</set>
Теперь язык запоминается и может реагировать соответственно.
<li>Sorry. I don't speak <get name="language"/>. Maybe one day I will learn though.</li>
... заменить <get name="language"/>
с языком, который был введен пользователем. Я хотел бы получить доступ к этому языковому предикату в моем JavaScript, чтобы я мог использовать его позже. Итак, мне было интересно, если бы кто-нибудь создал чат-бота в Node.js и хотел бы узнать, как мне сохранить эти предикаты.
1 ответ
Итак, после публикации этого вопроса я продолжил просматривать код пакета узла aiml-high. Я выяснил, где хранятся переменные, сгенерированные пользователем, и добавил два новых метода в aiml-high.js в пакете aiml-high.
Первый метод, который я добавил, это тот, который возвращает все сохраненные переменные:
this.getStoredVariables = function() {
return storedVariableValues;
}
Этот следующий метод позволяет вам выбрать, какую хранимую переменную вы хотите вернуть вместо всего объекта.
this.getSpecificStoredVariable = function(v) {
return storedVariableValues[v];
}
Итак, хотя эти два метода просты, и большинство разработчиков смогут сделать то, что я сделал, просто просматривая сам код высокого уровня, я надеюсь, что кто-то, ищущий аналогичный ответ в будущем, столкнется с этим ответом, поэтому они не не нужно просматривать код самостоятельно.
Также я добавил третий способ получения атрибутов бота.
this.getAttributes = function() {
return botAttributes;
}