Ai Dreams Forum

Member's Experiments & Projects => AI Programming => Topic started by: gporceng18 on March 19, 2018, 12:21:04 pm

Title: Remembering Chatbot user in RS
Post by: gporceng18 on March 19, 2018, 12:21:04 pm
First time posting. While using rivescript and Javascript is there anyway to save developed variables from a conversation into an object for later use? My intent is to be able to call on the object later in the chat or at least be able to use the rivescript variables in javascript. How can I go about this, very much a noob at this but am fascinated none the less.
Title: Re: Remembering Chatbot user in RS
Post by: Art on March 19, 2018, 06:31:14 pm
Welcome to AiDreams!

There was a fellow who, several years ago, developed some methods to allow his RiveScript bot to be able to SAVE information and later RECALL it as needed. In other words, he gave it a usable memory. I believe he also had other nice features but it was a bit involved to set up. Unfortunately, when I tried his bookmarked link I'd saved it was broken.

There may be some other users of RiveScript, other than myself, who are doing something similar to this or perhaps Noah Petherbridge might weigh in on this if you inquired at the RiveScript site or thereabouts.

Of all the things I've done with RS,, I'd really like for it to be able to save parts of our conversations for later use.

This would also help keep the bot on target with regard to context and topic flow. Hopefully, someone will chime in.
Title: Re: Remembering Chatbot user in RS
Post by: kirsle on January 16, 2022, 12:49:49 am
RiveScript creator here, this is an old thread but in case anyone finds it and is curious:

By default RiveScript keeps user variables in running memory but you can use the getUservars and setUservars functions to export and import them, so you can save a copy (as JSON data) in between runs of your bot. RiveScript's original niche is in being a long-running process with a bot loaded in memory able to remember you from one reply to the next. Some general strategies:

* Your program should initialize RiveScript once (loadDirectory, etc.) and enter a "main loop" of awaiting messages to reply to, and it'll keep your variables for the duration of the running session. e.g., if embedded on a web page using rivescript.js the program keeps running while the page is open, until the user reloads or leaves the site, and it will remember them fine during this time.
* For "server side use" if at all possible, still initialize RiveScript once and use that bot instance to handle user requests.

rivescript.js has several examples: https://github.com/aichaos/rivescript-js/tree/master/eg look at the persistence and json-server examples in particular.

In more recent years there are alternative user session adapters for some implementations, so you can directly persist variables into a Redis cache making this a whole lot more robust, see the "redis" example at the above link.
Title: Re: Remembering Chatbot user in RS
Post by: Zero on January 16, 2022, 11:41:03 am
Thanks for the input.

I think I would insert an optional callback right in the setVariable() function of rivescript.js, and make it available in the public API through a setPersistenceCallback() function, so I (the user) can inject my own persistence callback at initialization.

Welcome to AiDreams :)