This is an automated email from the ASF dual-hosted git repository.

aradzinski pushed a commit to branch NLPCRAFT-206
in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git


The following commit(s) were added to refs/heads/NLPCRAFT-206 by this push:
     new cd92760  WIP.
cd92760 is described below

commit cd9276000a4b668982d5ea52ab45221f52b675b6
Author: Aaron Radzinski <[email protected]>
AuthorDate: Fri Mar 5 21:44:14 2021 -0800

    WIP.
---
 .../apache/nlpcraft/common/debug/NCLogHolder.scala | 19 ++----
 .../scala/org/apache/nlpcraft/common/package.scala | 11 +++-
 .../org/apache/nlpcraft/common/util/NCUtils.scala  | 12 ++--
 .../apache/nlpcraft/model/NCDialogFlowItem.java    |  6 +-
 .../scala/org/apache/nlpcraft/model/NCRequest.java |  4 +-
 .../intent/impl/NCIntentDslBaselCompiler.scala     | 40 ++++++------
 .../model/intent/impl/NCIntentDslCompiler.scala    |  6 +-
 .../model/intent/impl/NCIntentSolverEngine.scala   | 74 +++++++++-------------
 .../nlpcraft/model/intent/utils/NCDslIntent.scala  |  4 +-
 .../nlpcraft/model/intent/utils/NCDslTerm.scala    |  2 +-
 .../model/intent/utils/NCDslTermRetVal.scala       |  2 +-
 .../mgrs/dialogflow/NCDialogFlowManager.scala      |  2 +-
 .../probe/mgrs/nlp/impl/NCRequestImpl.scala        |  7 +-
 13 files changed, 91 insertions(+), 98 deletions(-)

diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
index e57fecf..1131c3a 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/debug/NCLogHolder.scala
@@ -20,14 +20,13 @@ package org.apache.nlpcraft.common.debug
 import org.apache.nlpcraft.common._
 import java.util
 import com.google.gson.Gson
-import org.apache.nlpcraft.common.util._
 import org.apache.nlpcraft.model._
 
 import scala.collection.JavaConverters._
 
-/*
- * NOTE: these classes are specifically designed for JSON marshalling.
- */
+//
+// NOTE: these classes are specifically designed for JSON marshalling.
+//
 
 case class NCLogGroupToken(token: NCToken, used: Boolean, conversation: 
Boolean)
 
@@ -183,17 +182,7 @@ class NCLogHolder extends Serializable {
             company = compJs,
             remoteAddress = req.getRemoteAddress.orElse(null),
             clientAgent = req.getClientAgent.orElse(null),
-            data = if (req.getJsonData.isPresent) {
-                val str = req.getJsonData.get
-
-                try
-                    NCUtils.jsonToObject(str)
-                catch {
-                    case _: Exception ⇒ str
-                }
-            }
-            else
-                null
+            data = req.getRequestData
         )
         
         this.queryContext = ContextJson(
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/package.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/package.scala
index 8a54bca..d7701a7 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/package.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/package.scala
@@ -23,6 +23,7 @@ import org.apache.nlpcraft.common.ansi.NCAnsi._
 import org.apache.nlpcraft.common.util._
 
 import scala.language.implicitConversions
+import scala.collection.JavaConverters._
 
 /**
   * Package scope.
@@ -30,7 +31,7 @@ import scala.language.implicitConversions
 package object common {
     // Type aliases for `org.apache.nlpcraft`
     type NCE = NCException
-    type ScalaMeta = Map[String, AnyRef]
+    type ScalaMeta = Map[String, Object]
     type JavaMeta = java.util.Map[String, Object]
     final val U = NCUtils
     
@@ -210,4 +211,12 @@ package object common {
       * @return Callable object.
       */
     implicit def toCallable[R](f: () ⇒ R): Callable[R] = () ⇒ f()
+
+    /**
+     *
+     * @param m
+     * @return
+     */
+    implicit def upliftMap(m: java.util.Map[String, Object]): Map[String, 
Object] =
+        m.asScala.asInstanceOf[Map[String, Object]]
 }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
