将变量传递到Microsoft BotBuilder C#.NET Core中的对话框
我正试图用这个来构建我的机器人 现在的流程是:将变量传递到Microsoft BotBuilder C#.NET Core中的对话框,c#,.net-core,botframework,C#,.net Core,Botframework,我正试图用这个来构建我的机器人 现在的流程是: 用户编写一些东西foo 机器人进入对话框 我一直无法从中获取用户的第一条消息foo。您可以从turnContext获取用户输入,如下所示: string userInput = turnContext.Context.Activity.Text 例如: public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationTo
foo
我一直无法从中获取用户的第一条消息
foo
。您可以从turnContext
获取用户输入,如下所示:
string userInput = turnContext.Context.Activity.Text
例如:
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
string userInput = turnContext.Activity.Text;
}
private static async Task<DialogTurnResult> TransportStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
string userInput = string.Empty;
// Options contains the information the waterfall dialog was called with
if (stepContext.Options != null)
{
userInput = stepContext.Options.ToString();
}
}
至于将变量传递给用户档案对话框,可以通过以下方式进行:
await innerDc.BeginDialogAsync(nameof(DialogFlowDialog), userInput );
BeginDialogAsync接受一个可选参数(对象)传递给正在启动的对话框
在您的UserProfileDialog中,您可以从stepContext
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
// this contains the text message the user sent
string userInput = turnContext.Activity.Text;
await base.OnTurnAsync(turnContext, cancellationToken);
// Save any state changes that might have occured during the turn.
await ConversationState.SaveChangesAsync(turnContext, false, cancellationToken);
await UserState.SaveChangesAsync(turnContext, false, cancellationToken);
}
例如:
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))
{
string userInput = turnContext.Activity.Text;
}
private static async Task<DialogTurnResult> TransportStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
{
string userInput = string.Empty;
// Options contains the information the waterfall dialog was called with
if (stepContext.Options != null)
{
userInput = stepContext.Options.ToString();
}
}
如果您想让我们帮助您,您应该向我们展示您的代码嗨,奥利,我的代码离示例不远了,您的意思是
string userInput=turnContext.Activity.Text代码>?所以我把它加进去了,但是我怎样才能把这个变量加进去?@Esbarro检查我编辑的回答,如果这是你需要的,请把它标记为答案!非常感谢你的帮助。由于在使用innerDc
时遇到问题,“CS0103 C#当前上下文中不存在该名称”。谢谢您!我绝对肯定我在提问之前就这么做了,但是由于某种原因,变量在第一步返回了一个空字符串。但现在它起作用了。感谢您的时间和参与!