setBot(bot, activateRouting = false, routingThreshold = 0.7) {
    bot.recognizer(this);
    if (!activateRouting) {
      return;
    }
    const self = this;
    // eslint-disable-next-line no-underscore-dangle, no-param-reassign
    bot._onDisambiguateRoute = function disambiguate(
      session,
      results,
      cb = () => {}
    ) {
      if (self.onBeginRouting && !self.onBeginRouting(session)) {
        return cb();
      }
      if (session.message && session.message.text) {
        self.recognizeTwice(session, (err, result) => {
          if (result.score > routingThreshold) {
            if (
              self.onRecognizedRouting &&
              !self.onRecognizedRouting(session, result)
            ) {
              return cb();
            }
            self.processActions(session, result, () => {
              if (result.answer && result.answer !== '') {
                self.processAnswer(session, result.answer);
              }
              return cb();
            });
            return undefined;
          }
          if (
            self.onUnrecognizedRouting &&
            !self.onUnrecognizedRouting(session, result)
          ) {
            return cb();
          }
          self.defaultRouting(bot, session, results);
          return cb();
        });
      } else {
        if (self.onNoTextRouting && !self.onNoTextRouting(session)) {
          return cb();
        }
        self.defaultRouting(bot, session, results);
        return cb();
      }
      return undefined;
    };
  }
Sets the recognizer to a Microsoft bot framework universal bot instance.
Also, the default bot routing can be overrided and replaced by the
recognizer routing.
@param {Object} bot Microsoft Bot Framework Universal Bot instance.
@param {boolean} activateRouting True if default routing should be overrided.
@param {number} routingThreshold Threshold for the score of the intent.