It’s possible to load and unload intents on-the-fly.

//Unload Ping intent
this.app.IntentRegistry.unload('App.Example.Intent.Ping');

//Load Ping intent
this.app.IntentRegistry.load('App.Example.Intent.Ping');
Ping
Pong
Unload Ping
Ping has now been unloaded
Ping
Sorry, I don't understand what you mean
Load Ping
Ping loaded
Ping
Pong

Unloading an intent will untrain all classifers and remove the intent from the ObjectRegistry so it cannot be called again.

Entities and their data will be untouched.

A call back called shutdown will be called before untraining and removing the intent from the registry.

module.exports = class PingIntent extends Intent {

  setup() {
    this.train(['ping','pong']);
  }

  response() {
    return 'Pong';
  }

  shutdown() {
    console.log('Ping shutting down');
  }

}