Как запросить базу знаний, используя QnaId - PullRequest
1 голос
/ 23 апреля 2020

Когда присутствует мультипроцесс, вместо добавления кнопок к go, я бы хотел добавить их прямо в мою карту.

У меня есть ответы на вопросы, могу ли я получить ответ только с помощью идентификатора?

1 Ответ

1 голос
/ 24 апреля 2020

Я думаю, что правильный способ сделать это - собрать qnaState из ответа, взять текст из приглашения и затем создать новый запрос с этими параметрами.

Итак, сначала для справки, вот я делаю вызов создателя QnA.

        if (qnAcontext == null) {
            qnAcontext = {
                PreviousQnaId: 0,
                PreviousUserQuery: null
            }
        }

        const qnaResult = await request({
            url: url,
            method: 'POST',
            headers: headers,
            json: {
                question: query,
                top: 3,
                context: qnAcontext
            }
        });

У меня есть этот код в вспомогательной функции, которую я вызываю из моего диалогового окна qna, но я думаю, что местоположение не важно. Вы можете видеть, что я установил qnAcontext по умолчанию. Это то, что вы будете обновлять, чтобы совершать вызовы на основе подсказок.

В результате вы можете получить кнопки подсказок через

        var prompts = null;
        if(qnaResult[0].context != null){
            prompts = qnaResult[0].context.prompts;
        }

Я раньше этого не делал, поэтому я Я не совсем уверен, откуда вы можете получить текстовый атрибут, но я предполагаю, что он в qnaResults[0].context.prompts[0].text. Вам нужно будет взглянуть на объект приглашения для подтверждения. Вам также нужно создать новое состояние и взять первую часть ответа. Это можно сделать с помощью

            var qnAcontext = {
                PreviousQnaId: qnaResult[0].id,
                PreviousUserQuery: activity.text
            }

            answerText = qnaResult[0].answer;

Теперь просто сделайте еще один вызов, используя новый qnAContext и текст приглашения в качестве запроса. Технически, если у вас нет последующего вопроса, заданного только в качестве контекста, вам не нужно возиться с qnAcontext. Вы должны просто иметь возможность использовать текст приглашения в качестве следующего запроса, и ответ должен появиться. Если ответ только для контекста, вам нужно будет передать объект qnAcontext.

Редактировать: Прямой ответ на ваш вопрос о запросе напрямую с помощью qnaId см. В добавленной ссылке ниже Кайл Делани.

...