pattern: (remember) my name is * template: Please to meet you {speaker.name = star.toString(); star} what is my name template: Your name is {speaker.name}. condition: speaker.name != null keywords: name required: my name what is my name I do not know your name. Have we meet before? condition: speaker.name == null keywords: name required: my name pattern: (remember) my age is * template: Okay, I will remember you are {speaker.age = star.toString(); star} years old. how old am I template: redirect("what is my age") required: old what is my age template: Your age is {speaker.age}. condition: speaker.age != null keywords: age required: my age what is my age template: I do not know your age. If I had to guess I would say {random(21, 42, 18, 34)}. condition: speaker.age == null keywords: age required: my age pattern: (remember) my [gender sex] is * template: Okay, I will remember your gender is {speaker.gender = star.toString(); star}. what is my gender template: Your gender is {speaker.gender}. condition: speaker.gender != null keywords: gender sex required: my what is my gender template: I'm not sure. condition: speaker.gender == null keywords: gender sex required: my pattern: (remember) my * is * template: Okay, I will remember your {star[0]} is {speaker.set(star[0].toSymbol(), star[1].toString()); star[1]}. pattern: [when what who] is my * template: Your {star} is {speaker.get(star.toSymbol())}. condition: speaker.get(star.toSymbol()) != null pattern: what is my * template: I'm not sure. condition: speaker.get(star.toSymbol()) == null pattern: I am * template: Okay, I will remember that you are {if (star.toNumber() == null) { speaker.set(#is, star.toString()) } else { speaker.age = star.toString()}; star}. pattern: what am I template: Your are {speaker.get(#is)}. condition: speaker.get(#is) != null required: am I pattern: what am I template: I'm not sure what you are. condition: speaker.get(#is) == null required: am I