2017-07-26 92 views
4

我正在使用.Net後端爲我的機器人基於bot框架。 在我的一個對話框中,我給了用戶返回到根對話框的選項 - 至少,這是我想要做的,但沒有成功。這是我已經嘗試過的:如何用bot框架彈出到根對話框?

  • 請致電context.Reset() - 我瞭解到我可能不會在對話框中使用它;這會導致系統崩潰
  • Conversation.SendAsync((IMessageActivity)context.Activity,() => new RootDialog()) - 似乎並沒有做任何事情

理想我只是想拿回什麼是第一個在堆棧上,而不必硬編碼RootDialog類型。

+1

context.Done是不夠的? –

+0

但是如果對話A把我帶到B,把我帶到C,D​​one()把我帶到B,但不是A,或者我不應該擔心堆棧,只是轉發到我想要去的對話框? – Krumelur

回答

2

正如Ezequiel指出的那樣,context.Done()是如何結束當前對話框,並將控件返回到調用對話框。

https://docs.botframework.com/.../sdkreference/dialog_stack.html

空隙Microsoft.Bot.Builder.Dialogs.Internals.IDialogStack.Done(R值)

完成當前對話和一個結果返回到父對話框。

參數

value: The value of the result. 
+0

我不想進入_calling_對話框,而是進入_root_對話框。 A→B→C; '完成()'讓我到B,但不到A. – Krumelur

+1

是否有任何理由,你不能從c然後b調用.done()? –

+0

我當然可以做到這一點,但我想知道這是否是正確的做法。似乎有點違反直覺。 – Krumelur