机器人框架调用用户消息通过恢复对话框提示异步



嗨,我是一个编写聊天机器人框架的新手。 我有 main 输入方法UserMessagesAsync如果用户发送匹配的消息,它会处理用户消息 条件。这是我的代码:如何在 ChoiceReceivedAsync 中调用 UserMessagesAsync

private async Task UserMessagesAsync(IDialogContext context, IAwaitable<Object> result)
{
var activity = await result as Activity;
int length = (activity.Text ?? string.Empty).Length;
if (activity.Text.ToLower().Contains("outlet"))
{
new BusinessDialog().OutletPrompt(context, result).Wait();
}
else if (activity.Text.ToLower().Contains("materialcost"))
{
string url = "url";
await context.PostAsync(url);
}
else
{
await context.PostAsync($"You sent {activity.Text} which was {length} characters");
}
}

OutletPrompt代码:

public async Task OutletPrompt(IDialogContext context, IAwaitable<Object> result)
{
PromptDialog.Choice(
context: context,
resume: ChoiceReceivedAsync,
options: (IEnumerable<Outlet>)Enum.GetValues(typeof(Outlet)),
prompt: "Hi. Please Select one :",
retry: "Please try again.",
promptStyle: PromptStyle.Keyboard
);
}

Outlet枚举:

public enum Outlet
{
DocumentRepository,
Branches
}

恢复功能:

public virtual async Task ChoiceReceivedAsync(IDialogContext context, IAwaitable<Domstic> activity)
{
// how to call UserMessagesAsync
}

你应该能够只做:

public virtual async Task ChoiceReceivedAsync(IDialogContext context, IAwaitable<Domstic> activity)
{
await UserMessagesAsync(context, activity as IAwaitable<Domstic>);
}

话虽如此,我希望你还没有做太多的工作。

您应该使用 BotFramework SDK v4,而不是 v3

  • v3 已弃用,无法在 Azure 中创建新的机器人,并且将来不会有新功能或非关键 bug 修复
  • v3 现在非常非常过时了
  • v4 有很多新功能,并且会不断更新

开始使用 v4

从 v3 迁移到 v4

最新更新