Невозможно достичь конечной точки после миграции QnAMaker - PullRequest
0 голосов
/ 18 мая 2018

У нас есть бот, который был в производстве в течение нескольких месяцев.Бот, сконфигурированный с сервисом предварительного просмотра, работает отлично.

Итак, я выполнил шаги в документе по миграции.Я создал службу QnA в Azure, а затем создал базу знаний.Я импортировал свою базу знаний, сохранил / обучил и опубликовал.

В своем файле web.config я заменил следующие значения:

<add key="QnAKnowledgeBaseId" value="foo" />
<add key="QnaSubscriptionKey" value="bar" />
<add key="QnaMakerUpdateKnowledgeBaseEndpoint" value="https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases" />

Я использовал значения, данные после публикации своей базы знаний, поэтому

POST /knowledgebases/<QnAKnowledgeBaseId>/generateAnswer
Host: <QnaMakerUpdateKnowledgeBaseEndpoint>
Authorization: EndpointKey <QnaSubscriptionKey>

После изменения этих трех строк мой бот перестает получать ответы.Это заставляет меня заподозрить: 1) у меня неверный источник данных, или 2) для преобразования требуется больше изменений в моей ситуации.Кто-нибудь может направить меня в правильном направлении?

Редактировать: В конечном итоге моей проблемой был первоначальный разработчик бота, скрывающий конечную точку QnAMaker где-то .Я до сих пор не уверен, где, URL-адрес не находится в web.config или в любых настройках лазурного.Я переписал это, и все, кажется, в порядке.

Ответы ниже были для меня более ясными, чем официальная документация, даже если они только подтвердили то, что я считал правильным ответом при моем первоначальном чтении.Отличная работа, люди.

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

После того, как вы опубликуете свою базу знаний , вы найдете сведения о конечной точке, которые можно использовать в вашем приложении или коде бота.Как упоминал Фил, он использует веб-сайт Azure для своей конечной точки generateAnswer, который отличается от сервисов QnA старой версии.

enter image description here

Старая версия QnA services:

enter image description here

Так что если вы сделаете следующий запрос, чтобы получить ответы на вопрос с новой базой знаний, это не будет работать.

https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/<QnAKnowledgeBaseId>/generateAnswer
0 голосов
/ 20 мая 2018

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

QnADialog.cs

namespace Test.Qna
{
    [Serializable]
    [QnAMaker(authKey: "AuthKey", knowledgebaseId: "KnowledgebaseId", defaultMessage: "please rephrase, I could not understand.", scoreThreshold: 0.5, top: 1, endpointHostName: "https://yourAccount.azurewebsites.net/qnamaker")]
    public class QnADialog : QnAMakerDialog
    {}
}

Для Node js вы можете сделать так:

var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
    console.log('%s listening to %s', server.name, server.url);
});

var connector = new builder.ChatConnector({
    appId: process.env.MICROSOFT_APP_ID,
    appPassword: process.env.MICROSOFT_APP_PASSWORD
});
var bot = new builder.UniversalBot(connector);
bot.set('storage', new builder.MemoryBotStorage()); 
server.post('/api/messages', connector.listen());

var recognizer = new cognitiveservices.QnAMakerRecognizer({
    knowledgeBaseId: '5abcde-cbfb-4yuio-92c5-052d3a806e78',
    authKey: 'eb7uy78y-8a64-4e75-98uj-7f89987b67bc',
    endpointHostName: 'https://name.azurewebsites.net/qnamaker'
    });

var basicQnAMakerDialog = new cognitiveservices.QnAMakerDialog({
    recognizers: [recognizer],
    defaultMessage: 'No match! Try changing the query terms!',
    qnaThreshold: 0.3
});

bot.dialog('/', basicQnAMakerDialog);

Надеюсь, это поможет.

0 голосов
/ 18 мая 2018

В новой версии 4 для конечной точки generateAnswer используется веб-сайт Azure с другой схемой внутри заголовка авторизации.Войдите в новый пользовательский интерфейс v4, выполните публикацию, и вы увидите, что пример URL изменился.

Изначально меня тоже поймали.Это несколько изменений в коллекции api тоже. Qnaquestions теперь qnalist, а также qnaid теперь просто id.

Вам нужно будет тщательно сравнить API, особенно если вы управляли своим клиентом.

Рад помочь Фил

...