Как мне перенаправить диалог через диспетчерскую? - PullRequest
0 голосов
/ 09 мая 2019

Я недавно обновил свой код до последней версии фреймворка ботов.Я не могу начать диалог через обработчик отправки в моем боте.

В настоящее время говорится, что this.addDialog не является функцией.Я думаю, что это может быть потому, что текущий класс DialogBot расширяется от Activity Handler.

Как начать диалог для определенного намерения LUIS?

const { ActivityHandler } = require("botbuilder");
const { LuisRecognizer, QnAMaker } = require("botbuilder-ai");
const { AuthDilaog, AUTH_DIALOG } = require("../dialogs/authDialog");

class DispatchBot extends ActivityHandler {
  /**
   * @param {any} logger object for logging events, defaults to console if none is provided
   */
  constructor(conversationState, userState, dialog) {
    super();

    this.dialog = dialog;

    this.addDialog(new AuthDialog())


    this.conversationState = conversationState;
    this.dialogState = this.conversationState.createProperty("DialogState");
    const dispatchRecognizer = new LuisRecognizer(
      {
        applicationId: process.env.LuisAppId,
        endpointKey: process.env.LuisAPIKey,
        endpoint: `https://${
          process.env.LuisAPIHostName
        }.api.cognitive.microsoft.com`
      },
      {
        includeAllIntents: true,
        includeInstanceData: true
      },
      true
    );

    const qnaMaker = new QnAMaker({
      knowledgeBaseId: process.env.QnAKnowledgebaseId,
      endpointKey: process.env.QnAAuthKey,
      host: process.env.QnAEndpointHostName
    });

    this.dispatchRecognizer = dispatchRecognizer;
    this.qnaMaker = qnaMaker;

    this.onMessage(async (context, next) => {
      // First, we use the dispatch model to determine which cognitive service (LUIS or QnA) to use.
      const recognizerResult = await dispatchRecognizer.recognize(context);

      // Top intent tell us which cognitive service to use.
      const intent = LuisRecognizer.topIntent(recognizerResult);

      // Next, we call the dispatcher with the top intent.
      await this.dispatchToTopIntentAsync(context, intent, recognizerResult);

      await next();

      //
    });

    this.onMembersAdded(async (context, next) => {
      const welcomeText =
        "Type a greeting or a question about the weather to get started.";
      const membersAdded = context.activity.membersAdded;

      for (let member of membersAdded) {
        if (member.id !== context.activity.recipient.id) {
          await context.sendActivity(
            `Welcome to Dispatch bot ${member.name}. ${welcomeText}`
          );
        }
      }

      // By calling next() you ensure that the next BotHandler is run.
      await next();
    });
  }

  async dispatchToTopIntentAsync(context, intent, recognizerResult) {
    switch (intent) {
      case "blackboard":
        await this.processSample(context, recognizerResult.luisResult);
        break;
      default:
        await context.sendActivity(`Dispatch unrecognized intent: ${intent}.`);
        break;
    }
  }

async processSample(context, luisResult) {
     return await context.beginDialog(AUTH_DIALOG)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...