C# 如何在MicrosoftBot框架中获取当前上下文

C# 如何在MicrosoftBot框架中获取当前上下文,c#,botframework,C#,Botframework,我正在使用FormDialog构建一个表单,并将BuildFormDelegate参数(一个静态方法)传递给该对话框。在这个方法中,我需要上下文来获取用户数据 用户数据存储为使用扩展名编写的上下文的一部分: public static async Task<string> GetAccessToken(this IBotContext context, string resourceId) 公共静态异步任务GetAccessToken(此IBotContext上下文,字符串reso

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

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

public static async Task<string> GetAccessToken(this IBotContext context, string resourceId)
公共静态异步任务GetAccessToken(此IBotContext上下文,字符串resourceId)
我将表单称为上下文,如下所示:

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

我需要调用
MakeCalendarForm
中的
GetAccessToken
方法(它不接受任何参数)。如何实现这一点?

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

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

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

什么是
MakeCalendarForm
?是什么阻止您在其中调用
GetAccessToken
?MakeCalendarForm是一个静态方法。它类似于中的BuildForm方法。此方法中的上下文不可用于调用GetAccessToken方法。GetAccessToken也是异步方法。无法从MakeCalendarForm调用它,该窗体返回“谢谢!”!这起作用了。我需要令牌,因为表单字段的选项必须从web服务获取。太好了!如果可能的话,我会在调用表单之前检索这些选项,并将它们传递到表单状态(就像您现在使用访问令牌所做的那样)