Я получаю сообщение об ошибке «[onTurnError]: StatusCodeError: 404 - undefined» при запуске диалога, вызывающего QnA Maker в узлах Microsoft Bot Framework SDK4 - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь вызвать QnA Maker через диалог, который я создал.Я создал объект qnamaker в диалоге и хочу передать ответ пользователя на приглашение (из предыдущего шага) в метод getAnswers () QnAMaker.Но ответ getAnswers () просто возвращает «[onTurnError]: StatusCodeError: 404 - undefined».

Я тестирую бота локально на эмуляторе бота.Я создал базу знаний на qnamaker.ai и добавил QnAKnowledgebaseId, QnAAuthKey, QnAEndpointHostName в файл .env.Я звоню QnADialog из другого диалога (mainDialog).

Пожалуйста, помогите мне!Спасибо!

Вот код для созданного мною QnADialog. Он имеет диалоговое окно waterafall, содержащее 2 шага.Первый шаг (initialStep) запрашивает у пользователя запрос, второй шаг вызывает qnamaker.getAnswers (step.context), которому я передал step.context.Я уже включил QnAMaker, используя botbuilder-ai.

class QnADialog extends ComponentDialog{
    constructor(id){
        super(id||QNA_DIALOG);

        this.addDialog(new TextPrompt(ASK_QUERY_PROMPT))
        this.addDialog(new WaterfallDialog(WATERFALL_DIALOG, [
            this.initialStep.bind(this), 
            this.callQnAMakerStep.bind(this)
        ]));

        this.initialDialogId = WATERFALL_DIALOG;

        try {
           this.qnaMaker = new QnAMaker({
                knowledgeBaseId: process.env.QnAKnowledgebaseId,
                endpointKey: process.env.QnAAuthKey,
                host: process.env.QnAEndpointHostName
            });
        } catch (err) {
            console.log(`QnAMaker Exception: ${ err } Check your QnAMaker configuration in .env`);
        }

    }

    async initialStep(step){
        console.log("QnADialog.initialStep :")
        await step.context.sendActivity("Hello testing!");
        return step.prompt(ASK_QUERY_PROMPT, 'Ask any query you have...');
    }

    async callQnAMakerStep(step){
        var query = step.result;
        console.log("qnaDialog.callQnAMakerStep calling QnA Maker...");

        const qnaResults = await this.qnaMaker.getAnswers(step.context);
        console.log("qnaResult is : "+ qnaResult);

        // If an answer was received from QnA Maker, send the answer back to the user.
        if (qnaResults[0]) {
            await step.context.sendActivity(qnaResults[0].answer);

        // If no answers were returned from QnA Maker, reply with help.
        } else {
            await step.context.sendActivity('No QnA Maker answers were     found.');
        }

        return await step.endDialog();
    }
}
...