Как я могу вызвать новый второй диалог LUIS в первом диалоге LUIS?

Хи, для моего бота мне нужно вызвать второй экземпляр диалога LUIS. Но с функцией «Вперед» в первом диалоге LUIS работают только обычные диалоги. Распознавание намерений не работает.

Итак, как я могу вызвать новый второй диалог LUIS в первом диалоге LUIS?

MessagesController:

await Conversation.SendAsync(activity, () => new FirstDialogClass());

FirstDialogClass:

[LuisModel("luis", "key")]
[Serializable]
public class FirstDialogClass: LuisDialog<object>
{
    [LuisIntent("")]
    public async Task None(IDialogContext context, LuisResult result)
    {
        await context.PostAsync("intension first dialog: none");
        // call second luis instance
        await context.Forward(new SecondDialogClass(), CallbackFirstDialog, "message", CancellationToken.None);
    }


    [LuisIntent("Greeting")]
    public async Task Hallo(IDialogContext context, LuisResult result)
    {
        await context.PostAsync("intension first dialog: greeting");
        context.Wait(MessageReceived);
    }


    private async Task CallbackFirstDialog(IDialogContext context, IAwaitable<object> result)
    {
        await context.PostAsync("callback first dialog");
        context.Wait(MessageReceived);
    }
}

SecondDialogClass:

[LuisModel("luis", "key")]
[Serializable]
public class SecondDialogClass : LuisDialog<object>
{
    [LuisIntent("")]
    public async Task None(IDialogContext context, LuisResult result)
    {
        await context.PostAsync("intension second dialog: none");
        context.Done(new Object());
    }


    [LuisIntent("Alphabet")]
    public async Task Alphabet(IDialogContext context, LuisResult result)
    {
        await context.PostAsync("intension second dialog: alphabet");
        context.Done(new Object());
    }
}

person Robert    schedule 24.03.2017    source источник
comment
Пожалуйста, укажите исключение, которое вы получили после вызова второго диалога.   -  person OmG    schedule 24.03.2017
comment
Нет никаких исключений. Он не вызывает функцию намерения. Я нашел свою проблему. (см. ответ)   -  person Robert    schedule 24.03.2017


Ответы (1)


Я сам нашел решение.

[LuisIntent("")]
public async Task None(IDialogContext context, LuisResult result)
{
    await context.PostAsync("intension first dialog: none");
    // call second luis instance
    var message = context.MakeMessage();    // create a message
    message.Text = "abc";   // alphabet intension is called
    await context.Forward(new SecondDialogClass(), CallbackFirstDialog, message, CancellationToken.None);
}
person Robert    schedule 24.03.2017