System#

This section describes system and utility actions and events that are necessary to build robust interactions.

Presence User Action#

The system detected the presence of a user. Depending on the interactive system this can mean that a user open the interface (e.g. chat app) or that a user entered the field of view of a camera (e.g. Kiosk), or the system detects mouse or keyboard input that indicate that a user is in front of her laptop.

Note. If no user is present no user actions should be created by the interactive system. So the PresenceUserAction serves like a parent action for all user actions. In the current version UMIM

PresenceUserActionStarted()#

The interactive system detects the presence of a user in the system.

Parameters:

... – Additional parameters/payload inherited from UserActionStarted().

PresenceUserActionFinished()#

The interactive system detects the user’s absence

Parameters:

... – Additional parameters/payload inherited from UserActionFinished().

Attention User Action#

The system detected the attention of a user with the interactive system. Attention can be measured in many different ways depending on the interactive system. In a chat application attention can for example be estimated through typing characteristics or app navigation behavior of the user. In an interactive avatar setting user attention might be estimated based on the visual queues such as the head position and user posture.

AttentionUserActionStarted(attention_level: str)#

The interactive system detects some level of engagement of the user.

Parameters:
  • attention_level (str) – Attention level. Minimal supported values are “engaged” and “disengaged”. Many systems support more granular levels, such as “engaged, partially” “disengaged, looking at phone”

  • ... – Additional parameters/payload inherited from UserActionStarted().

AttentionUserActionUpdated(attention_level: str)#

The interactive system provides an update to the engagement level.

Parameters:
  • attention_level (str) – Attention level. Minimal supported values are “engaged” and “disengaged”. Many systems support more granular levels, such as “engaged, partially” “disengaged, looking at phone”

  • ... – Additional parameters/payload inherited from UserActionUpdated().

AttentionUserActionFinished()#

The system detects the user to be disengaged with the interactive system.

Parameters:

... – Additional parameters/payload inherited from UserActionFinished().

Timer Bot Action#

Set a timer for a specified duration.

StartTimerBotAction(duration: timedelta, timer_name: str | None)#

Start a timer.

Parameters:
  • duration (timedelta) – Time duration with respect to the event_created_at timestamp of this StartTimerAction event. When the duration has passed the timer goes off (TimerBotActionFinished is sent out).

  • timer_name (Optional[str]) – Name for the timer

  • ... – Additional parameters/payload inherited from StartBotAction().

TimerBotActionStarted()#

Timer started.

Parameters:

... – Additional parameters/payload inherited from BotActionStarted().

ChangeTimerBotAction(duration: timedelta)#

Change the duration of the timer. If the duration is reduced this can cause the timer to go off immediately (an TimerBotActionFinished event will be sent out).

Parameters:
  • duration (timedelta) – Change the duration of the Timer with respect to the event_created_at timestamp of this StartTimerAction event.

  • ... – Additional parameters/payload inherited from ChangeBotAction().

StopTimerBotAction()#

Stop the timer.

Parameters:

... – Additional parameters/payload inherited from StopBotAction().

TimerBotActionFinished()#

Timer finished.

Parameters:

... – Additional parameters/payload inherited from BotActionFinished().

Managing context#

Many interaction managers have the notion of some sort of context or memory, where a certain context for the interaction can be stored. The following event supports notifying components about context updates.

ContextUpdate(data: Dict[str, Any])#

An update to the context. All specified keys will override the ones in the current context.

Parameters:
  • data (Dict[str, Any]) – Any contextual data that has changed.

  • ... – Additional parameters/payload inherited from Event().

Pipeline events#

Interaction managers typically can typically handle multiple interactions at the same time. For UMIM we are abstracting these as pipelines. A pipeline consists of

  • stream_uid, that corresponding to a unique stream of UMIM events, that is typically tied to a single client instance (e.g. a kiosk system in a shop that is always on, or a new browser session started by a user)

  • session_uid, that denotes a single interaction session. What a session consists of depends on your use case.

  • user_uid, that identifies the user that is participating in the session.

PipelineAcquired(
stream_uid: str,
session_uid: str | None,
user_uid: str | None,
)#

A new pipeline has been acquired. A pipeline connects the IM to end user devices (stream_uid). This event informs the IM in an event-based implementation about the availability of new pipelines.

Parameters:
  • stream_uid (str) – A unique identifier for the stream

  • session_uid (Optional[str]) – A unique identifier for the session

  • user_uid (Optional[str]) – A unique identifier for the user

  • ... – Additional parameters/payload inherited from Event().

PipelineUpdated(
stream_uid: str,
session_uid: str | None,
user_uid: str | None,
)#

Information about an existing pipeline has been updated. This means that a new session was started or a new user has been identified as part of the same pipeline.

Parameters:
  • stream_uid (str) – A unique identifier for the stream

  • session_uid (Optional[str]) – A unique identifier for the session

  • user_uid (Optional[str]) – A unique identifier for the user

  • ... – Additional parameters/payload inherited from Event().

PipelineReleased(
stream_uid: str,
session_uid: str | None,
user_uid: str | None,
)#

A pipeline has been released and is no longer available. A pipeline connects the IM to end user devices (stream_uid). This event informs the IM in an event-based implementation about pipelines that have been released.

Parameters:
  • stream_uid (str) – A unique identifier for the stream

  • session_uid (Optional[str]) – A unique identifier for the session

  • user_uid (Optional[str]) – A unique identifier for the user

  • ... – Additional parameters/payload inherited from Event().