Definition
A variable in athena is one way to access data, that can be stored in different context:
- Scenario
 - Session
 - User
 
Variables are accessible in templates using the % symbol and the name of the variable:
%myVariable
Note: User variables are only accessible through addins, and therefore cannot be accessed directly through % notation.
There are different ways to set variables:
- Addins
 - Template statements
 - Predefined variables
 
Addins
You can access and set variables through addins:
Templates
You can access variables using the % notation. As a reminder, only scenario and session variables are accessible using this notation. To access user variables, you need to use contextUser addin.
To assign a variable, you need first to choose the scope (session or scenario). This will impact the notation:
- Scenario: use 
%myVar = "value" - Session: use  
$myVar = "value" 
When using the variable inside a template, Athena will first try to match a contextScenario variable, and will use the contextSession as a fallback:
? TEST
    -: %myVar = "scenario"
    -: $myVar = "session"
    - %myVar
In the exemple above, the result will be: scenario
? TEST
    -: $myVar = "session"
    - %myVar
In the exemple above, the result will be session because myVar is not found in scenario context
Predifed variables
lastUserMessage
lastUserMessage is a predefined variable in scenario context, that contains the following structure:
{
    "messageId": "id of the message",
    "text": "user text",
    "type": "type of the message",
    "customMessage": {
        "key": "key of the custom",
        "value": "deserialized value if json, null otherwise"
    }
}
type of message can have one of those three values:
- Text
 - CustomMessage
 - Event