Добавить бота в Orchard Core - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь добавить бота с помощью Microsoft Bot Framework в приложении Orchard Core CMS.Я относительно новичок в Orchard Core, я настроил новый проект с использованием шаблонов Orchard Core.

Проблема Контекст / Сценарий:

  • Я хочу добавитьBot на мой сайт с использованием Orchard Core
  • Я создал собственный модуль с использованием шаблона Orchard Core и могу добавить ApiController для обработки определенного маршрута
  • Я пытаюсь построить Bot с использованиемMicrosoft Bot Framework SDK V4
  • Я пытаюсь добавить своего бота, используя services.AddBot<MyBot>.Я не получаю никакой ошибки как во время сборки, так и во время выполнения.

    • По умолчанию с помощью services.AddBot<MyBot>() регистров для URL /api/messages Я попробовал эту конечную точку и не смог получить доступ к своему боту
    • Я понимаю, что Orchard Core обрабатывает маршрутизацию и может не знать об этом URL

Вот мои проблемы: - Есть ли способсообщить Orchard Core об этом маршруте?- В конце концов я хочу иметь возможность включить этот модуль под несколькими арендаторами на своем сайте Orchard Core CMS

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Итак, я собираюсь сделать обоснованное предположение, что у вас возникла проблема с порядком регистрации обработчиков с помощью IApplicationBuilder во время запуска.Если вы не в курсе, порядок отображения объектов в конструкторе приложений действительно имеет значение.

Поскольку у вас есть существующая кодовая база, я собираюсь предположить, что когда вы добавили бота, вы добавили вызов .UseBotFramework() в конце.Так как UseBotFramework() зарегистрирует вашего бота под /api/messages по умолчанию, есть большая вероятность, что существующие маршруты MVC, которые вы уже отобразили, "проглатывают" запросы, предназначенные для перехода к боту.У вас есть два способа исправить это:

  1. Переместите .UseBotFramework() так, чтобы оно было перед любым другим отображением маршрута, чтобы у него были первые метки при обработке входящего запроса.
  2. Измените маршрут, который будет прослушивать бот, чтобы он не конфликтовал с маршрутом вашего контроллера API.Это делается во время вызова AddBot<YourBot>(…) следующим образом:
services.AddBot<YourBot>(options => 
{
    options.Paths.BasePath = "bots";
});

И вместо этого путь станет /bots/messages.Вы также можете изменить /messages, если хотите, через options.Paths.MessagesPath.

0 голосов
/ 01 февраля 2019

С OrchardCore вы можете подключиться к построителю маршрута, переопределив метод настройки в StartupBase.Я предполагаю, что вы добавляете services.AddBot в пользовательский класс Startup, который уже наследуется от StartupBase?

Посмотрите на другое переопределение в StartupBase

public override void Configure(IApplicationBuilder app, IRouteBuilder routes, IServiceProvider serviceProvider)
{
    routes.MapAreaRoute(
        name: "a-route-name",
        areaName: "area-name",
        template: "api/messages",
        defaults: new { controller = "Bot", action = "Index" }
    );
}

Вам необходимо выяснитьправильный маршрут, который использует UseBotFramework

...