NB:
La version française de la documentation Athena n’est pas encore disponible
Si vous le souhaitez, vous pouvez consulter la version en anglais disponible si dessous :
Definition
A label is a kind of reusable template.
Here is an example :
? HELLO
    - {MY_LABEL}
? HELLO JOHN
    - {MY_LABEL}
[MY_LABEL]
    - Hello there
In this script, MY_LABEL is label, the syntax follows this rules :
- Starts a line
 - Label identifier are between square brackets
 - Label identifier is composed of letters only and underscores.
 - Label is followed by templates
 
In that case, each templates call the label ‘MY_LABEL’, so the rendered template is Hello there
Parameters
A label can define parameters :
? HELLO
    - {MY_LABEL}
? HELLO JOHN
    - {MY_LABEL("John")}
[MY_LABEL(name)]
    - Hello %name
MY_LABEL now defines a ‘name’ parameter, and can be used in template.
- Hello -> Hello
 - Hello john -> Hello John
 
A label can have multiple Parameters, the syntax follows this rules :
- all parameters are in curly brackets, between label identifier and closing square brackets
 - parameters are separated by coma
 
To call a label with parameters, it follows the same rules, but you need to put values in double quotes.
Default
Athena defines a special label called : DEFAULT
This label is called each time the engine cannot find a matching scenario :
? HELLO
    - {MY_LABEL}
? HELLO JOHN
    - {MY_LABEL}
[MY_LABEL]
    - Hello there
[DEFAULT]
    - Sorry i did not get that
In this script, if the user says ‘Bye’, the agent will respond with ‘Sorry i did not get that’
Sub Scenarios
A label can have sub scenarios :
? HELLO
    - {MY_LABEL}
[MY_LABEL]
    - How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
This is equivalent to :
? HELLO
    - How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
If the scenario defines a sub scenario, and so the label, the default behavior of athena is to override the root sub scenario with the label sub scenario :
? HELLO
    - {MY_LABEL}
        ? GREAT
            - That's good :)
        ? TERRIBLE
            - Ohhhhhh
[MY_LABEL]
    - How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
This is equivalent to : (The sub scenario is removed.)
? HELLO
    - How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
Successive call label
A template can have successive calls to labels :
? HELLO
    - {YOUR_NAME} {MY_LABEL}
        ? GREAT
            - That's good :)
        ? TERRIBLE
            - Ohhhhhh
[YOUR_NAME]
    - Hello John
[MY_LABEL]
    - How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
All call labels are generated, from the left to the right. Here we have two generations :
First :
? HELLO
    - Hello John {MY_LABEL}
[MY_LABEL]
    - How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
You can notice in this example that the sub scenario is removed, even if the label YOUR_NAME doesn’t have a sub scenario.
Second :
? HELLO
    - Hello John How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
Call label as parameter
A label with parameters can be called with a call to a label :
? HELLO
    - {YOUR_NAME("{BOT_NAME}")} {MY_LABEL}
        ? GREAT
            - That's good :)
        ? TERRIBLE
            - Ohhhhhh
[BOT_NAME]
    - Alf
[YOUR_NAME(bot_name)]
    - Hello John, my name is %bot_name
[MY_LABEL]
    - How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
Never forget to surround the call label between double quotes !
Successive outputs are :
- {YOUR_NAME(“Alf”)} {MY_LABEL}
 - Hello John, my name is Alf {MY_LABEL}
 - Hello John, my name is Alf How are you today ?
 
Sub Scenarios combined
Because a call to a label override the current sub scenario, a syntax exists to modify the behavior :
? HELLO
    - {+MY_LABEL}
        ? GREAT
            - That's good :)
        ? TERRIBLE
            - Ohhhhhh
[MY_LABEL]
    - How are you today ?
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?
The + before the label identifier means that the sub scenario will be aggregated to the current sub scenario :
Which is equivalent to
? HELLO
    - How are you today ?
        ? GREAT
            - That's good :)
        ? TERRIBLE
            - Ohhhhhh
        ? FINE
            - Glad to hear that !
        ? BAD
            - What can I do for you ?