Recommended Practice for Bot Import and Export on the XO Platform

Introduction

The XO Platform helps teams rapidly develop their Virtual Assistants using various features, including:

  1. Full and Partial Import/Export: Developers can take a copy of their current production version and build on top of it. Once modifications are complete, they can import the changes back into the production version using the Partial Import feature.
  2. Full and Partial Publish: After importing the latest changes, developers can publish the changes as a full publish or publish the changes alone.

These features enable collaborative work and help manage CI/CD pipelines for larger teams.

Best Practices

Always export the current published version and make changes on top of it

We strongly recommend that before starting the import/export process, always ensure that the bot is functioning properly over the desired channels.

The XO Platform has many dependencies, including:

  • Sub-Dialogs present in a main Dialog
  • Reusable Nodes shared across Dialogs
  • Unique Dialog Names (no two Dialogs can have the same name)

Each Dialog has a unique internal identifier used by the system to track and map. It’s recommended to always export the latest version of the Bot with all dependent Tasks and build changes on top of it. This ensures you have the latest identifiers of the components from the backend, which helps with easy import of the latest changes.

While importing as well, import one Bot at a time to Bot2. This ensures we have all Tasks and configurations serialized in a specific order.

Single Environment Customers

  1. Export the latest Published Version of the Bot (Bot1)

  2. Import Bot1 as a new Bot (Bot2)

  3. If there are more teams working, import Bot1 as Bot3, Bot4, etc.

  4. Make changes to Bot2, Bot3, and Bot4

  5. Merge the changes by exporting from all newly created Bots and importing (with all dependent tasks) into one (e.g., export Bot3 and Bot4 changes, then partially import into Bot2)

  6. Import one bot at a time

  7. Test Bot2 thoroughly, then export and fully import into the production Bot (Bot1)

  8. Repeat the cycle for any new changes

Multi-Environment Customers

  1. Export the latest Published Version from the Production Environment as Bot1
  2. Import Bot1 into the Staging/Test Environment as Bot2
  3. Each team can import Bot1 into their Development Environment as Bot3, Bot4, Bot5, etc.
  4. Make changes to Bot3, Bot4, Bot5
  5. Export the copies of Bot3, Bot4, Bot5 (with dependent tasks) and partially import into Bot2 in the Staging/Test Environment
  6. Test Bot2 thoroughly, then export and fully import into the production Bot (Bot1)
  7. Repeat the cycle for any new changes

Advantages of this Approach

  1. Maintaining the reference ID of Dialogs helps with easy import of new changes.
  2. The Test copy (Bot2) helps validate that the changes are properly imported and working as expected.
  3. Fully importing Bot2 into Bot1 adds the latest changes without issues.

Dos and Don’ts

  1. Do not manually change the name of the Dialog in the Development copies of the Bot (e.g., Bot3, Bot4, Bot5). Always change the name in the Test copy (Bot2) that will be fully imported into the Production version (Bot1).

  2. If you must import a dialog task without the dependent tasks, first disassociate the dependent tasks from the flow, ensure no sub-intents are mapped to amend entities, and node-groups, and manage interruptions settings of the bot. Clean up stray nodes that are not connected to the flow Or are not required.

  3. Try to do a Full Import and Full Publish of the Bot with the latest changes as much as possible.

  4. Always prefer to import a dialog along with dependent tasks.

  5. If you must import a dialog task without the dependent tasks, first disassociate the dependent tasks from the flow, ensure no sub-intents are mapped to amend entities, and node-groups, and manage interruptions settings of the bot. Clean up stray nodes that are not connected to the flow Or are not required.

Dependent task settings while exporting the bot for reference