Self Help Desktop Studio - Variables and Macros
Each new Self Help project automatically contains a list of predefined variables and macros.
Writers can also create their own project variables and macros based on the requirements for their Self Help project.
Variables and macros are stored in the Self Help project library. They are available to the entire Self Help project, for any step in any procedure.
Specific characteristics of variables and macros
- A variable can store several types of data, i.e. Boolean, text, etc.
- Predefined variables are used to retrieve information on the current step, the current procedure or the logged-in user.
- A project variable can be defined as a constant and assigned a fixed value. If this is the case, the variable cannot vary depending on the context.
- A macro is a JavaScript expression.
- Predefined macros are used to modify dates, numbers and tables.
- A project macro can be defined as a script or as a condition.
Using variables and macros
You can use variables and macros to:
- Display data during a procedure.
- Run calculations and display the results in a procedure step.
- Define the conditions for a branch in a procedure step.
- Define the visibility condition for content in a procedure step.
- Configure a connector.
- Define input and output parameters.
Examples
- Retrieve and display the email address of the user running the current step ==> Use the executionContext.user.email predefined variable
- Run calculations or format content ==> Use a predefined macro
- Display the label of an action button based on the language of the logged-in user ==> Use a project macro
Notes
- All variables and macros, both predefined and project, are stored in the Library folder of each Self Help project. As such, they are available to the entire project, for any step in any procedure.
- Predefined variables and macros are provided by EasyVista. You cannot delete or modify an existing one.
- Project variables and macros can be created as follows:
- Automatically, after importing or copying any content (e.g. procedure, resource, etc.) associated with one or more variables and/or macros into the Self Help project.
- Manually, by writers with write access to the Self Help project.
- Project variables can also be created automatically when designing a form. One project variable will automatically be created for each field in the form.
- Project macros can also be created in the Macro tab of the Description pane in a procedure step. In this case, the macro will run before the step is displayed and will only be applicable to the current procedure.
- The Standard project template contains all predefined variables and macros.
Best Practice
- Create a variable in the project library for items of information that may appear in several procedures of the Self Help project. This way, if you need to update any item of information, you can simply modify the variable in a single place. Your modification will automatically be propagated to all procedures where it is used.
example Display the virtual agent name in the content of certain procedures
- Create a variable called CHATBOT_NAME in the library.
- If you need to update the virtual agent name, modify the content of the variable in the library.
Variables
Different types of variables
Type | Description | |
---|---|---|
Boolean | The variable can contain the True or False value. | |
Date | The variable can contain a date in the following format, YYYY,MM,DD,HH,MM,SS. | |
Undefined | The variable can contain an expression. | |
Number | The variable can contain a numeric value. | |
Complex object | The variable can contain other variables. It is used to organize the library. | |
Table | The variable can contain a table in the following format, ["Value 1", "Value 2", "Value 3", etc.]. These values can be text or numbers. | |
Text | The variable can contain a string of characters. |
List of predefined variables
Variable | Type | Description | |
---|---|---|---|
currentNode: Information on the current step |
|||
currentNode.automatic | Boolean | Type of step
|
|
currentNode.id | Text | ID of the step | |
currentNode.name | Text | Step name | |
currentNode.procedureName | Text | Title of the procedure used as the entry point | |
currentNode.resourcesTab | Table | List of resources linked to the step, i.e. table with the ID, name and URL of each resource | |
currentNode.textId | Text | ID of the Text resource that stores the content of the step | |
currentNode.type | Text | Type of step, e.g. Action, Page with Choices, etc. | |
executionContext: Information on the current procedure instance |
|||
executionContext.agentRef | Text | Reference of the virtual agent calling the procedure | |
executionContext.channel | Text | Execution channel of the procedure
|
|
executionContext.contextId | Text | ID of the current step | |
executionContext.country | Fixed length string | Code of the country associated with the procedure instance language, e.g. FR, GB, etc. | |
executionContext.currentNodeTimeOnEnter | Integer | Execution time of the current step | |
executionContext.endType | Text | Way in which the procedure ended | |
executionContext.expertSessionId | Text | ID of the expert session when writers generate a direct link in the Desktop Studio and click Launch the procedure | |
executionContext.instanceId | Text | ID of the procedure instance | |
executionContext.isDebug | Text | Mode for running the procedure
|
|
executionContext.isMobile | Boolean | Procedure run in a skin for mobile display | |
executionContext.lang | Fixed length string | Language in which the procedure is run, e.g. EN, FR | |
executionContext.lastNodeDuration | Integer | Consultation time of the last step (= end time of the procedure instance) | |
executionContext.log | Text | Contents of the execution report
Note: The report is created progressively at the same time as the user journey in the procedure. It can be configured step by step. |
|
executionContext.referrer | Text | Referrer URL of the procedure instance | |
executionContext.server | Text | URL of the Self Help server hosting the procedure | |
executionContext.sessionLess | Boolean | Access to the procedure by logging in or by generating a direct link | |
executionContext.startScenarioTime | Integer | Start time of the procedure instance | |
executionContext.userAgent | Text | Information on the Web browser used by the procedure | |
executionContext.userSessionId | Text | ID of the user session for connections via the portal | |
executionContext.procedure: Information on the current procedure |
|||
executionContext.procedure.category | Text | Category of the procedure, defined in the ProcedureCategory metadata | |
executionContext.procedure.categoryDescription | Text | Description of the procedure category, defined in the CategoryDescription metadata | |
executionContext.procedure.domain | Text | Domain where the procedure is found | |
executionContext.procedure.id | Text | Unique ID (GUID) of the procedure | |
executionContext.procedure.isPublished | Boolean | Publication status of the procedure:
|
|
executionContext.procedure.metaDescription | Text | HTML tags associated with the procedure, in a translated string of characters, defined in the ProcedureMetaDescription metadata | |
executionContext.procedure.name | Text | Title of the procedure | |
executionContext.procedure.project | Text | Name of the Self Help project where the procedure is found | |
executionContext.procedure.projectVersion | Text | Version number of the Self Help project where the procedure is found | |
executionContext.procedure.properties | Complex object | List of procedure metadata (metadata names and content):
|
|
executionContext.procedure.subCategory | Text | Sub-category of the procedure, defined in the ProcedureSubCategory metadata | |
executionContext.procedure.subCategoryDescription | Text | Description of the procedure sub-category, defined in the ProcedureSubCategoryDescription metadata | |
executionContext.procedure.versionId | Text | ID of the procedure version | |
executionContext.procedure.viewable | Boolean | Used to indicate if the procedure should be indexed by the search engine (value True) or not (value False) | |
executionContext.user: Information on the user running the current procedure |
|||
executionContext.user.email | Text | Email address of the user | |
executionContext.user.firstName | Text | First name of the user | |
executionContext.user.groups | Plain text table | List of groups where the user belongs | |
executionContext.user.id | Text | ID of the user | |
executionContext.user.lastName | Text | Last name of the user | |
executionContext.user.login | Text | User login entered during authentication | |
executionContext.user.properties | Complex object | List of additional user properties in a table with the property names and values
|
|
executionContext.user.title | Text | Title of the ID, e.g. Mr. or Ms. | |
Other variables |
|||
custom | Text | Generic global variable
Note:
|
|
stopMessage | Text | Variable whose contents appear in the Message column for statistics available in the Desktop Studio in publish mode
Note: Variable empty by default. |
Screen description: Project Variable
Name: Name of the project variable.
- The name must be unique for the Self Help project.
Data type: Type of data in the project variable, e.g. text, number, date, etc.
Constant: Used to specify if the project variable is a fixed value (box is checked) or not (box is not checked).
- If you create a constant, you must specify its default value.
Default value: Default value defined for a project variable.
- There must be a default value if the Constant box is checked.
- Value Format: Used to specify if the default value is a simple value or an expression.
example
- Simple value: CHATBOT_NAME variable containing the name of the virtual agent
==> CHATBOT_NAME = evie
- Expression: UserName variable containing the first and last names of the logged-in user.
==> UserName = executionContext.user.firstName + executionContext.user.lastName
Description: Description of the project variable.
Procedures
How to create a project variable
Step 1: Display the Self Help project library
1. Select the Self Help project in the tree structure of the Explorer pane.
2. Double-click the Library folder.
The library will display predefined variables and macros as well as project variables and macros.
Step 2: Create the project variable in the library
1. Right-click Project Variables and select New > Variable from the contextual menu.
2. Define the new variable. See the description
- Check the Constant box if the project variable is a fixed value.
- Select the Simple option or the Expression option depending on the format of the default value. Specify the default value.
- If you create a constant, you must specify its default value.
3. Click Finish.
The new project variable will appear in the Self Help project library and will be available to all procedure steps.
See:
How to display a variable in a step
Step 1: Display the step of the procedure
1. Select the Self Help project in the tree structure of the Explorer pane.
2. Double-click the procedure.
The procedure will appear in the Conception pane.
3. Click the step displayed in the flow chart.
The content of the step will appear in the Description pane.
Step 2: Insert the variable in the content of the step
1. Expand Library > Predefined Variables by clicking .
2. Click and drag the variable from the Explorer pane to the content of the step in the Description pane.
The inserted variable will appear with a gray outline.
Step 3: Check that the variable is correctly displayed when the procedure is run
1. Click in the toolbar and select
Launch the procedure.
The step will appear in your Web browser.
2. Check that the variable has been replaced with the correct content.
Use cases
Use a variable to vary the content of a procedure
This use case allows you to indicate to a user which branches s/he has already been through by displaying an icon on the right of these branches.
Use a variable in a branch condition
This use case explains how to check whether users belong to the company when they submit a request to change their password. It uses a condition with the predefined variable called executionContext.user.email that will check if the user email address contains the value @company.com. Next, based on the results of the condition, it will direct users to the appropriate branch of the procedure.
Step 1: Create the procedure
1. Create a new procedure in your Self Help project.
See How to create a Self Help procedure
2. Name the procedure I want to change my password.
Step 2: Add an Action with Switch step
1. Insert an Action with Switch step in your procedure.
2. Name the step Email test.
Two branches will be created.
- The top branch <Condition> manages the response to be provided if the user email address contains @company.com@.
- The bottom branch Default manages the response to be provided if it does not contain the value above.
Step 3: Define the condition for checking the user email address
1. Double-click the <Condition> field in the top branch.
The window for defining the condition will appear.
2. Define the condition for checking that the user email address contains @company.com@.
- Click
next to the first field in the condition.
The list of project variables available in the Self Help project will appear.
- Select the predefined value called executionContext.user.email to retrieve the user email address.
- Specify the other fields in the condition.
- Operator = contains
- Search value = @company.com
3. Click Finish.
The condition will be refreshed.
Step 4: Define the procedure steps
1. Go to the Condition branch (top branch) and create the steps that will guide users in changing their password.
2. Go to the Default branch (bottom branch) that will become active when the condition is not satisfied, i.e. the user email address does not contain @company.com. Create a step asking users to contact their IT Department.
Macros
Different types of macros
Type | Description | |
---|---|---|
Classic | The macro is a script that will return a result when it is run. | |
Conditional | The macro is a condition that will return a value depending on the result obtained, i.e. whether or not its condition is satisfied. |
List of predefined macros
Macro | Name | Description | ||
---|---|---|---|---|
Date: Update | date_update | Used to add or subtract years, months, days, hours, minutes and seconds from a date and return the modified date. Syntax: date_update(dateToChange, years, months, days, hours, minutes, seconds) Specify the following parameters: date to update, difference in years, difference in months, difference in days, difference in hours, difference in minutes, difference in seconds example date_update(myDate, 0, -1, 1, 0, 0, 0)
|
||
Number: format | num_format | Used to return a number in text format, rounded off to the specified number of decimal places. Syntax: num_format(value, numDecimals) Specify the following parameters: number to format, number of decimals example num_format(0.148632, 2)
|
||
Number: Round off to decimal | num_round | Used to return a number rounded off to the specified number of decimal places. Syntax: num_round(value, numDecimals) Specify the following parameters: number to round off, number of decimals example num_round(42.7845652, 2)
|
||
Table: Add to start | tab_addfirst | Used to add an element to the start of the table and return the value of the modified table. Syntax: tab_addfirst(table, element) Specify the following parameters: table, element to add example The city table contains the following elements, [Paris, Nantes, Grenoble]
|
||
Table: Add to end | tab_addlast | Used to add an element to the end of the table and return the value of the modified table. Syntax: tab_addlast(table, element) Specify the following parameters: table, element to add example The city table contains the following elements, [Paris, Nantes, Grenoble]
|
||
Table: Contains element | tab_contains | This will return the True value if an element is present in the table and the False value if it is missing. Syntax: tab_contains(table, element) Specify the following parameters: table, element to find example The city table contains the following elements, [Paris, Nantes, Grenoble]
|
||
Table: Remove element | tab_remove | Used to remove an element from the table and return the value of the modified table. Syntax: tab_remove(table, element) Specify the following parameters: table, element to remove example The city table contains the following elements, [Paris, Nantes, Grenoble]
|
||
Table: Swap rows and columns | tab_swap_row_col | Used to swap the rows and columns of a table and return the value of the modified table. Syntax: tab_swap_row_col(table) Specify the following parameters: table example The country table contains the following elements, [{Paris, France}, {London, Great Britain}]
|
||
Text: Equal non-case-sensitive | text_equalsIgnoreCase | Used to return the True value if two strings of characters are identical and the False value if they are different, without taking the case into account. Syntax: text_equalsIgnoreCase(string1, string2) Specify the following parameters: string1, string2 example
|
Screen description: Project Macro
Name: Name of the project macro.
- The name must be unique for the Self Help project.
Result type: Type of result expected from the project macro, e.g. text, number, date, etc.
Parameters: List of input parameters for the project macro.
- Click + Add a parameter to specify each parameter of the project macro.
Description: Description of the project macro.
Type of macro: Used to specify if the macro is a classic or conditional macro. If it is classic, you must define a script in the Macro body field. If it is conditional, you must define the condition in the three following fields, IF, THEN, and ELSE.
example
- Classic macro: The description() macro will format the contents of the predefined variable, executionContext.log, by replacing line breaks.
- Conditional macro: The info() macro will return the Find out more value if the procedure instance language is English. If this is not the case, it will return the Plus d’informations sur le wiki value.
Procedures
How to create a project macro
Step 1: Display the Self Help project library
1. Select the Self Help project in the tree structure of the Explorer pane.
2. Double-click the Library folder.
The library will display predefined variables and macros as well as project variables and macros.
Step 2: Create the project macro in the library
1. Right-click Project Macros and select New > Macro from the contextual menu.
2. Define the new macro. See the description
- Select the Classic or Conditional option depending on the type of macro. Next, define the script or the condition in the fields displayed.
3. Click Finish.
The new project macro will appear in the Self Help project library and will be available to all procedure steps. See How to display a variable in a step
See detailed step by step on Self Help portal
This use case allows you to indicate to a user which branches s/he has already been through by displaying an icon on the right of these branches.