Как настроить LuisModel для строителя ботов sdk bot - PullRequest
0 голосов
/ 26 апреля 2018

Я создал очень простой бот, используя конструктор ботов 3.15.0.Я определил и обучил LUIS с несколькими намерениями и т. Д. Я опубликовал в качестве постановки.

Результатом этого является набор ключей.Я поместил первый ключ в качестве первого параметра в атрибут LuisModelAttribute, второй ключ в качестве второго параметра, а затем добавил домен: westus.api.cognitive.microsoft.com и Staging = true

[LuisModel("{the first key listed on the LUIS publish page}", "the second key listed on the LUIS publish page",
    domain: "eastus.api.cognitive.microsoft.com", Staging = true)]

IУ меня есть следующий код в RootDialog моего бота

        private async Task MessageReceivedAsync (IDialogContext context, IAwaitable<object> result)
    {
        var activity = await result as Activity;
        await context.Forward(new LuisRepeating(), ResumeAfterLuisDialog, activity, CancellationToken.None);
    }   /* method RootDiaglog MessageReceivedAsync */

    private async Task ResumeAfterLuisDialog (IDialogContext context, IAwaitable<object> result)
    {
        context.Wait(MessageReceivedAsync);
    }

Когда я пытаюсь проверить это с помощью эмулятора бота, соединение с ботом работает.Во время первого поста точка останова в context.Wait в ResumeAfterLuisDialog показывает, что в результате произошел сбой с содержимым {"; None"}, и ни одно из моих намерений Luis (включая None и blank) не вызывается.

ОБНОВЛЕНИЕ

Как оказалось, код "работал" с или без {} вокруг идентификатора приложения.Реальная проблема заключается в том, что код Luis Dialog в SDK генерирует InvalidIntentHandlerException в строке 416 LuisDialog, но текущий код на GitHub выполняет выброс в строке 452 (это было изменено при выпуске 634).

Длядля будущих людей «; None» - это «сообщение», передаваемое исключению InvalidIntentHandlerException, которое является;строка с разделителями из намерений из атрибута LuisIntent для ошибочного метода.Имя метода в исключении - это имя метода, к которому бот-сборщик попытался отправить.Он выбирает правильный метод и т. Д., Так что теперь мои задания 1) - Выясните, почему я не использую текущий код 2) - Почему объявление моего метода неверно

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Как упоминал Ранганатха, фигурные скобки должны быть удалены.Он должен быть в следующем формате с идентификатором приложения и ключом подписки.Вы можете найти больше примеров кода здесь .

[LuisModel("9fa4985b-xxxxxxx-b726795a98b4", "a5d38xxxxxe3671953")]

Вы можете использовать конечную точку пользователя url для тестирования своего приложения.На основе http коды вы можете отладить ошибку.

Если вы хотите использовать API авторинга для обучения и публикации приложения, вы можете найти более подробную информацию здесь .Если есть какие-либо другие проблемы, пожалуйста, свяжитесь с Luisuservoice@microsoft.com.

0 голосов
/ 26 апреля 2018

Посмотрите на свойства вашего атрибута LuisModel.Я думаю, вам не нужно помещать идентификатор приложения в фигурные скобки.Попробуйте удалить фигурные скобки вокруг вашего «первого ключа, указанного на странице публикации LUIS».

Также введите указанный ниже URL-адрес в браузере после замены идентификатора приложения, ключа подписки и фразы и нажмите клавишу ввода.Если есть какая-либо ошибка, вы узнаете, что это за ошибка и т. Д.

https://eastus.api.cognitive.microsoft.com/luis/v2.0/apps/APPID?subscription-key=subscriptionKey&verbose=true&timezoneOffset=0&q=yourPhraseHere

...