Как использовать REST API QnA Maker для обновления моей базы знаний с использованием собственного JavaScript? - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь использовать Azure REST API для обновления базы знаний, которую я создал с помощью QnA Maker. Там есть ссылка для перехода на консоль тестирования API .

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

function synchronize() {

    var jsonData = {
        "add": {
            "qnaList":[
                {"source": "Custom"},
                {"answer": "Hello"},
                {"questions": ["Hi", "Hello"]}
            ],
        },
        "delete": {
            "sources": ["Custom"]
        },
        "update": {}
    }   

    var request = new XMLHttpRequest();    
    var parameters = {
        "body": jsonData
    }
    request.open("POST", "https://qnawcfaq.azurewebsites.net/qnamaker/knowledgebases/{kbId}}/generateAnswer", true);                    
    request.setRequestHeader("Authorization", "EndpointKey {key}}");
    request.setRequestHeader("Content-type", "application/json");                    
    request.onreadystatechange = function () { //Call a function when the state changes.
        if (request.readyState == 4 && request.status == 200) {
            alert(request.responseText);
        }
    }

    request.send(JSON.stringify(parameters));
}

Я ожидаю что-то вроде следующего:

{
  "operationState": "NotStarted",
  "createdTimestamp": "2018-03-19T07:38:46Z",
  "lastActionTimestamp": "2018-03-19T07:39:29Z",
  "userId": "86bb8390-56c0-42c2-9f81-3de161981191",
  "operationId": "03a4f4ce-30a6-4ec6-b436-02bcdf6153e1"
}

Однако я получаю следующую ошибку:

{
  "error": {
    "code": "BadArgument",
    "message": "Authorization"
  }
}

Значение, которое я использовал в ключе Ocp-Apim-Subscription-Key, работает против их консоли тестирования API, но не работает с приведенным выше кодом. Есть идеи, что мне здесь не хватает?

Спасибо!

Рабочий раствор, загруженный в Github : Решение

1 Ответ

0 голосов
/ 05 апреля 2019

Обновление 1 : после прочтения вопроса спрашивающий хочет создать пару QnAMaker, а не просто запросить ее.Документация по API QnAMaker не очень хороша, а в некоторых случаях устарела или сбивает с толку.Поэтому я делюсь подсказками для обоих сценариев.

Сценарий 1. Создание пар QnAMaker

Создать пары QnAMaker немного сложнее, и я бы рекомендовал начать с образца C # и его Program.cs .Оттуда вы можете преобразовать его в сценарий Java.В документации есть примеры и для других языков, например, для nodejs .

Protip: Запустите Fiddler, пока вы выполняете образцы.Таким образом, вы можете проверить вызов по вызову и порт для почтальона или композитора для ваших тестов.

На основании исходного вопроса правильный вызов выглядит следующим образом:

// Replace {key} with your QnAMaker endpoint key 
// and {kbId} with the id of the knowledgebase you want to upgrade.

function synchronize() {
    var jsonData = {
        qnaList: [
          {
            id: 0,
            answer: 'Hello',
            source: 'Custom Editorial',
            questions: [
              'Hi','Hello'
            ],
            metadata: [
              {
                name: 'category',
                value: 'api'
              }
            ]
          }
        ]
    }

    var request = new XMLHttpRequest();    

    request.open("PATCH", "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/{kbId}", true);                    
    request.setRequestHeader("Ocp-Apim-Subscription-Key", "{key}");
    request.setRequestHeader("Content-type", "application/json");                    
    request.onreadystatechange = function () { 
        //Call a function when the state changes.
        if (request.readyState == 4) {
            alert(request.responseText);
        }
    }

    request.send(JSON.stringify(jsonData));
}

Сценарий 2: Запрос QnAMaker

Для POST /generateAnswer,Ocp-Apim-Subscription-Key устарел, и вы должны использовать собственный URI (хост) вместо westus.api.cognitive.microsoft.com.

Когда QnAMaker стал GA летом прошлого года, заголовок и определение хоста изменились.

Самый простой способ найти правильные настройки для всех ваших параметров - перейти на портал QnAMaker, щелкнув Просмотр кода в своей базе знаний.enter image description here

Оттуда вы найдете правильные настройки для копирования.enter image description here

Сравнение приведенного ниже измененного определения было опубликовано в объявлении ГА .

Announcement

...