Операция вернула недопустимый код состояния «Запрещено». Botframework v4 - PullRequest
2 голосов
/ 06 марта 2019

Итак, я создал бота на лазурном и скачал его.1000 бесплатных звонков от LUIS достигли своего предела.Я создал подписку на портале Azure (я сделал что-то с Docker-контейнером).Следовал этому руководству до шага 6. Когда я нажимаю URL-адрес конечной точки и выполняю запрос непосредственно в браузере, он работает нормально.

Я добавил его в бот через эмулятор ботов, нажав + войтиуслуги и добавление модели бота там.Но когда я запускаю бота, я получаю ошибку названия.Я заметил, что в файле .bot ключ авторизации и ключ подписки, добавленные эмулятором ботов, совпадают.

Таким образом, я изменил ключ подписки на один из ключей, сгенерированных лазурью, и все еще та же ошибка.Я попытался сбросить авторский ключ и удалить мою учетную запись luis.ai и создать новую.(все тот же адрес электронной почты, поскольку он зарегистрирован на портале Azure.) и все тот же.

Вот несколько изображений для справки и ошибки.

Я также пытался протестировать его в luis.и получил этот результат.enter image description here

но когда я проверяю, он установлен на новый ресурс.enter image description here

Вот изображение файла бота после добавления luis через эмулятор бота.Он имеет один и тот же ключ авторизации и ключ подписки (по-прежнему запрещен) enter image description here

, поэтому я изменил его теперь с помощью ключа подписки (по-прежнему запрещено).enter image description here

Здесь он работает правильно при тестировании непосредственно в URL.enter image description here

Для справки:

Лазурный портал enter image description here

luis.ai enter image description here

и ошибка enter image description here

Как добавить luis в бот.enter image description here

Вот код службы ботов.

using System;
using System.Collections.Generic;
using Microsoft.Bot.Builder.AI.Luis;
using Microsoft.Bot.Configuration;

namespace Microsoft.BotBuilderSamples
{
    public class BotServices
    {
        public BotServices(BotConfiguration botConfiguration)
        {
            foreach (var service in botConfiguration.Services)
            {
                switch (service.Type)
                {
                    case ServiceTypes.Luis:
                        {
                            var luis = (LuisService)service;
                            if (luis == null)
                            {
                                throw new InvalidOperationException("The LUIS service is not configured correctly in your '.bot' file.");
                            }

                            var endpoint = (luis.Region?.StartsWith("https://") ?? false) ? luis.Region : luis.GetEndpoint();
                            var app = new LuisApplication(luis.AppId, luis.AuthoringKey, endpoint);
                            var recognizer = new LuisRecognizer(app);
                            this.LuisServices.Add(luis.Name, recognizer);
                            break;
                        }
                }
            }
        }

        public Dictionary<string, LuisRecognizer> LuisServices { get; } = new Dictionary<string, LuisRecognizer>();
    }
}

Я пытаюсь решить эту проблему уже 4 дня.Спасибо!

1 Ответ

2 голосов
/ 07 марта 2019

Спасибо за все изображения. Это огромная помощь! Вот проблема:

По умолчанию ваш код ищет AuthoringKey в этом разделе (вторая строка):

var endpoint = (luis.Region?.StartsWith("https://") ?? false) ? luis.Region : luis.GetEndpoint();
var app = new LuisApplication(luis.AppId, luis.AuthoringKey, endpoint);
var recognizer = new LuisRecognizer(app);
this.LuisServices.Add(luis.Name, recognizer);

Поскольку в вашем файле .bot по-прежнему установлен authoringKey на тот, который начинается с ad9c..., который достиг своего предела, ваш бот продолжает сталкиваться с ошибкой 403.

Итак, в вашем файле .bot замените authoringKey на один из ваших endpointKey (они начинаются с 12ccc... или b575...).

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

Также вы можете изменить:

var app = new LuisApplication(luis.AppId, luis.AuthoringKey, endpoint);

до:

var app = new LuisApplication(luis.AppId, luis.SubscriptionKey, endpoint);

Примечание. Если вы сделаете одно из этих изменений, LUIS сможет только запросить (что обычно нормально), поскольку авторские ключи делают все остальное (см. Ссылку ниже)

Ссылки

Это не столько для вас, сколько для других, которые могут с этим столкнуться.

Авторство и ключи конечной точки

Ключевые ограничения

Устранение ошибок LUIS 403

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...