WIP.
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
index 5655426..b990851 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCConversation.java
@@ -18,6 +18,7 @@
package org.apache.nlpcraft.model;
import java.util.List;
+import java.util.Map;
import java.util.function.Predicate;
/**
@@ -83,4 +84,16 @@
* @param filter Dialog flow filter based on IDs of previously matched intents.
*/
void clearDialog(Predicate<String/* Intent ID. */> filter);
+
+ /**
+ * Gets modifiable user data container that can be to store user data in the conversation.
+ * Note that this data will expire the same as other elements in the conversation (i.e. tokens and
+ * previously matched intents).
+ * <p>
+ * Note that you should obtain the user data container on every intent callback invocation to make
+ * sure that expiration policy takes an effect. Do not cache the returned object elsewhere.
+ *
+ * @return Mutable user data container. The returned map is safe for concurrent modifications.
+ */
+ Map<String, Object> getUserData();
}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversation.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversation.scala
index 1f8f51b..21c17a7 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversation.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversation.scala
@@ -278,4 +278,9 @@
new util.ArrayList[NCToken](toks.asJava)
}
}
+
+ /**
+ *
+ */
+ def getUserData: util.Map[String, Object] = data
}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
index e40e5ac..3e6ff92 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala
@@ -563,6 +563,7 @@
override def getDialogFlow: util.List[String] = NCDialogFlowManager.getDialogFlow(usrId, mdlId, span).asJava
override def clearStm(filter: Predicate[NCToken]): Unit = conv.clearTokens(filter)
override def clearDialog(filter: Predicate[String]): Unit = NCDialogFlowManager.clear(usrId, mdlId, span)
+ override def getUserData: util.Map[String, Object] = conv.getUserData
}
override def isOwnerOf(tok: NCToken): Boolean = allVars.contains(tok)