/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 / 2 0 2 1 Ġe - voy age urs Ġtechnologies Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġai . to ck . bot . test Ċ Ċ import Ġai . to ck . bot . connector . Connector Message Ċ import Ġai . to ck . bot . connector . Connector Type Ċ import Ġai . to ck . bot . definition . Bot Definition Ċ import Ġai . to ck . bot . definition . Intent Aware Ċ import Ġai . to ck . bot . definition . Parameters Ċ import Ġai . to ck . bot . definition . Story Definition Ċ import Ġai . to ck . bot . definition . Story Handler Definition Ċ import Ġai . to ck . bot . definition . Story Step Ċ import Ġai . to ck . bot . engine . action . Action Ċ import Ġai . to ck . bot . engine . action . Send Choice Ċ import Ġai . to ck . bot . engine . action . Send Choice . Companion . decode Choice Id Ċ import Ġai . to ck . bot . engine . action . Send Sentence Ċ import Ġai . to ck . bot . engine . dialog . Dialog Ċ import Ġai . to ck . bot . engine . dialog . Entity Value Ċ import Ġai . to ck . bot . engine . dialog . Snapshot Ċ import Ġai . to ck . bot . engine . dialog . Story Ċ import Ġai . to ck . bot . engine . user . Player Id Ċ import Ġai . to ck . bot . engine . user . Player Type Ċ import Ġai . to ck . bot . engine . user . User Preferences Ċ import Ġai . to ck . bot . engine . user . User Timeline Ċ import Ġai . to ck . translator . I 1 8 n Key Provider Ċ import Ġai . to ck . translator . User Interface Type Ċ Ċ /** Ċ Ġ* ĠThe Ġcontext Ġof Ġthe Ġtest . Ċ Ġ*/ Ċ data Ġclass ĠBot Bus Mock Context ( ĊĠĠĠ Ġvar Ġuser Timeline : ĠUser Timeline , ĊĠĠĠ Ġvar Ġdialog : ĠDialog , ĊĠĠĠ Ġvar Ġstory : ĠStory , ĊĠĠĠ Ġvar Ġfirst Action : ĠAction , ĊĠĠĠ Ġvar Ġbot Definition : ĠBot Definition , ĊĠĠĠ Ġvar Ġi 1 8 n Provider : ĠI 1 8 n Key Provider , ĊĠĠĠ Ġvar Ġuser Interface Type : ĠUser Interface Type Ġ= ĠUser Interface Type . text Chat , ĊĠĠĠ Ġvar Ġconnector Type : ĠConnector Type Ġ= Ġdefault Test Connector Type , ĊĠĠĠ Ġval Ġtest Context : ĠTest Context Ġ= Ġcurrent TestContext , ĊĠĠĠ Ġval Ġsnapshots : ĠMutable List < Snapshot > Ġ= Ġmutable ListOf () Ċ ) Ġ{ ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġapplication Id : ĠString , ĊĠĠĠĠĠĠĠ ĠuserId : ĠPlayer Id , ĊĠĠĠĠĠĠĠ Ġbot Id : ĠPlayer Id , ĊĠĠĠĠĠĠĠ Ġbot Definition : ĠBot Definition , ĊĠĠĠĠĠĠĠ Ġstory Definition : ĠStory Definition , ĊĠĠĠĠĠĠĠ Ġaction : ĠAction Ġ= ĠSend Sentence ( userId , Ġapplication Id , Ġbot Id , Ġ""), ĊĠĠĠĠĠĠĠ Ġuser Interface Type : ĠUser Interface Type Ġ= ĠUser Interface Type . text Chat , ĊĠĠĠĠĠĠĠ Ġuser Preferences : ĠUser Preferences Ġ= ĠUser Preferences (), ĊĠĠĠĠĠĠĠ Ġconnector Type : ĠConnector Type Ġ= Ġdefault Test Connector Type , ĊĠĠĠĠĠĠĠ Ġtest Context : ĠTest Context Ġ= Ġcurrent TestContext ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Timeline ( userId , Ġuser Preferences ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDialog ( set Of ( userId , Ġbot Id )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStory ( story Definition , Ġstory Definition . main Intent ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbot Definition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstory Definition . story Handler Ġas ĠI 1 8 n Key Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Interface Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnector Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġbot Definition : ĠBot Definition , ĊĠĠĠĠĠĠĠ Ġstory Definition : ĠStory Definition , ĊĠĠĠĠĠĠĠ Ġapplication Id : ĠString Ġ= Ġbot Definition . bot Id , ĊĠĠĠĠĠĠĠ ĠuserId : ĠPlayer Id Ġ= ĠPlayer Id (" user "), ĊĠĠĠĠĠĠĠ Ġbot Id : ĠPlayer Id Ġ= ĠPlayer Id (" bot ", ĠPlayer Type . bot ), ĊĠĠĠĠĠĠĠ Ġaction : ĠAction Ġ= ĠSend Sentence ( userId , Ġapplication Id , Ġbot Id , Ġ""), ĊĠĠĠĠĠĠĠ Ġuser Interface Type : ĠUser Interface Type Ġ= ĠUser Interface Type . text Chat , ĊĠĠĠĠĠĠĠ Ġuser Preferences : ĠUser Preferences Ġ= ĠUser Preferences (), ĊĠĠĠĠĠĠĠ Ġconnector Type : ĠConnector Type Ġ= Ġdefault Test Connector Type , ĊĠĠĠĠĠĠĠ Ġtest Context : ĠTest Context Ġ= Ġcurrent TestContext ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ Ġthis ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbot Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbot Definition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstory Definition , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Interface Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Preferences , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnector Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Context ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġapplication Id Ġget () Ġ= Ġfirst Action . application Id ĊĠĠĠ Ġval Ġbot Id Ġget () Ġ= Ġfirst Action . recipient Id ĊĠĠĠ Ġval ĠuserId Ġget () Ġ= Ġfirst Action . player Id ĊĠĠĠ Ġval Ġuser Preferences : ĠUser Preferences Ġget () Ġ= Ġuser Timeline . user Preferences ĊĠĠĠ Ġval Ġinitial User Preferences : ĠUser Preferences Ġ= Ġuser Preferences . copy () ĊĠĠĠ Ġinternal Ġval Ġlogs Repository : ĠMutable List < Bot Bus Mock Log > Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġlist Ġof Ġall Ġbot Ġanswers Ġrecorded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġanswers : ĠList < Bot Bus Mock Log > Ġget () Ġ= Ġlogs Repository ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġfirst Ġanswer Ġrecorded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġfirst Answer : ĠBot Bus Mock Log Ġget () Ġ= Ġlogs Repository . first () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġsecond Ġanswer Ġrecorded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsecond Answer : ĠBot Bus Mock Log Ġget () Ġ= Ġlogs Repository [ 1 ] ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġthird Ġanswer Ġrecorded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġthird Answer : ĠBot Bus Mock Log Ġget () Ġ= Ġlogs Repository [ 2 ] ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġlast Ġanswer Ġrecorded . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġlast Answer : ĠBot Bus Mock Log Ġget () Ġ= Ġlogs Repository . last () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReset Ġuser Ġpreferences . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset User Preferences ( user Preferences : ĠUser Preferences ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . user Preferences . fill With ( user Preferences ) ĊĠĠĠĠĠĠĠ Ġinitial User Preferences . fill With ( user Preferences ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġsentence Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsentence ( ĊĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġentity Values : ĠEntity Value ĊĠĠĠ Ġ): ĠSend Sentence Ġ= ĊĠĠĠĠĠĠĠ Ġsentence ( text , Ġentity Values . toList ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġsentence Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsentence ( ĊĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠ Ġentity Values : ĠList < Entity Value > Ġ= Ġempty List () ĊĠĠĠ Ġ): ĠSend Sentence Ġ= ĊĠĠĠĠĠĠĠ Ġsentence ( text , Ġnull Ġas ĠIntent Aware ?, Ġentity Values . toList ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġsentence Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsentence ( ĊĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent Aware ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar arg Ġentity Values : ĠEntity Value ĊĠĠĠ Ġ) Ġ= Ġsentence ( text , Ġintent , Ġentity Values . toList ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġsentence Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsentence ( ĊĠĠĠĠĠĠĠ Ġtext : ĠString , ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent Aware ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġentity Values : ĠList < Entity Value > Ġ= Ġempty List () ĊĠĠĠ Ġ): ĠSend Sentence Ġ= ĊĠĠĠĠĠĠĠ ĠSend Sentence ( userId , Ġapplication Id , Ġbot Id , Ġtext ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . intent Ġ= Ġintent ?. wrapped Intent ()?. name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . entity Values . addAll ( entity Values ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġsentence Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsentence ( ĊĠĠĠĠĠĠĠ Ġmessage : ĠConnector Message , ĊĠĠĠĠĠĠĠ Ġvar arg Ġentity Values : ĠEntity Value ĊĠĠĠ Ġ): ĠSend Sentence Ġ= ĊĠĠĠĠĠĠĠ Ġsentence ( message , Ġentity Values . toList ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġsentence Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsentence ( ĊĠĠĠĠĠĠĠ Ġmessage : ĠConnector Message , ĊĠĠĠĠĠĠĠ Ġentity Values : ĠList < Entity Value > Ġ= Ġempty List () ĊĠĠĠ Ġ): ĠSend Sentence Ġ= ĊĠĠĠĠĠĠĠ Ġsentence ( message , Ġnull Ġas ĠIntent Aware ?, Ġentity Values . toList ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġsentence Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsentence ( ĊĠĠĠĠĠĠĠ Ġmessage : ĠConnector Message , ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent Aware ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar arg Ġentity Values : ĠEntity Value ĊĠĠĠ Ġ) Ġ= Ġsentence ( message , Ġintent , Ġentity Values . toList ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġsentence Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsentence ( ĊĠĠĠĠĠĠĠ Ġmessage : ĠConnector Message , ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent Aware ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġentity Values : ĠList < Entity Value > Ġ= Ġempty List () ĊĠĠĠ Ġ): ĠSend Sentence Ġ= ĊĠĠĠĠĠĠĠ ĠSend Sentence ( userId , Ġapplication Id , Ġbot Id , Ġnull , Ġmutable ListOf ( message )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . intent Ġ= Ġintent ?. wrapped Intent ()?. name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . entity Values . addAll ( entity Values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . target Connector Type Ġ= Ġmessage . connector Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . user Interface Ġ= Ġmessage . connector Type . user Interface Type ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġchoice Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchoice ( ĊĠĠĠĠĠĠĠ Ġintent Name : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġparameters : ĠPair < String , ĠString > ĊĠĠĠ Ġ): ĠSend Choice Ġ= ĠSend Choice ( userId , Ġapplication Id , Ġbot Id , Ġintent Name , Ġparameters . toMap ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġchoice Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchoice ( ĊĠĠĠĠĠĠĠ Ġintent Name : ĠString , ĊĠĠĠĠĠĠĠ Ġstep : ĠStory Step < out ĠStory Handler Definition >, ĊĠĠĠĠĠĠĠ Ġvar arg Ġparameters : ĠPair < String , ĠString > ĊĠĠĠ Ġ): ĠSend Choice Ġ= ĠSend Choice ( userId , Ġapplication Id , Ġbot Id , Ġintent Name , Ġstep , Ġparameters . toMap ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġchoice Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchoice ( ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent Aware , ĊĠĠĠĠĠĠĠ Ġstep : ĠStory Step < out ĠStory Handler Definition >, ĊĠĠĠĠĠĠĠ Ġparameters : ĠParameters ĊĠĠĠ Ġ): ĠSend Choice Ġ= ĠSend Choice ( userId , Ġapplication Id , Ġbot Id , Ġintent . wrapped Intent (). name , Ġstep , Ġparameters . toMap ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġchoice Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchoice ( ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent Aware , ĊĠĠĠĠĠĠĠ Ġparameters : ĠParameters Ġ= ĠParameters () ĊĠĠĠ Ġ): ĠSend Choice Ġ= ĠSend Choice ( userId , Ġapplication Id , Ġbot Id , Ġintent . wrapped Intent (). name , Ġparameters . toMap ()) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġchoice Ġfor Ġthis Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchoice Of Id ( choice Id : ĠString ): ĠSend Choice Ġ= Ġdecode Choice Id ( choice Id ). let Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠ Ġchoice ( it . first , Ġ* it . second . map Ġ{ Ġit . key Ġto Ġit . value Ġ}. to Typed Array ()) ĊĠĠĠ Ġ} Ċ } Ċ