(This feature was introduced in ver8.0)
Chances are you have defined tens or hundreds of (Global or Content) variables and used them in the bot definitions. These variables could have been used in defining text prompts or messages, JavaScript, transitions, and service call definitions. Loading all these variables for every single task irrespective of their usage would lead to delays in bot response times impacting the user experience.
Using Namespaces you can categorize variables and map these namespaces to various components of the bot definition. Kore.ai platform would load the variables only from the mapped namespaces while executing specific components.
Implementation
Once Variable Namespaces is enabled:
- A Default namespace is automatically created by the platform which cannot be deleted or modified;
- All tasks and variables, if any, are automatically associated with this default namespace;
- You can define and manage namespaces;
- You can add or remove the Global and Content variables to these namespaces. A variable can belong to one or more namespaces. You cannot remove the Global and Content variables from the default namespace.
- You can map namespaces to the various components of the bot definition like:
- Tasks which include Dialog and Actions;
- Nodes in Dialog Task;
- Knowledge Graph Task;
- Small Talk Task;
- Standard Responses; and
- Event Handlers.
- If you remove the namespace mapping for the components. But if you mapped components with any namespace, then the execution of these components may fail if you have included one or more variables in defining the component.
Once Variable Namespaces are mapped, the following steps are implemented by the platform during the task execution :
- only the variables that belong to the namespace mapped to a component will be loaded;
- if the variable that is not mapped is referenced by the component, it will flag a “variable not found” error;
- the same logic applies to Bot functions used within the tasks.
Editing
From the Variables (Global or Content) page under Settings -> Config Settings, you have the option to Manage Namespaces.
Use this option to view, edit, or delete namespaces. Deleting a namespace that is mapped to any component is restricted. You need to unmap the namespace from all associated components before deletion. As mentioned earlier, you cannot delete the default namespace.
Mapping
Once created, the namespace needs to be mapped to variables, tasks, and other bot components. This will ensure that only the variables that belong to the namespace mapped to a component would be loaded at the time of execution.
Variable Mapping
At the time of variable creation (global and content), you can map the namespace. By default, the variables would be assigned to the default namespace. A variable can be mapped to multiple namespaces. You can change the mapping later by editing the variable definition.
Components
All the components have a Manage Variable Namespaces action item which can be used to map the component with a particular namespace.