Configuration#

The UMIM Action Server for Tokkio is pre-configured to work with Tokkio microservices out of the box. If you’re starting with one of the Tokkio reference workflows, no additional configuration is needed. We strongly recommend to only attempt to do configuration changes of the microservice if you have a running Tokkio/ACE setup (for example based on the mentioned Tokkio reference workflows) and you want to fine-tune certain aspects.

  • Adding support for additional animations? The most likely situation in which you need to change the default configuration is when you have configured a 3D avatar scene in the Omniverse Renderer MS and Animation Graph MS with different or additional animations. The default configuration supports all gestures, postures, and facial expressions in the default animation graph, used by avatars in the Tokkio reference workflows. You can configure the additional animations following the steps in section Update Available Animations.

  • Building a custom UCS app and need to integrate the action server? If you want to create a UCS app based on ACE components from scratch we explain how you can add the UMIM Action Server for Tokkio to the app specification in the section Integration into Custom UCS Apps below.

  • Creating your own service to interact with UMIM? For building a UMIM-compatible microservice or web service, refer to the UMIM API documentation. Any component supporting the UMIM API can be controlled from the ACE Agent Chat Engine.

  • Looking for even more configuration options? If you are looking for even more configuration options, section Microservice Parameters lists all the microservice parameters exposed as UCS parameters and section Full Default Service Configuration outlines the complete default configuration of the microservice.

Update Available Animations#

If you update the default animation graph with additional animations you can follow the steps in this section to make these animations available from UMIM. The UMIM Action Server for Tokkio currently supports four different types of animations related to the corresponding UMIM Actions: gestures, postures, facial gestures, and positions. For each of these types you can specify the list of available animations using the following format.

- animation_id: Goodbye
  description: "Waving goodbye: Waves with left hand extended high."
  duration: 2
  meaning: Taking leave of someone from a further distance, or getting someone's attention.

Note

It is important that you provide accurate descriptions and the meaning of each animation clip because this information is used to map UMIM Action parameters to the respective animation clips. For example if you are starting a StartGestureBotAction(gesture="wave with your hand") action the UMIM Action Server for Tokkio will map this (using sentence embeddings) to the animation_id Goodbye. In addition you need to provide the duration in seconds for each animation clip. Use a duration of -1 if you configured the animation clip in the scene to be a looping animation.

You can change the configured animations in the app-xy-params.yaml UCS parameters file of your UCS app specification. Make sure to list all animations that are available for a particular type of action including the ones you did not change or add. See the full default configuration for a list of all animation clips that are shipped with the default animation graph.

[...]

tokkio-umim-action-server:
    configs:
        service_config.yaml:
            services:
                gesture:
                    available_gestures:
                       - animation_id: Alternative_Goodbye
                         description: "Waving goodbye: Waves with right hand extended low."
                         duration: 4
                         meaning: Taking leave of someone from a further distance, or getting someone's attention.
                       [...] # List all available gestures here
                posture:
                    available_postures:
                       - animation_id: Talking
                         description: "Small gestures with hand and upper body: Avatar is talking"
                         duration: -1
                         meaning: Emphasizing that Avatar is talking
                       [...] # List all available postures here
                facial_gesture:
                    available_facial_gestures:
                       - animation_id: Angry
                         description: "Angry: Furrowed brow, short glare at the user with an angry frown."
                         duration: 1.7
                         meaning: Expression of anger, being displeased, insulted or bitter.
                       [...] # List all available facial gestures here
                position:
                    available_positions:
                       - animation_id: left
                         description: "Bot positions itself to the left of the scene"
                         duration: -1
                         meaning: move to the left
                       [...] # List all available positions here

Integration into Custom UCS Apps#

Tokkio reference workflows are already setup with the UMIM Action Server for Tokkio as well as the correct configurations for ACE Agent Chat Controller and ACE Agent Chat Engine. So the best way to get started is to use these reference workflows and sample UCS apps.

If you want to create a UCS app based on ACE components from scratch, here are the important settings for ACE Agent Chat Controller and ACE Agent that you need to change in the app-xy-params.yaml UCS parameters file of your UCS app specification, choose the rest of the parameters according to the documentation of those components.

