首页 > 解决方案 > 如何调用 DialogExtensions.RunAsync

问题描述

我正在将机器人 V3 迁移到 V4。

我在互联网上搜索过,但我没有找到答案。

我想从 DialogExtensions 类中调用 RunAsync 方法:

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)   
{
      await DialogExtensions.RunAsync(turnContext,          
      ConversationState.CreateProperty<DialogState>("DialogState"),                
      cancellationToken);
}

这是类中的所有代码:

using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Schema;
using Microsoft.Extensions.Caching.Memory;

namespace Microsoft.BotBuilderSamples.Bots
{
    public class NewBot : ActivityHandler
    {
        private IMemoryCache Cache;
        protected readonly BotState ConversationState;

        public NewBot(IMemoryCache _cache)
        {
            Cache = _cache;
        }

        protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
        {

            await DialogExtensions.RunAsync(
                null,
                turnContext,
                ConversationState.CreateProperty<DialogState>("DialogState"),
                cancellationToken);
        }
        protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            foreach (var member in membersAdded)
            {
                if (member.Id != turnContext.Activity.Recipient.Id)
                {
                    await turnContext.SendActivityAsync(MessageFactory.Text($"Hello and welcome!"), cancellationToken);
                }
            }
        }
    }
}

RunAsync 方法正在请求参数对话框(对话框类型)。

如何为方法传递此参数?如何实例化 Dialog 类?

标签: c#.net.net-corebotframework

解决方案


解决方案在此处阅读文档。它让我大开眼界!


推荐阅读