Currently ProgramAB has 3 bots (Alice, Dr. Who and Ency)
Ency was a bit of a mess. It needed its aiml in an aiml directory. All responses had "Briefly, " prepended to them ... (100K x Briefly)  a bunch of useless info ... if Briefly is desired in the response it should be expressed in an ask/response aiml not in the data.  Same goes for * means ..., but can only clean so much...
I supplied a _questions.aiml to because it could not be asked anything.

Now it seems fairly useable ...

Kwatters and I have been working on improving ProgramAB.  One thing which needed to be resolved is the difference between Properties and Manifest information.  Properties should always be tied to Aiml tags.  Meaning, if there is a property is should be defined in some aiml tag to set or get.  Manifest information is outside of that, and exists before the Aiml is loaded.  It has information about the bot in the form of a description, image, and locale.  We are now looking into designs of how best to save changed aiml. 

 

As a user experience:

  • I start the ProgramAB for the first time
  • It comes with a set of "pure" aiml files - the files are loaded from "immutable" resource directory
  • When I use the UI and edit/save the file its saved in the data directory

As I write this out, its "pretty much" the same as doing a full copy, its only doing it when the user modifies stuff.
This is the same strategy as the Arduino IDE and their "examples"

(I thought trying to get this straight deserved more than just shouts)

If something like predicates is meant as runtime variables, it shouldn't probably be in the resource (immutable) directory.

BTW - I just named myself GroG, but the robot did a FAIL .. why?

 

GroG

3 years 4 months ago

So there is a chunk of python missing for my name .. and that's why I'm being called "friend" ?
Vs "my favorite color is turquoise" which is worky....

Is the python really needed ? right now it appears to be borked ....

hairygael

3 years 4 months ago

"BTW - I just named myself GroG, but the robot did a FAIL .. why?"

because currently in InMoov2.java, it only does i01_chatBot.startSession(u"<star name="name"/>") while it should also do i01_chatBot.setPredicate(u"name","<star/>), i01_chatBot.setPredicate(u"firstname","<star/>"), i01_chatBot.setPredicate(u"default","lastUsername","<star/>")

With InMoov1, this wasn't a pb because all the chatbot startup was in the inmoov python files and was getting setup during the init sequence.

So currently Grog name has been probably set in Friend.predicates.txt instead of Grog.predicates.txt

To temporarly remedy to this, i did a fix in here but having "i01" stuff in the aiml is probably not very good:

https://github.com/MyRobotLab/InMoov2/blob/master/resource/InMoov2/chatbot/bots/en-US/aiml/client_profile.aiml#L619

Ah... thanks Gael,

So it switches sessions, which makes sense - because I've identified myself as GroG
and a switched session means switch variables/predicates
when it switches sessions (without python or inmoov help)  it gives me a completely new but blank session
where ... if I just told it what session I'm identified it "should

  •  see if it can load the pre-existing predicates for that session
  • if the session does not exists - create the new predicates file and auto-add the username

Imho - this is a bug in ProgramAB and should be fixed - it shouldn't require InMoov nor Python to create a new session or reload a pre-existing one.

Currently ProgramAB never gets it correct - ie you can't even tell it twice to remember. :(

Exactly, I don't know if initially programAB could switch of sessions.

But that's a nice thing now to have, and sure it should be within programAB and not in InMoov2.java or python.

Note that when setting your name, the user is normally abble to give his first, middle and last name. But only the firstname and lastname can be used as "name". see the aiml pattern "CALL ME * * * ".

https://github.com/MyRobotLab/InMoov2/blob/master/resource/InMoov2/chatbot/bots/en-US/aiml/client_profile.aiml#L643

EDIT: I noticed that you are not using the latest InMoov2 en-US.

Cool Gael,
but that requires python outside of programab to function correctly.
I believe it should be possible for ProgramAB to provide this functionality without the python, if it can't...
    it should be fixed.

hairygael

3 years 4 months ago

Yeah I agree it should be in programAB.

This was a sort of patch I did recently because I had enough of this error. This error was not occurring before the refactor on programAB that was done last year.

It seems the savePredicates() happens too late for the new session, and that would be the reason, it save the predicates on the previous session predicates.