chat-controller:
    pipeline: avatar_umim  # Set to "avatar_umim" for chat controller to support UMIM events related to user and bot utterances
    pipelineParams:
        speech_pipeline_manager:
            SpeechPipelineManager:
                initial_state: "INIT"  # set to "INIT" state when used together with the UMIM action server
                always_on: true  # Set to true to make sure chat controller is processing all events
    [...] # Other parameters as normal

chat-engine:
    interface: "event" # Set to "event" such that the Chat Engine is sending out UMIM events to control avatar actions (speech, gestures, postures, ...)
    [...] # Other parameters as normal

After setting these parameters to enable UMIM mode for the ACE Agent components, you can then simply add the microservice to the dependencies and components sections in the app-xy.yaml UCS app specification as you would do with any UCS based microservice. See the UCS documentation if you are unclear on how to add a microservice to you app specification.

[...]

dependencies:
    - ucf.svc.tokkio.umim-action-server:1.0.3 # Choose the latest available version (at the time of writing this is 1.0.3)
    [...]

components:
    [...]

    - name: tokkio-umim-action-server
        type: ucf.svc.tokkio.umim-action-server
        parameters:
            imagePullSecrets:
            - name: ngc-docker-reg-secret

The new component then needs to be connected to Redis, Animation Graph MS and the Tokkio UI Server MS in the connections section in the app-xy.yaml UCS app specification.

connections:
    [...]
    tokkio-umim-action-server/redis: redis-timeseries/redis
    tokkio-umim-action-server/anim-graph: animation-graph/http-api
    tokkio-umim-action-server/ui-server: tokkio-ui-server/ui-server-http

Microservice Parameters#

The UMIM Action Server for Tokkio microservice provides only few explicit parameters, since most of the UMIM action events provide parameters that control how specific actions are executed. To configure additional animations follow the steps above.

Parameter overview of the UMIM Action Server for Tokkio microservice.#

Parameter Name

Description

Type

UCF Default Value

umimSystemEventStream

Name of the UMIM system event stream where Pipeline information is published (PipelineAcquired, PipelineReleased)

string

“ace_agent_system_events”

animgraphApiVersion

Animation Graph API version. Only currently supported value is “1.0”

string

“1.0”

Secret overview of the UMIM Action Server for Tokkio microservice.#

Secret Name

Description

Format / How to setup secret

pexels-api-key

Optional and experimental feature. You only need to set this if you want to use image retrieval using the Pexels API for VisualInformation and VisualChoice actions

kubectl create secret generic pexels-api-key –from-literal=PEXELS_API_KEY=<PEXELS_API_KEY>

Full Default Service Configuration#

The UMIM Action Server for Tokkio contains multiple services that provide support for various UMIM actions and events (see the overview for more details). Below we list the default configuration for each service. You can overwrite any of these settings using the method describe in the section Update Available Animations.

version: "0.1.0"
event_provider:
  name: "redis"
  host: $egress.redis.address
  port: $egress.redis.port
