Skip to content

Commit 241b436

Browse files
authored
fix(core): bot state not restoring (#1824)
1 parent 9c21bb6 commit 241b436

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

packages/bp/src/core/dialog/janitor.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { TYPES } from 'core/app/types'
33
import { BotService } from 'core/bots'
44
import { BotpressConfig, ConfigProvider } from 'core/config'
55
import { SessionRepository, createExpiry, SessionIdFactory, DialogSession } from 'core/dialog/sessions'
6+
import { StateManager } from 'core/dialog/state-manager'
67
import { JobService } from 'core/distributed'
78
import { Event, EventRepository } from 'core/events'
89
import { EventCollector } from 'core/events/event-collector'
@@ -38,7 +39,8 @@ export class DialogJanitor extends Janitor {
3839
@inject(TYPES.UserRepository) private userRepo: ChannelUserRepository,
3940
@inject(TYPES.JobService) private jobService: JobService,
4041
@inject(TYPES.EventCollector) private eventCollector: EventCollector,
41-
@inject(TYPES.EventRepository) private eventRepository: EventRepository
42+
@inject(TYPES.EventRepository) private eventRepository: EventRepository,
43+
@inject(TYPES.StateManager) private stateManager: StateManager
4244
) {
4345
super(logger)
4446
}
@@ -113,16 +115,14 @@ export class DialogJanitor extends Janitor {
113115
// Store the timeout event so we can detect loops
114116
this.eventCollector.storeEvent(InternalEvent)
115117

116-
const { result: user } = await this.userRepo.getOrCreate(channel, target, botId)
118+
// Restore the state for the timeout event
119+
await this.stateManager.restore(InternalEvent)
117120

118121
// We clean the queue because that processTimeout will return the same event context
119122
// if there is no jump, so we don't want the timeout event to process the previous queue
120123
// The reason to return the event is to persist any changes made to session state or context
121124
// in the session timeout hook
122125
InternalEvent.state.context = { ...session.context, queue: undefined } as IO.DialogContext
123-
InternalEvent.state.session = session.session_data as IO.CurrentSession
124-
InternalEvent.state.user = user.attributes
125-
InternalEvent.state.temp = session.temp_data
126126

127127
update.event = await this.dialogEngine.processTimeout(botId, sessionId, InternalEvent)
128128

0 commit comments

Comments
 (0)