Контроллер сообщений V4 редко, если вообще когда-либо, должен меняться со скелета. В этой строке:
await _adapter.ProcessAsync(Request, response, _bot);
... вы можете видеть, что Контроллер передает Request
в _bot
. Используйте вашего бота для обработки диалога.
В примере CoreBot , вы можете увидеть, что после того, как сообщение достигнет BotController
(что эквивалентно MessageController
, он идет к DialogBot
, где он вызывает диалог:
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
Logger.LogInformation("Running dialog with Message Activity.");
// Run the Dialog with the new message Activity.
await Dialog.RunAsync(turnContext, ConversationState.CreateProperty<DialogState>("DialogState"), cancellationToken);
}
Он «знает», чтобы сделать это, потому что в Startup.cs
, он использует Dependecy Injection, чтобы добавить и бота, и диалог, чтобы BotController
и DialogBot
могли использовать их соответственно:
services.AddTransient<IBot, DialogAndWelcomeBot<MainDialog>>();
Перед миграцией я настоятельно рекомендую настроить CoreBot и читая его, пока не поймете, как он работает. Это, вероятно, будет полезно для будущих вопросов миграции.