umim_system_event_stream: $params.umimSystemEventStream
services:
  vision:
    enabled: True
    event_provider:
      name: "redis"
      host: $egress.redis.address
      port: $egress.redis.port
  timer:
    enabled: True
  gesture:
    enabled: True
    animation_graph_host: $egress.anim-graph.address
    animation_graph_port: $egress.anim-graph.port
    api_version: $params.animgraphApiVersion
    available_gestures:
      - animation_id: Goodbye
        description: "Waving goodbye: Waves with left hand extended high."
        duration: 2
        meaning: Taking leave of someone from a further distance, or getting someone's attention.
      - animation_id: Welcome
        description: "Waving hello: Spreads arms slightly, then raises right hand next to face and waves with an open hand."
        duration: 2.5
        meaning: Greeting someone in a shy or cute manner, showing a positive and non-threatening attitude.
      - animation_id: Personal_Statement_2
        description: "Personal statement: Leans forward and points to self with relaxed right hand, then leans back and opens arms wide with palms facing upwards."
        duration: 3
        meaning: Revealing something about themselves in a grandiose gesture, or making a little joke about their appearance or personality.
      - animation_id: Pointing_To_Self_1
        description: "Pointing to self: Leans forward slightly and with a relaxed right index finger points to self."
        duration: 2.5
        meaning: Saying something about themselves.
      - animation_id: Stupid_1
        description: "Stupid: Raising right hand next to head and twirling the index finger in circles."
        duration: 3.5
        meaning: Indicated someone or something is stupid crazy or dumb.
      - animation_id: No_1
        description: "Shaking head: Avatar shakes head slowly."
        duration: 3
        meaning: Expressing strong disagreement or disappointment.
      - animation_id: Bowing_1
        description:
          "Bowing: Slightly bows to the front making invitation gesture with
          both arms."
        duration: 2.5
        meaning: Formal greeting, sign of respect or congratulations or pride.
      - animation_id: Bowing_2
        description:
          "Bowing: Slightly bows with both arms and invitational gesture with
          right arm."
        duration: 2.5
        meaning: Overly formal greeting, sign of respect or grand introduction.
      - animation_id: Pointing_To_User_1
        description: "Pointing to user: Pointing with both arms towards the user."
        duration: 2.5
        meaning:
          Encouragement for the user to make a move, approach or say something, or
          pointing out the user is being addressed. This is also an encouraging and reassuring gesture.
      - animation_id: Pointing_To_User_2
        description: "Pointing to user: Insistingly pointing to user with the right arm."
        duration: 2.5
        meaning: Accusation or strong signal that the user is concerned.
      - animation_id: Pointing_Down_1
        description: "Pointing down: Lifting the right arm to shoulders and pointing."
        duration: 3
        meaning: Drawing attention to something below the screen or in front of the avatar.
      - animation_id: Pointing_Down_2
        description: "Pointing down: Lifting both arms and slightly point downwards."
        duration: 2
        meaning:
          Drawing attention to the desk, to something below the screen or in front
          of the avatar. Or informing about the location.
      - animation_id: Pointing_Left_1
        description:
          "Pointing left: Pointing with both arms to the left hand side of the
          avatar."
        duration: 4
        meaning:
          Pointing out something to the left of the avatar in a demanding way, or
          signaling frustration.
      - animation_id: Pointing_Left_2
        description: "Pointing left: Pointing with left arm to the back left of the avatar."
        duration: 4
        meaning:
          Calmly pointing out or presenting something to the left of the avatar.
          Or giving information about something behind the avatar.
      - animation_id: Pointing_Backward_1
        description: "Pointing to back: Pointing to the back with the extended right arm."
        duration: 3.5
        meaning:
          Informing about something in the direction towards the back or giving directions
          to something behind the avatar.
      - animation_id: Fistbump_Offer
        description:
          "Fistbump: Extend the right arm with right hand twisting slightly for 3 seconds, then
          bumping fist towards the user for 7 seconds."
        duration: 10
        meaning: Invitation to a fistbump followed by doing that fistbump.
      - animation_id: Pulling_Mime
        description: "Pulling rope: Avatar grabs invisible rope and imitates pulling behavior."
        duration: 3.5
        meaning: Suggesting being tethered or chained, or pulling something.
      - animation_id: Raise_Both_Arms
        description:
          "Raising both arms: Raising both arms above avatar's head and swaying
          slightly."
        duration: 3.5
        meaning:
          Implying in a crowd celebrating, or on a roller coaster or demonstrating
          not having anything on them.
      - animation_id: The_Robot
        description:
          "Robot dance: Imitating a dancing robot with arms moved in mechanical
          motion."
        duration: 3
        meaning: Jokingly playing a robot or dancing to celebrate or acting goofy.
      - animation_id: Phone_Dialing
        description:
          "Phone dialing: Raising left hand and imitating to dial a phone with
          right arm."
        duration: 3.5
        meaning: Asking for or mentioning a phone number, or talking about calling someone.
      - animation_id: Attraction_2
        description:
          "Having fun: Questioningly opening both arms and then raising them
          above the head mimicking being in a roller coaster ride."
        duration: 10
        meaning: Being silly, suggesting having fun.
      - animation_id: Please_Repeat_1
        description:
          "Please repeat: Moving head slightly to the user and making circular
          motion with right arm, then shrugging slightly."
        duration: 5.5
        meaning:
          Implying not having understood something, asking to repeat or rephrase,
          or needing more information.
      - animation_id: Please_Repeat_2
        description:
          "Presentation: Twirling both hands and making invitational pose with
          body."
        duration: 3.5
        meaning:
          Asking to repeat or rephrase something, or needing more information, or
          asking if something was understood.
      - animation_id: Trying_To_See
        description:
          "Trying to see: Lifting left hand above eyes and making gestures to
          see better, then shrug."
        duration: 4
        meaning: Implying looking for but not seeing something.
      - animation_id: Driving_Mime
        description:
          "Driving: Grabbing an invisible steering wheel with both hands, turning
          it and switching gears."
        duration: 4.5
        meaning: Sharing a story about driving or getting excited about cars.
      - animation_id: Exhausted
        description: "Exhausted: Letting head hang in a tired pose, slightly leaning."
        duration: 4.5
        meaning:
          Dramatically signaling exhaustion or running out of power, slowly shutting
          down.
      - animation_id: Presenting_Options_1
        description:
          "Presenting options: Showing open palms of both hands and making presenting
          motion with right hand, slight shrug."
        duration: 3.5
        meaning: Giving an overview or multiple options to choose from.
      - animation_id: Presenting_Options_2
        description:
          "Presenting options: Raising and opening one hand after the other and
          a subtle shrug."
        duration: 3
        meaning: Suggesting a choice between two options.
      - animation_id: Open_Question_1
        description: "Open question: Opening both hands and showing palms to user."
        duration: 3
        meaning:
          "Making a questioning gesture. Waiting for the user to make a choice, answer a question or say something.
          Indicates questioning the user caring about the user's answer maybe even showing concerns"
      - animation_id: Personal_Statement_1
        description:
          "Personal statement: Raising right hand to chest, extending and gesturing
          with left hand."
        duration: 3.5
        meaning:
          Making a personal statement, explaining something about themselves or making
          a suggestion relating to something on the left.
      - animation_id: Success_1
        description:
          "Success: Making a fist and raising the arm excitedly in a successful swinging
          motion."
        duration: 2
        meaning:
          Comically celebrating something going well, showing pride in a personal
          accomplishment. Demonstrating excitement. This is a confirming gesture like nodding.
      - animation_id: Dont_Understand_1
        description: "Not understanding: Raising both hands next head in a circular motion."
        duration: 3
        meaning: Implying being confused, overwhelmed or stupid.
      - animation_id: Toss
        description: "Tossing: Miming forming a ball with both hands and tossing it forward."
        duration: 4
        meaning:
          Implying crumpling something up and throwing it away, giving something
          up or forgetting about it.
      - animation_id: Come_Here_1
        description: "Come here: Extending both arms and curling index finger."
        duration: 2
        meaning: Asking to come closer.
      - animation_id: Tell_Secret
        description:
          "Telling secret: Coming closer to user and whispering with hand next
          to mouth."
        duration: 2.5
        meaning: Sharing something intimate, secret or inflammatory, or giving a tip.
      - animation_id: Pointing_Right_1
        description: "Pointing right: Pointing with both arms to the right hand side of the avatar."
        duration: 4
        meaning: Pointing out something to the right of the avatar in a demanding way, or signaling frustration.
      - animation_id: Pointing_Right_2
        description: "Pointing right: Pointing with right arm to the back right of the avatar."
        duration: 4
        meaning: Calmly pointing out or presenting something to the right of the avatar. Or giving information about something behind the avatar.
      - animation_id: Chefs_Kiss
        description: "Chef's Kiss: Avatar makes a kissing gesture and holding up the right hand with index finger and thumb touching."
        duration: 1.7
        meaning: Implying something is just perfect. Something turned out better than expected. Approval from someone in a teaching or judging position.
      - animation_id: Finger_Guns
        description: "Finger Guns: Leaning back pointing both index fingers to the user mimicking two guns like a cowboy."
        duration: 3
        meaning: Playfully taunting. Humorously punctuating a bad joke. Clumsy flirting.
      - animation_id: Finger_Wag
        description: "Finger Wag: Pulling back, shaking had and holding up a wagging right index finger"
        duration: 1.7
        meaning: Correcting after being misunderstood. Showing the other they have misinterpreted what was said. Implying something is forbidden or inappropriate in a paternal or playful way.
      - animation_id: Little
        description: "Little: Leaning in, squinting at a raised right hand, holding index and thumb close together."
        duration: 1.8
        meaning: Describing something as very small or miniscule. Something is physically tiny or an issue is so insignificant as to be negligible.
      - animation_id: Money
        description: "Money: Raising right hand, rubbing thumb and index finger together."
        duration: 2
        meaning: Implying something is expensive. Someone is rich. Doing something requires payment.
      - animation_id: Number_1a
        description: "Number 1: Raising right hand and extending the index finger."
        duration: 1.4
        meaning: Showing the number 1
      - animation_id: Number_2a
        description: "Number 2: Raising right hand and extending index and middle finger."
        duration: 1.4
        meaning: Showing the number 2
      - animation_id: Number_3a
        description: "Number 3: Raising right hand and extending index, middle and ring finger."
        duration: 1.4
        meaning: Showing the number 3
      - animation_id: Number_4a
        description: "Number 4: Raising right hand and extending all fingers except the thumb."
        duration: 1.4
        meaning: Showing the number 4
      - animation_id: Number_5a
        description: "Number 5: Raising right hand with all fingers extended."
        duration: 1.4
        meaning: Showing the number 5
      - animation_id: Number_1b
        description: "Number 1 (German style): Raising right hand and extending the thumb upwards."
        duration: 1.4
        meaning: Showing the number 1 for a Germanic audience
      - animation_id: Number_2b
        description: "Number 2 (German style): Raising right hand and extending the thumb and index finger."
        duration: 1.4
        meaning: Showing the number 2 for a Germanic audience
      - animation_id: Number_3b
        description: "Number 3 (German style): Raising right hand and extending the thumb, index and middle finger."
        duration: 1.4
        meaning: Showing the number 3 for a Germanic audience
      - animation_id: Number_6c
        description: "Number 6 (Chinese style): Raising right hand and extending the thumb and pinky."
        duration: 1.4
        meaning: Showing the number 6 for a Chinese audience
      - animation_id: Number_7c
        description: "Number 7 (Chinese style): Raising right hand and making claw shape touching the thumb to the fingers."
        duration: 1.4
        meaning: Showing the number 7 for a Chinese audience
      - animation_id: Number_8c
        description: "Number 8 (Chinese style): Raising right hand and extending index finger and thumb pointing slightly to the side."
        duration: 1.4
        meaning: Showing the number 8 for a Chinese audience
      - animation_id: Number_9c
        description: "Number 9 (Chinese style): Raising right hand and holding up a curled index finger."
        duration: 1.4
        meaning: Showing the number 9 for a Chinese audience
      - animation_id: Ouch
        description: "Ouch: Jump and cringe while turning head away, then recover quickly shaking out right hand and exhaling."
        duration: 2
        meaning: Narrowly avoiding a close call with danger. Feeling intense fear for a moment followed by exhaustion or relief. Can also be as a reacion to someone else's predicament. Or a response to well placed insult.
      - animation_id: Angry_Shaking_Fist
        description: "Angry Shaking Fist: Coming closer, lowering head and shaking right fist forward."
        duration: 1.6
        meaning: Being angrily frustrated. Swearing vengeance or threatening violence.
      - animation_id: Pointing_To_Self_Questioningly
        description: "Pointing To Self Questioningly: Rasing right finger hesitantly, turning head and pointing at self with while leaning back a little."
        duration: 2.8
        meaning: Asking if something refers to them, being unsure if they're being addressed. Asking if something might fit them or if they could do something.
      - animation_id: Pointing_To_User_Questioningly
        description: "Pointing To User Questioningly: Lifting right finger pointing at user with initial hesitation while leaning back slightly."
        duration: 2.4
        meaning: Asking if something might be about the user, or if the user is interested in an offer. Suggesting the user could be the right person for something. Uncertain about the users involvement.
      - animation_id: Raise_Finger_Big
        description: "Raise Finger Big: Raising right index finger in a big sweeping motion, then gesturing with it briefly."
        duration: 2.5
        meaning: Making a big surprise announcement. Being very pompous or a pedantic, gleefully correcting someone.
      - animation_id: More_Or_Less
        description: "More Or Less: Leaning in and holding out a flat hand with palms facing down, wiggling the hand back and forth."
        duration: 1.8
        meaning: Explaining something is not quite accurate, is unknown, or just a guess. Relativizing a previous statement. Being indecisive, not taking a clear stance. Pointing out the complexity of something.
      - animation_id: Thumbs_Up
        description: "Thumbs Up: Lifting the right hand with a thumb extending upwards."
        duration: 1.4
        meaning: Sign of approval. Something is correct. Enthusiastically agreeing with what's being said and showing support. Things are okay, there's no harm done. Encouragement to go ahead.
      - animation_id: Thumbs_Down
        description: "Thumbs Down: Lifting the right hand with a thumb pointing downwards."
        duration: 1.4
        meaning: Sign of disapproval. Something is wrong. Rudely disagreeing with what's being said showing rejection.
  posture:
    enabled: True
    animation_graph_host: $egress.anim-graph.address
    animation_graph_port: $egress.anim-graph.port
    api_version: $params.animgraphApiVersion
    default_animation_id: "Attentive"
    available_postures:
      - animation_id: Talking
        description: "Small gestures with hand and upper body: Avatar is talking"
        duration: -1
        meaning: Emphasizing that Avatar is talking
      - animation_id: Listening
        description: "Small gestures with hand and upper body: Avatar is listening"
        duration: -1
        meaning: Emphasizing that one is listening
      - animation_id: Idle
        description: "Small gestures with hand and upper body: Avatar is idle"
        duration: -1
        meaning: Show the user that the avatar is waiting for something to happen
      - animation_id: Thinking
        description: "Gestures with hand and upper body: Avatar is thinking"
        duration: -1
        meaning: Show the user that the avatar thinking about his next answer or is trying to remember something
      - animation_id: Attentive
        description: "Small gestures with hand and upper body: Avatar is attentive"
        duration: -1
        meaning: Show the user that the avatar is paying attention to the user
  facial_gesture:
    enabled: True
    animation_graph_host: $egress.anim-graph.address
    animation_graph_port: $egress.anim-graph.port
    api_version: $params.animgraphApiVersion
    available_facial_gestures:
      - animation_id: Angry
        description: "Angry: Furrowed brow, short glare at the user with an angry frown."
        duration: 1.7
        meaning: Expression of anger, being displeased, insulted or bitter.
      - animation_id: Angry_Intense
        description: "Very Angry: Furrowed brow, lowering head, angrily showing teeth."
        duration: 2.3
        meaning: Expression of rage or hatred, being spiteful or adversarial.
      - animation_id: Astonishment
        description: "Astonishment: Lowering head forward and dropping jaw."
        duration: 2.7
        meaning: Expression of astonishment, being extremely impressed and speechless.
      - animation_id: Confused
        description: "Confused: Slight squinting and opening of mouth."
        duration: 1.8
        meaning: Expression of confusion. Can't follow of comprehend what's been said.
      - animation_id: Confused_Intense
        description: "Very Confused: Tilting head forward, skewing mouth and slightly sneering."
        duration: 2
        meaning: Expression of total confusion. Something made no sense at all.
      - animation_id: Disgust
        description: "Disgusted: Sneering nose, curling lips pulling head back."
        duration: 1.5
        meaning: Expression of disgust. Finding something off-putting or being very negatively surprised.
      - animation_id: Disgust_Intense
        description: "Very Disgusted: Sneering, pulling back, shaking head, curling lips, showing teeth."
        duration: 2.5
        meaning: Expression of repulsion. Finding something extremely gross or offensive.
      - animation_id: Doubtful
        description: "Doubtful: Squinting and sneering slightly more with one eye."
        duration: 1.7
        meaning: Expression of doubt. Not sure if something can be true. Possible misunderstanding.
      - animation_id: Doubtful_Intense
        description: "Very Doubtful: Tilting head, strongly skewing mouth and squinting hard."
        duration: 1.7
        meaning: Expression of disbelief. Something can't possibly be correct. There must be a mistake.
      - animation_id: Excited
        description: "Excited: Leaning head forward widely smiling with an open mouth."
        duration: 3
        meaning: Expression of speechless excitement, being very positively surprised or happy.
      - animation_id: Eye_Roll
        description: "Eye Roll: Looking upwards and to the side slightly turning head away."
        duration: 2.5
        meaning: Expression of being annoyed by something stupid or tedious.
      - animation_id: Eye_Roll_Intense
        description: "Big Eye Roll: Rolling eyes and head upwards and to the side, mouth slightly open."
        duration: 2.5
        meaning: Expression of being very annoyed or frustrated by something.
      - animation_id: Pensive
        description: "Pensive: Looking slightly down and to the side, furrowing brow."
        duration: 2
        meaning: Expression of having to think about something. Being unsure or wondering.
      - animation_id: Pensive_Intense
        description: "Very Pensive: Looking to the side and tilting head with furrowed brow and tense lips."
        duration: 2.5
        meaning: Expression of strained thinking or indecisiveness.
      - animation_id: Sad
        description: "Sad: Lowering head, frowning and looking at the ground."
        duration: 4
        meaning: Expression of sadness. Being emotionally hurt or disappointed.
      - animation_id: Sad_Intense
        description: "Very Sad: Hanging head, looking to the ground, frowinging deeply, lips trembling."
        duration: 4
        meaning: Expression of extreme sadness. Being on the verge of tears. Deeply hurt and overwhelmed.
      - animation_id: Shrug
        description: "Shrug: Breaking eye contact, tilting head and raising lips in a slight frown."
        duration: 1.4
        meaning: Expression of uncertainty or disinterest. Not knowing something without being bothered.
      - animation_id: Shrug_Intense
        description: "Big Shrug: Looking away, raising and tilting head, skewing mouth and frowning."
        duration: 1.3
        meaning: Expression of having no idea. Being glib.
      - animation_id: Smile
        description: "Smile: Smiling with closed lips."
        duration: 2
        meaning: Expression of happiness, being pleased or just polite.
      - animation_id: Smile_Intense
        description: "Big Smile: Grinning."
        duration: 2.8
        meaning: Expression of being very pleased and happy. Polite greeting. Can also be sarcastic.
      - animation_id: Surprised
        description: "Surprised: Wide eyes, narrow open lips, raising head."
        duration: 2
        meaning: Expression of surprise. Being caught off guard by something.
      - animation_id: Surprised_Intense
        description: "Very Surprised: Open mouth, slightly trembling head, eyes wide open with raised brows."
        duration: 2
        meaning: Expression of shock. Being surprised to the point of fear.
      - animation_id: Taunt
        description: "Taunt: Raising an eyebrow, turning head to the side with a one-sided smile."
        duration: 1.2
        meaning: Expression of jovial provocation. Being cheeky, hinting at something or flirting.
      - animation_id: Taunt_Intense
        description: "Excessive Taunt: Smiling, turning head to side making eye contact and bouncing eyebrows."
        duration: 2
        meaning: Expression for a strong hint. Taunting and suggesting something in a playful way.
      - animation_id: Tired
        description: "Tired: Slow blinking, lowering jaw, half open eyes."
        duration: 4
        meaning: Expression of being tired. Something is very exhausting or boring.
      - animation_id: Tired_Intense
        description: "Very Tired: Head sinking, eyes briefly closing, then waking suddenly and recovering."
        duration: 2.5
        meaning: Expression of being extremely tired. Falling asleep for a second.
      - animation_id: Wink
        description: "Wink: Slight smile and head tilt, winking with left eye briefly."
        duration: 0.8
        meaning: Expression for a hint. Suggesting something isn't meant to be taken seriously. Just kidding.
      - animation_id: Wink_Intense
        description: "Big Wink: Turning head, winking with left eye and slightly grinning."
        duration: 1
        meaning: Expression for being playful. Making an obvious hint, offering a deal, or being sleazy.
      - animation_id: Yawn
        description: "Yawn: Closing eyes, opening mouth and straining face pulling back chin."
        duration: 1.8
        meaning: Expression of boredom. Being generally tired, unoccupied or inactive. happens involuntarily.
      - animation_id: Sneaky
        description: "Sneaky: Turning head slightly, and smirking."
        duration: 1.5
        meaning: Expression of cunning or smugness. Posing a challenge, projecting pride and confidence or mischief.
      - animation_id: Sneaky_Intense
        description: "Very Sneaky: Lowering head smiling with cold eyes and eyes darting around the room."
        duration: 2.1
        meaning: Expression of deviousness. Planning something sinister, being manipulative or enjoying someone else's peril. Being creepy or spooky, trying to instil fear.
      - animation_id: Head_Shake_Big
        description: "Big Head Shake: Strongly shaking head two times."
        duration: 1.6
        meaning: Showing clear, decisive disagreement
      - animation_id: Head_Shake_Frantic
        description: "Frantic Head Shake: Closing eyes and shaking head three times quickly."
        duration: 1.8
        meaning: Showing emphatic disagreement. Implying something was misunderstood.
      - animation_id: Head_Shake_Slowly
        description: "Slow Head Shake: Shaking head two times slowly"
        duration: 1.9
        meaning: Showing hesitant disagreement. Something is probably wrong.
      - animation_id: Nodding_Big
        description: "Big Nod: Strongly nodding head once with wide eyes."
        duration: 2
        meaning: Showing clear, decisive agreement
      - animation_id: Nodding_Frantic
        description: "Frantic Nod: Nodding head four times quickly."
        duration: 1.6
        meaning: Showing emphatic, supportive agreement.
      - animation_id: Nodding_Slowly
        description: "Slow Nod: Nodding head three times slowly."
        duration: 3
        meaning: Showing compassionate, patient agreement.
      - animation_id: Nodding_Upward
        description: "Up Nod: Nodding upwards with chin and raising eyebrows."
        duration: 0.8
        meaning: Subtle greeting or sign of recognition. Addressing someone.
  position:
    enabled: True
    animation_graph_host: $egress.anim-graph.address
    animation_graph_port: $egress.anim-graph.port
    api_version: $params.animgraphApiVersion
    default_animation_id: "Center"
    available_positions:
      - animation_id: Left
        description: "Bot positions itself to the left of the scene"
        duration: -1
        meaning: move to the left
      - animation_id: Right
        description: "Bot positions itself to the right of the scene"
        duration: -1
        meaning: move to the right
      - animation_id: Center
        description: "Bot positions itself at the center of the scene"
        duration: -1
        meaning: move to the center
  camera_motion_effect:
    enabled: True
    animation_graph_host: $egress.anim-graph.address
    animation_graph_port: $egress.anim-graph.port
    api_version: $params.animgraphApiVersion
    default_animation_id: none
    available_effects:
      - animation_id: shake
        description: camera shakes briefly
        duration: 2
        meaning: camera shakes briefly
      - animation_id: hand_held
        description: cameras sways very slightly for a short while
        duration: 2
        meaning: cameras sways very slightly for a short while
      - animation_id: jump_cut_out
        description: Temporary cut to a slightly wider frame
        duration: 2
        meaning: Temporary cut to a slightly wider frame
      - animation_id: jump_cut_in
        description: Temporary cut to a slightly tighter frame
        duration: 2
        meaning: Temporary cut to a slightly tighter frame
  camera_shot:
    enabled: True
    animation_graph_host: $egress.anim-graph.address
    animation_graph_port: $egress.anim-graph.port
    api_version: $params.animgraphApiVersion
    default_animation_id: Full
    available_shots:
      - animation_id: Full
        description: "Full body visible."
        duration: -1
        meaning: Full body visible.
      - animation_id: medium_full
        description: "Visible from knees upwards. Default camera position."
        duration: -1
        meaning: Visible from knees upwards. Default camera position.
      - animation_id: medium
        description: "Visible from waist upwards."
        duration: -1
        meaning: Visible from waist upwards.
      - animation_id: close_up
        description: "Visible from neck upwards"
        duration: -1
        meaning: Visible from neck upwards
    available_transitions:
      - animation_id: cut
        description: transition instantly
        duration: 0
        meaning: transition instantly
      - animation_id: fast
        description: transition in 1 second
        duration: 1
        meaning: transition in 1 second
      - animation_id: slow
        description: transition in 3 seconds
        duration: 3
        meaning: transition in 3 seconds
      - animation_id: very_slow
        description: transition in 6 seconds
        duration: 6
        meaning: transition in 6 seconds
  ui:
    enabled: True
    ui_host: $egress.ui-server.address
    ui_port: $egress.ui-server.port
    event_provider_name: "redis"
    event_provider_host: $egress.redis.address
    event_provider_port: $egress.redis.port
    image_search:
      enabled: True
      provider_name: "pexels"
      key_path: "/secrets/pexels_api_key.txt"