2017-07-04 15 views
1

でcontext.Doneを呼び出すときにスタックが、私はLuisDialogウィッヒは、フォールバックのいくつかの種類として「なし」意図で別のLuisDialogを楽しみにします持って空のエラーです:子ダイアログ

[LuisIntent("None")] 
public async Task None(IDialogContext context, IAwaitable<IMessageActivity> message, LuisResult result) 
{ 
    var luisService = new LuisService(new LuisModelAttribute("XXX", "XXX")); 
    await context.Forward(new MyChildDialog(luisService), null, await message); 

    context.Wait(MessageReceived); 
} 

MyChildDialogで実行する方法context.Done()が実行されると、エミュレータがエラーを示す

[LuisIntent("myLuisIntent")] 
public async Task MyLuisIntent(IDialogContext context, LuisResult result) 
{ 
    await context.PostAsync("Hi!"); 
    context.Done(0); 
} 

:「スタックが空である」のようです。しかし、フォワードがダイアログをスタックに追加すると、どのように空になるのですか?

答えて

1

あなたはMyChildDialogがfininshedされたときに何をすべきかのハンドラを持っていることを確認し

[LuisIntent("None")] 
    public async Task None(IDialogContext context, IAwaitable<IMessageActivity> message, LuisResult result) 
    { 
     var luisService = new LuisService(new LuisModelAttribute("XXX", "XXX")); 
     await context.Forward(new MyChildDialog(luisService), WaitForMessageResume, await message); 

     context.Wait(MessageReceived); 
    } 

    private Task WaitForMessageResume(IDialogContext context, IAwaitable<object> result) 
    { 
     context.Wait(MessageReceived); 
     return Task.CompletedTask; 
    } 
関連する問題