Как добавить фильтр в REST API Query для просмотра ответов от QnAmaker? - PullRequest
2 голосов
/ 23 января 2020

Я использую следующий код в своем чат-боте (используя v4 azure каркас MS-бота), чтобы запросить вопрос и ответы (код на стороне клиента - используя простые JavaScript и J Query),

  function generateAnswer() 
  {
        var question = {
            question: "will you marry me"
        }
        $.ajax({
            type: "POST",
            url: "https://YourEndPointURL/qnamaker/knowledgebases/eb895acb-e034-4f7c-asda7c-1955458ecec6/generateAnswer&$filter=source eq 'Editorial'",
            data: JSON.stringify(question),
            beforeSend: function (xhr) {
                xhr.setRequestHeader('Authorization','EndpointKey c44444_Your_Endpoint_Key_4556');
            },
            dataType: "json",
            contentType: "application/json",
            success: function (data) {
                console.log(data);
                console.log(data.answers[0].answer);   
            }
        });
    }

при использовании этого кода я получаю следующее сообщение об ошибке

Требуемый ресурс был удален, изменилось его имя или временно недоступен.

Поэтому, пожалуйста, помогите мне с правильным синтаксисом , чтобы применить фильтр для моего запроса.

1 Ответ

1 голос
/ 23 января 2020

Согласно https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/metadata-generateanswer-usage вам необходимо указать фильтры в теле (свойство data)

function generateAnswer() 
  {
        var data = {
            question: "will you marry me",
            strictFilters: [
            {
              "name": "source",
              "value": "Editorial"
            }],
        }
        $.ajax({
            type: "POST",
            url: "https://YourEndPointURL/qnamaker/knowledgebases/eb895acb-e034-4f7c-asda7c-1955458ecec6/generateAnswer",
            data: JSON.stringify(data),
            beforeSend: function (xhr) {
                xhr.setRequestHeader('Authorization','EndpointKey c44444_Your_Endpoint_Key_4556');
            },
            dataType: "json",
            contentType: "application/json",
            success: function (data) {
                console.log(data);
                console.log(data.answers[0].answer);   
            }
        });
    }

Кроме того, вам не хватает 2 вещей:

  1. ваше имя хоста, для замены YourEndPointURL
  2. ключ конечной точки, для замены c44444_Your_Endpoint_Key_4556
...