index 8a3aa5d..56358e2 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/util/NCUtils.scala
@@ -1595,7 +1595,7 @@ object NCUtils extends LazyLogging {
             try
                 
GSON.toJson(GSON.getAdapter(classOf[JsonElement]).fromJson(json))
             catch {
-                case e: Exception ⇒ ""
+                case _: Exception ⇒ ""
             }
     }
 
@@ -1651,8 +1651,8 @@ object NCUtils extends LazyLogging {
      * @param json JSON to convert.
      * @return
      */
-    def jsonToScalaMap(json: String): Map[String, Any] =
-        GSON.fromJson(json, classOf[java.util.HashMap[String, 
Any]]).asScala.toMap
+    def jsonToScalaMap(json: String): Map[String, Object] =
+        GSON.fromJson(json, classOf[java.util.HashMap[String, 
Object]]).asScala.toMap
 
     /**
      * Shortcut to convert given JSON to Java map with default mapping.
@@ -1660,8 +1660,8 @@ object NCUtils extends LazyLogging {
      * @param json JSON to convert.
      * @return
      */
-    def jsonToJavaMap(json: String): Map[String, Any] =
-        GSON.fromJson(json, classOf[java.util.HashMap[String, Any]])
+    def jsonToJavaMap(json: String): java.util.Map[String, Object] =
+        GSON.fromJson(json, classOf[java.util.HashMap[String, Object]])
 
     /**
      *
@@ -1983,7 +1983,7 @@ object NCUtils extends LazyLogging {
       */
     @throws[NCE]
     def extractYamlFile[T](f: File, ignoreCase: Boolean, tr: 
TypeReference[T]): T =
-        extractYamlString(readFile(f, "UTF-8").mkString("\n"), 
f.getAbsolutePath, ignoreCase, tr)
+        extractYamlString(readFile(f).mkString("\n"), f.getAbsolutePath, 
ignoreCase, tr)
 
     /**
       * Extracts type `T` from given YAML `resource`.
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCDialogFlowItem.java 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCDialogFlowItem.java
index a08bbf3..c8bfb9d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCDialogFlowItem.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCDialogFlowItem.java
@@ -158,9 +158,9 @@ public interface NCDialogFlowItem {
     Optional<String> getClientAgent();
 
     /**
-     * Gets optional JSON data passed in with the initial REST request.
+     * Gets optional JSON data passed in with the user request.
      *
-     * @return Optional JSON data.
+     * @return Optional JSON data, can be empty but never {@code null}.
      */
-    Optional<String> getJsonData();
+    Map<String, Object> getRequestData();
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCRequest.java 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCRequest.java
index 74d16ee..1d53cd2 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCRequest.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCRequest.java
@@ -84,7 +84,7 @@ public interface NCRequest {
     /**
      * Gets optional JSON data passed in with the user request.
      *
-     * @return Optional JSON data.
+     * @return Optional JSON data, can be empty but never {@code null}.
      */
-    Optional<String> getJsonData();
+    Map<String, Object> getRequestData();
 }
\ No newline at end of file
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslBaselCompiler.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslBaselCompiler.scala
index 95d35b3..65cbabb 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslBaselCompiler.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslBaselCompiler.scala
@@ -60,16 +60,16 @@ trait NCIntentDslBaselCompiler {
     type StackType = mutable.ArrayStack[NCDslTermRetVal]
     type Instr = (NCToken, StackType,  NCDslTermContext) ⇒ Unit
 
-    def isJLong(v: AnyRef): Boolean = v.isInstanceOf[JLong]
-    def isJDouble(v: AnyRef): Boolean = v.isInstanceOf[JDouble]
-    def isString(v: AnyRef): Boolean = v.isInstanceOf[String]
-    def isBoolean(v: AnyRef): Boolean = v.isInstanceOf[Boolean]
-    def asJLong(v: AnyRef): Long = v.asInstanceOf[JLong].longValue()
-    def asJDouble(v: AnyRef): Double = v.asInstanceOf[JDouble].doubleValue()
-    def asString(v: AnyRef): String = v.asInstanceOf[String]
-    def asBool(v: AnyRef): Boolean = v.asInstanceOf[Boolean]
-
-    def pushAny(any: AnyRef, usedTok: Boolean)(implicit stack: StackType): 
Unit =
+    def isJLong(v: Object): Boolean = v.isInstanceOf[JLong]
+    def isJDouble(v: Object): Boolean = v.isInstanceOf[JDouble]
+    def isString(v: Object): Boolean = v.isInstanceOf[String]
+    def isBoolean(v: Object): Boolean = v.isInstanceOf[Boolean]
+    def asJLong(v: Object): Long = v.asInstanceOf[JLong].longValue()
+    def asJDouble(v: Object): Double = v.asInstanceOf[JDouble].doubleValue()
+    def asString(v: Object): String = v.asInstanceOf[String]
+    def asBool(v: Object): Boolean = v.asInstanceOf[Boolean]
+
+    def pushAny(any: Object, usedTok: Boolean)(implicit stack: StackType): 
Unit =
         stack.push(NCDslTermRetVal(any, usedTok))
     def pushLong(any: Long, usedTok: Boolean)(implicit stack: StackType): Unit 
=
         stack.push(NCDslTermRetVal(Long.box(any), usedTok))
@@ -79,9 +79,9 @@ trait NCIntentDslBaselCompiler {
         stack.push(NCDslTermRetVal(Boolean.box(any), usedTok))
 
     // Runtime errors.
-    def rtUnaryOpError(op: String, v: AnyRef)(implicit ctx: PRC): NCE =
+    def rtUnaryOpError(op: String, v: Object)(implicit ctx: PRC): NCE =
         newRuntimeError(s"Unexpected '$op' DSL operation for value: $v")
-    def rtBinaryOpError(op: String, v1: AnyRef, v2: AnyRef)(implicit ctx: 
PRC): NCE =
+    def rtBinaryOpError(op: String, v1: Object, v2: Object)(implicit ctx: 
PRC): NCE =
         newRuntimeError(s"Unexpected '$op' DSL operation for values: $v1, $v2")
     def rtUnknownFunError(fun: String)(implicit ctx: PRC): NCE =
         newRuntimeError(s"Unknown DSL function: $fun()")
@@ -89,7 +89,7 @@ trait NCIntentDslBaselCompiler {
         newRuntimeError(s"Invalid number of parameters for DSL function ($min 
is required): $fun()")
     def rtParamNumError(fun: String)(implicit ctx: PRC): NCE =
         newRuntimeError(s"Invalid number of parameters for DSL function: 
$fun()")
-    def rtParamTypeError(fun: String, param: AnyRef, expectType: 
String)(implicit ctx: PRC): NCE =
+    def rtParamTypeError(fun: String, param: Object, expectType: 
String)(implicit ctx: PRC): NCE =
         newRuntimeError(s"Expecting '$expectType' type of parameter for DSL 
function '$fun()', found: $param")
 
     /**
@@ -97,7 +97,7 @@ trait NCIntentDslBaselCompiler {
      * @param stack
      * @return
      */
-    def pop2()(implicit stack: StackType): (AnyRef, AnyRef, Boolean, Boolean) 
= {
+    def pop2()(implicit stack: StackType): (Object, Object, Boolean, Boolean) 
= {
         require(stack.size >= 2)
 
         // Stack pops in reverse order of push...
@@ -111,7 +111,7 @@ trait NCIntentDslBaselCompiler {
      * @param stack
      * @return
      */
-    def pop3()(implicit stack: StackType): (AnyRef, AnyRef, AnyRef, Boolean, 
Boolean, Boolean) = {
+    def pop3()(implicit stack: StackType): (Object, Object, Object, Boolean, 
Boolean, Boolean) = {
         require(stack.size >= 3)
 
         // Stack pops in reverse order of push...
@@ -127,7 +127,7 @@ trait NCIntentDslBaselCompiler {
      * @param stack
      * @return
      */
-    def pop1()(implicit stack: StackType): (AnyRef, Boolean) = {
+    def pop1()(implicit stack: StackType): (Object, Boolean) = {
         require(stack.nonEmpty)
 
         val NCDslTermRetVal(v, f) = stack.pop()
@@ -409,7 +409,7 @@ trait NCIntentDslBaselCompiler {
 
             (asJDouble(v1), asJDouble(v2), f1 || f2)
         }
-        def get1Any(): (AnyRef, Boolean) = {
+        def get1Any(): (Any, Boolean) = {
             ensureStack(1)
 
             pop1()
@@ -462,7 +462,7 @@ trait NCIntentDslBaselCompiler {
             var f = false
 
             stack.drain { x ⇒
-                jl.add(x.retVal)
+                jl.add(x.retVal.asInstanceOf[Object])
                 f = f || x.usedTok
             }
 
@@ -477,8 +477,8 @@ trait NCIntentDslBaselCompiler {
             val jm = new JHashMap[Object, Object]()
             var f = false
 
-            val keys = mutable.Buffer.empty[AnyRef]
-            val vals = mutable.Buffer.empty[AnyRef]
+            val keys = mutable.Buffer.empty[Object]
+            val vals = mutable.Buffer.empty[Object]
 
             var idx = 0
 
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
index 8d4dd62..59b85da 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
@@ -54,7 +54,7 @@ object NCIntentDslCompiler extends LazyLogging {
         private var intentId: String = _
         private var ordered: Boolean = false
         private var flowRegex: Option[String] = None
-        private var intentMeta: Map[String, Any] = _
+        private var intentMeta: ScalaMeta = _
 
         // Accumulator for parsed terms.
         private val terms = ArrayBuffer.empty[NCDslTerm]
@@ -161,7 +161,7 @@ object NCIntentDslCompiler extends LazyLogging {
                          if (terms.exists(t ⇒ t.id != null && t.id == 
fragTerm.id))
                             throw newSyntaxError(s"Duplicate term ID 
'${fragTerm.id}' in fragment '$id'.")(ctx.id())
                         else
-                            terms += fragTerm.cloneWithMeta(meta)
+                            terms += fragTerm.cloneWithFragMeta(meta)
 
                 case None ⇒ throw newSyntaxError(s"Unknown intent fragment ID: 
$id")(ctx.id())
             }
@@ -208,7 +208,7 @@ object NCIntentDslCompiler extends LazyLogging {
                             override lazy val getToken: NCToken = tok
                             override lazy val getIntentMeta: 
Optional[NCMetadata] =
                                 if (termCtx.intentMeta != null)
-                                    
Optional.of(NCMetadata.apply(termCtx.intentMeta.asJava))
+                                    
Optional.of(NCMetadata.apply(termCtx.intentMeta.asJava.asInstanceOf[java.util.Map[String,
 Object]]))
                                 else
                                     Optional.empty()
                         }
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
index a9b688a..8b2b7c1 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
@@ -241,6 +241,16 @@ object NCIntentSolverEngine extends LazyLogging with 
NCOpenCensusTrace {
                 )
             }
 
+            def intentMatchWeight(w: Seq[Int]): Seq[String] =
+                Seq(
+                    s"${y("XCT_VAL: ")}${w.head}",
+                    s"${y("SEN_TOK: ")}${w(1)}",
+                    s"${y("CNV_TOK: ")}${w(2)}",
+                    s"${y("SPC_MIN: ")}${w(3)}",
+                    s"${y("DLT_MAX: ")}${w(4)}",
+                    s"${y("NRM_MAX: ")}${w(5)}"
+                )
+
             val sorted = matches.sortWith((m1: MatchHolder, m2: MatchHolder) ⇒
                 // 1. First with maximum weight.
                 m1.intentMatch.weight.compare(m2.intentMatch.weight) match {
@@ -267,41 +277,26 @@ object NCIntentSolverEngine extends LazyLogging with 
NCOpenCensusTrace {
                             m1.variantIdx + 1,
                             m2.variantIdx + 1
                         )
+
                         tbl += (
                             s"${c("Intent Match Weight")}",
+                            intentMatchWeight(mw1),
+                            intentMatchWeight(mw2)
+                        )
+
+                        def variantWeight(w: NCIntentSolverVariant): 
Seq[String] =
                             Seq(
-                                s"${y("XCT_VAL: ")}${mw1.head}",
-                                s"${y("SEN_TOK: ")}${mw1(1)}",
-                                s"${y("CNV_TOK: ")}${mw1(2)}",
-                                s"${y("SPC_MIN: ")}${mw1(3)}",
-                                s"${y("DLT_MAX: ")}${mw1(4)}",
-                                s"${y("NRM_MAX: ")}${mw1(5)}"
-                            ),
-                            Seq(
-                                s"${y("XCT_VAL: ")}${mw2.head}",
-                                s"${y("SEN_TOK: ")}${mw2(1)}",
-                                s"${y("CNV_TOK: ")}${mw2(2)}",
-                                s"${y("SPC_MIN: ")}${mw2(3)}",
-                                s"${y("DLT_MAX: ")}${mw2(4)}",
-                                s"${y("NRM_MAX: ")}${mw2(5)}"
+                                s"${y("USR_TOKS: ")}${w.userToks}",
+                                s"${y("WORD_CNT: ")}${w.wordCnt}",
+                                s"${y("USR_DRCT: ")}${w.totalUserDirect}",
+                                s"${y("AWPT_PCT: ")}${w.avgWordsPerTokPct}",
+                                s"${y("SPARSITY: ")}${w.totalSparsity}"
                             )
-                        )
+
                         tbl += (
                             s"${c("Variant Weight")}",
-                            Seq(
-                                s"${y("USR_TOKS: ")}${v1.userToks}",
-                                s"${y("WORD_CNT: ")}${v1.wordCnt}",
-                                s"${y("USR_DRCT: ")}${v1.totalUserDirect}",
-                                s"${y("AWPT_PCT: ")}${v1.avgWordsPerTokPct}",
-                                s"${y("SPARSITY: ")}${v1.totalSparsity}"
-                            ),
-                            Seq(
-                                s"${y("USR_TOKS: ")}${v2.userToks}",
-                                s"${y("WORD_CNT: ")}${v2.wordCnt}",
-                                s"${y("USR_DRCT: ")}${v2.totalUserDirect}",
-                                s"${y("AWPT_PCT: ")}${v2.avgWordsPerTokPct}",
-                                s"${y("SPARSITY: ")}${v2.totalSparsity}"
-                            )
+                            variantWeight(v1),
+                            variantWeight(v2)
                         )
 
                         logger.warn(
@@ -348,14 +343,7 @@ object NCIntentSolverEngine extends LazyLogging with 
NCOpenCensusTrace {
                 sorted.foreach(m ⇒ {
                     val im = m.intentMatch
                     val w = im.weight.toSeq
-                    val ws = Seq(
-                        s"${y("XCT_VAL: ")}${w.head}",
-                        s"${y("SEN_TOK: ")}${w(1)}",
-                        s"${y("CNV_TOK: ")}${w(2)}",
-                        s"${y("SPC_MIN: ")}${w(3)}",
-                        s"${y("DLT_MAX: ")}${w(4)}",
-                        s"${y("NRM_MAX: ")}${w(5)}"
-                    )
+                    val ws = intentMatchWeight(w)
 
                     if (m == sorted.head)
                         tbl += (
@@ -496,12 +484,12 @@ object NCIntentSolverEngine extends LazyLogging with 
NCOpenCensusTrace {
             var lastTermMatch: TermMatch = null
             
             val termCtx = NCDslTermContext( // TODO
-                intentMeta = null,
-                reqMeta = null,
-                usrMeta = null,
-                convMeta = null,
-                compMeta = null,
-                fragMeta = null,
+                intentMeta = intent.meta,
+                reqMeta = ctx.getRequest.getRequestData,
+                usrMeta = ctx.getRequest.getUser.getMetadata,
+                convMeta = ctx.getConversation.getMetadata,
+                compMeta = ctx.getRequest.getCompany.getMetadata,
+                fragMeta = Map.empty[String, Object], // No fragments during 
intent matching.
                 req = ctx.getRequest
             )
 
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
index be67d33..69a26fc 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
@@ -17,6 +17,8 @@
 
 package org.apache.nlpcraft.model.intent.utils
 
+import org.apache.nlpcraft.common.ScalaMeta
+
 import java.util.regex.Pattern
 
 /**
@@ -33,7 +35,7 @@ case class NCDslIntent(
     dsl: String,
     id: String,
     ordered: Boolean,
-    meta: Map[String, Any],
+    meta: ScalaMeta,
     flow: Option[String],
     flowClsName: Option[String],
     flowMtdName: Option[String],
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.scala
index f757511..58ebb2f 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.scala
@@ -44,7 +44,7 @@ case class NCDslTerm(
      * @param meta
      * @return
      */
-    def cloneWithMeta(meta: Map[String, Any]): NCDslTerm =
+    def cloneWithFragMeta(meta: Map[String, Any]): NCDslTerm =
         NCDslTerm(
             id,
             pred,
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTermRetVal.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTermRetVal.scala
index 8eb3a7c..d23cfe5 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTermRetVal.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTermRetVal.scala
@@ -21,6 +21,6 @@ package org.apache.nlpcraft.model.intent.utils
  *
  */
 case class NCDslTermRetVal (
-    retVal: AnyRef,
+    retVal: Object,
     usedTok: Boolean
 )
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala
index 3ab3d6a..cec9bdd 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala
@@ -118,7 +118,7 @@ object NCDialogFlowManager extends NCService {
                     override val getReceiveTimestamp = req.getReceiveTimestamp
                     override val getRemoteAddress = req.getRemoteAddress
                     override val getClientAgent = req.getClientAgent
-                    override val getJsonData = req.getJsonData
+                    override val getRequestData = req.getRequestData
                 }
                 
                 flow.getOrElseUpdate(key, 
mutable.ArrayBuffer.empty[NCDialogFlowItem]).append(item)
diff --git 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
index 2941324..97f60a5 100644
--- 
a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
+++ 
b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/impl/NCRequestImpl.scala
@@ -19,11 +19,13 @@ package org.apache.nlpcraft.probe.mgrs.nlp.impl
 
 import java.util.Optional
 
+import org.apache.nlpcraft.common._
 import org.apache.nlpcraft.model._
 import org.apache.nlpcraft.model.impl._
 
 import scala.collection._
 import scala.collection.JavaConverters._
+import scala.compat.java8.OptionConverters._
 
 /**
  *
@@ -40,7 +42,10 @@ case class NCRequestImpl(meta: Map[String, Any], srvReqId: 
String) extends NCReq
     override lazy val getReceiveTimestamp: Long = 
meta("RECEIVE_TSTAMP").asInstanceOf[Long] // UTC.
     override lazy val getClientAgent: Optional[String] = getOpt("USER_AGENT")
     override lazy val getRemoteAddress: Optional[String] = 
getOpt("REMOTE_ADDR")
-    override lazy val getJsonData: Optional[String] = getOpt("DATA")
+    override lazy val getRequestData: java.util.Map[String, Object] = 
getOpt[String]("DATA").asScala match {
+        case Some(json) ⇒ U.jsonToJavaMap(json)
+        case None ⇒ Map.empty[String, Object].asJava
+    }
     override lazy val getCompany: NCCompany = new NCCompanyImpl(
         meta("COMPANY_ID").asInstanceOf[Long],
         meta("COMPANY_NAME").asInstanceOf[String],

Reply via email to