Я пытаюсь передать имя пользователя, которое у меня есть в Rootdialog, на мой LuisDialog.
Вы можете попытаться определить конструктор в своем классе LuisDialog для принятия параметра типа строки дляпередача имени пользователя из Rootdialog в LuisDialog.Следующий фрагмент кода работает для меня, вы можете обратиться к нему.
В LuisDialog:
[Serializable]
public class BasicLuisDialog : LuisDialog<object>
{
private string uname = "";
public BasicLuisDialog(string UserName) : base(new LuisService(new LuisModelAttribute(
"{your_modelID_here}",
"{your_subscriptionKey_here}",
domain: "{domain_here}")))
{
uname = UserName;
}
//....
// Go to https://luis.ai and create a new intent, then train/publish your luis app.
// Finally replace "Gretting" with the name of your newly created intent in the following handler
[LuisIntent("Greeting")]
public async Task GreetingIntent(IDialogContext context, LuisResult result)
{
await this.ShowLuisResult(context, result);
}
//....
//for other intents
//....
private async Task ShowLuisResult(IDialogContext context, LuisResult result)
{
await context.PostAsync($"You have reached {result.Intents[0].Intent}. UserName is : {uname}");
context.Wait(MessageReceived);
}
}
В RootDialog:
var UserName = "Fei Han";
await context.Forward(new BasicLuisDialog(UserName), AfterLuis, activity, CancellationToken.None);
Результат теста: