c# - 如何调用 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 类?
解决方案
解决方案在此处阅读文档。它让我大开眼界!
推荐阅读
- sql-server - 当 SQL 中的组合没有数据时创建空行
- c# - 不同的使用方式
- python - 调用pickeled函数时出现RecursionError
- google-cloud-platform - 缺少 Google Cloud Platform (GCP) Cloud Shell “Boost”功能
- windows - 如何更改 Mac Native WebRTC 上的默认播放设备?
- sql - 如何从连接表中返回一行
- react-native - 如何在本机反应的文本输入中显示选定的日期和时间?
- php - 为什么在 Wordpress PHP-Modul 中显示 html-entities 实体时出错?
- javascript - 如何使用 JavaScript 在位置 1 处修复 JSON 中的意外标记 o?
- promise - 如何重用 Promise
在我的 Angular 服务中使用过一次之后?