如何在 Microsoft Bot 框架中获取当前上下文

How to get current context in Microsoft Bot framework

我正在使用 FormDialog 构建一个表单,并向其传递一个 BuildFormDelegate 参数(静态方法)。在这个方法中,我需要上下文来获取用户数据。

用户数据存储为使用扩展编写的上下文的一部分:

public static async Task<string> GetAccessToken(this IBotContext context, string resourceId)

我调用表单上下文如下:

var calendarform = new FormDialog<CalendarInput>(new CalendarInput(), MakeCalendarForm, FormOptions.PromptInStart, result);
context.Call<CalendarInput>(calendarform, CalendarFormComplete);

我需要调用 MakeCalendarForm 中的 GetAccessToken 方法(不接受任何参数)。我怎样才能做到这一点?

您可以在调用表单之前调用 GetAccessToken,并将生成的令牌作为参数传递给 CalendarInput 状态,然后传递给正在创建的 FormDialog。像

var token = await context.GetAccessToken();
var calendarform = new FormDialog<CalendarInput>(new CalendarInput(token), MakeCalendarForm, FormOptions.PromptInStart, result);

但是,您在表单的上下文中需要令牌,这听起来很奇怪。你想做什么?