Session
session - это объект класса Session для хранения контекста в рамках взаимодействия с пользователем. Для каждого пользователя храниться своя сессия в единственном экземпляре.
Session реализует интерфейс Map и хранит пары ключ-значение. Во все объекты Session при создании помещается идентификатор пользователя с ключом messengerId
Объекты Session доступны в сценариях. Пример работы с Session:
const val COUNTER_KEY = "counter"
@Scenario(DemoDispatcher::class, "/session", "session")
class SessionScenario(
dispatcher: DemoDispatcher
) : SessionAwareOperations(dispatcher), ScenarioEntryPoint {
override suspend fun start(update: Update) {
// get messengerId
val messengerId = session[messengerId]
// put value in session
session.putIfAbsent(COUNTER_KEY, 0)
session[COUNTER_KEY]=session[COUNTER_KEY] as Int + 1
val counterValue = session[COUNTER_KEY] as Int
sendMessage("Counter value: $counterValue")
}
}
Доступ к session из другого сценария:
@Scenario(DemoDispatcher::class, "/session2", "session2")
class Session2Scenario(
dispatcher: DemoDispatcher
) : SessionAwareOperations(dispatcher), ScenarioEntryPoint {
override suspend fun start(update: Update) {
sendMessage("Counter value from session2 scenario: $session[$COUNTER_KEY]")
}
}