2017-10-19 133 views
3

是存在雙向對話期間根對話框更改爲不同的一個:MS BOT變化根對話框

Conversation.SendAsync((IMessageActivity)context.Activity,()=>新 RootDialogA())

我們的應用程序在那裏與一個rootdialog開始和一些點我們要運行另一根對話框:

Conversation.SendAsync((IMessageActivity)康特xt.Activity,()=> new RootDialogB())

+0

[微軟BOT框架處理多個對話]的可能的複製(https://stackoverflow.com/questions/37169371/handling-multiple-dialogs-in-microsoft-bot -framework) –

回答

3

是的。使用context.Call()context.Forward()可以在對話框之間切換。請看this sample project

通常人們做的是根對話的上下文根路徑到另一個對話。下面是我認爲根源在哪裏對話框使用context.Call()方法路由到另一個對話框樣品的例子:

private async Task SendWelcomeMessageAsync(IDialogContext context) 
{ 
    await context.PostAsync("Hi, I'm the Basic Multi Dialog bot. Let's get started."); 

    context.Call(new NameDialog(), this.NameDialogResumeAfter); 
} 

您必須提供當被叫對話已完成了關閉觸發方法後,一份簡歷。在樣本它看起來像這樣:

private async Task NameDialogResumeAfter(IDialogContext context, IAwaitable<string> result) 
{ 
    try 
    { 
     this.name = await result; 

     context.Call(new AgeDialog(this.name), this.AgeDialogResumeAfter); 
    } 
    catch (TooManyAttemptsException) 
    { 
     await context.PostAsync("I'm sorry, I'm having issues understanding you. Let's try again."); 

     await this.SendWelcomeMessageAsync(context); 
    } 
}