аргументы не возвращают ожидаемый результат LUIS после реализации BotAuth - PullRequest
0 голосов
/ 27 июня 2018

Я создаю чат-бота с MS Bot Framework в Nodejs и LUIS. Недавно я пытался получить определенную информацию из API MS Graph, и (вроде) успешно реализовал BotAuth и могу получить требуемую информацию.

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что для диалогового окна, реализующего BotAuth, я не могу получить обычный args, который поставляется с диалоговыми окнами, запускаемыми с помощью LUIS-intets. Таким образом, я не могу получить entities, которые мог ввести пользователь. Другие диалоги, которые не реализуют BotAuth, не имеют проблем с этим.

То, что я сейчас получаю от args, это:

{ response: undefined, resumed: 4 }

Я предполагаю, что проблема связана с частью [].concat в этом разделе:

bot.dialog('refreshSchDialog-oauth', [].concat(
    ba.authenticate("aadv2"),
    (session, args, skip) => {
        let user = ba.profile(session, "aadv2");
        session.endDialog(user.displayName);

        session.userData.accessToken = user.accessToken;
        session.userData.refreshToken = user.refreshToken;

        console.log('args');
        console.log(args);

        if (user.accessToken) {
            session.send('got leh');

            // valid access token, check if luis has any entities (MV name)
            // if there is, store conversationData and move to next dialog
            if (args.entities) {
                for (i = 0; i < args.entities.length; i++) {
                    if (args.entities[i].type == 'dbName') {
                        session.conversationData.mvName = args.entities[i].entity;
                        session.send(args.entities[i].entity);
                    }
                }
            }

            session.beginDialog('refreshSchDialog');
        } else {
            // no valid access token
            // TODO error message
        }
    }))
    .triggerAction({
    matches: 'refreshSchema',
    intentThreshold: 0.3
});

Могу ли я знать, почему args не возвращает информацию из LUIS?

1 Ответ

0 голосов
/ 27 июня 2018

Глядя на код BotAuth, кажется, что диалоговое окно «Аутентификация» возвращает пользователя, если он был должным образом аутентифицирован, или «ложь» в случае сбоя диалога. Он не копирует аргументы из LUIS. Я бы изменил ваш код так, чтобы первая функция в вашем водопаде сохраняла данные LUIS в session.dialogData, затем вызывала ba.authenticate, а затем использовала оба результата на последнем шаге водопада.

...