Как я могу получить доступ к предикатам 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;
}
Другие вопросы по тегам