2017-07-24 74 views
0

我按照發布的指令here爲我的機器人創建一個全局處理程序。在反應到某些關鍵字(「幫助」),我想通過轉發到一個對話框:什麼是IDialogTask的Void()和PollAsync()方法?

var replyDialog = new CommonResponsesDialog($"Sometimes I also feel **{state}**..."); 
var interruption = replyDialog.Void<object, IMessageActivity>(); 
_task.Call(interruption, null); 
await _task.PollAsync(token); 

兩件事情都不清楚:

  • 什麼replyDialog.Void<object, IMessageActivity>();在做什麼?即使閱讀了docs我也不明白。爲什麼我不能直接推replyDialog
  • 什麼是await _task.PollAsync(token);
+0

不應該'IAwaitable '而不是'IAwaitable ''? – DavidG

+0

沒關係,但問題是/是別的。我必須改變我的問題... – Krumelur

+0

你讀過[this](https://docs.microsoft.com/en-gb/dotnet/api/microsoft.bot.builder.dialogs.chain.void?view=botbuilder -3.8#Microsoft_Bot_Builder_Dialogs_Chain_Void__2_Microsoft_Bot_Builder_Dialogs_IDialog ___ 0__):*此方法的目的是將先行對話框A用新對話框D包裝到現有堆棧頂部對話框L的頂部。* – DavidG

回答

0

Void的調用是一個額外的對話框,將負責從用戶重啓等待消息,一旦孩子對話框(您replyDialog)已完成的包裹replyDialog

.Call將中斷對話框放在堆棧上並且.PollAsync開始運行中斷對話框。

如果您查看VoidDialog<T,R>類(here),你會發現:一旦它開始

  1. ,它所說的「前因」對話框
  2. 一旦先行對話已結束,忽略結果並等待新的用戶消息
  3. 收到新消息後,它將結束VoidDialog將消息傳遞給原始對話。
相關問題