Как передать данные из RootDialog в LuisDialog в Bot Framework - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь передать имя пользователя из Rootdialog моему LuisDialog.но все намерения в LuisDialog принимают только два аргумента (IDialogContext context, LuisResult result), и я не знаю, как извлечь данные, которые я передал из результата `LuisResult.Код для пересылки в диалог luis:

await context.Forward(new Luis(), Resume, UserName, CancellationToken.None);

Как мне это сделать, пожалуйста?какое намерение получит данные?Как я могу получить данные из объекта LuisResult?

1 Ответ

0 голосов
/ 24 мая 2018

Я пытаюсь передать имя пользователя, которое у меня есть в 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);

Результат теста:

enter image description here

...