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],