package Ġai . flow storm . core . nlp Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonProperty Ċ import Ġorg . glass fish . hk 2 . api . Iterable Provider Ċ import Ġai . flow storm . core . Component Ċ import Ġai . flow storm . core . Context Ċ import Ġai . flow storm . core . Input Ċ import Ġai . flow storm . util . Logger Delegate Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . ws . rs . client . Entity Ċ import Ġjavax . ws . rs . client . Web Target Ċ import Ġjavax . ws . rs . core . GenericType Ċ Ċ class ĠIll usion ist IR Ġ: ĠComponent Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġweb Targets : ĠIterable Provider < Web Target > ĊĊĠĠĠ Ġprivate Ġval Ġweb Target : ĠWeb Target Ġget () Ġ= Ġweb Targets . named (" ill usion ist "). get () ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġby ĠLogger Delegate () ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( context : ĠContext ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodels Ġ= Ġcontext . intent Models ĊĠĠĠĠĠĠĠ Ġif Ġ( models . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Processing ĠIR Ġ- Ġnothing Ġto Ġdo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcontext . pipeline . process ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext . logger . info (" Processing ĠIR Ġwith Ġmodels Ġ$ models ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe ĠER Ġneeds Ġto Ġbe Ġtriggered Ġbefore ĠIR ĊĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġcontext . input . transcript . text ĊĠĠĠĠĠĠĠ Ġcontext . input . entity Map . values . flatten (). forEach Ġ{ Ġif Ġ( it . required ) Ġtext Ġ= Ġtext . replace ( it . text , Ġit . className ) Ġ} Ġ// ĠBetter Ġto Ġreplace Ġby Ġindex ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest ( text , Ġmodels . map Ġ{ Ġit . id Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġresponses Ġ= Ġweb Target . path ("/ intent / query / multi _ model "). request (). post ( Entity . json ( request ), Ġobject Ġ: ĠGeneric Type < List < Response >>() Ġ{}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( responses [ 0 ]. answer Ġ== ĠOUT _ OF _ DOMAIN _ ACTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . input . action Ġ= ĠOUT _ OF _ DOMAIN _ ACTION ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( response Ġin Ġresponses ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . answer Ġ!= ĠOUT _ OF _ DOMAIN _ ACTION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġresponse ._ id Ġ+ Ġ"#" Ġ+ Ġresponse . answer ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . turn . input . classes . add ( Input . Class ( Input . Class . Type . Intent , Ġname , Ġresponse . confidence )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . pipeline . process ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠResponse ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ id : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanswer : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfidence : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhit : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġdata Ġclass ĠRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ_ ids : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ field : JsonProperty (" den ied _ answers ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdenied Answers : ĠList < List < String ?> ?> Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ field : JsonProperty (" allowed _ answers ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġallowed Answers : ĠList < List < String ?> ?> Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ field : JsonProperty (" use _ threshold ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuse Threshold : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn : ĠInt Ġ= Ġ 0 Ġ// number Ġof Ġmaximum Ġresults , Ġordered Ġby Ġconfidence , Ġdefault Ġ 0 Ġ== Ġno Ġlimit ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠOUT _ OF _ DOMAIN _ ACTION Ġ= Ġ" out of domain " ĊĠĠĠ Ġ} Ċ }