2017-07-14 97 views
0

非常類似的問題這一個:How to get PromptDialog.Choice features and still allow other User responses in Bot Framework?如何避免PromptChoice重試消息

我想延長PromptChoice給用戶多種選擇,這樣的事情:

這裏是我的發現:

選項1個 選項2 選項3

你想要的信息哪些呢?

如果用戶回答「選項1」,我想用PromptChoice來選擇它。但是如果用戶用更自然的語言迴應,比如「選項1在哪裏」?即使開箱即用的PromptChoice不處理這個問題,我想回復給出的信息,我有選項1.

我知道我必須重寫TryParse,但我感到困惑的是如何自己解析消息,然後從選項列表中選擇正確的選項。我需要在PromptChoice中重寫以添加此功能?

回答

2

首先看看到PromptChoice實現及其TryParse方法,here

你會看到它是在3個識別步驟製成:

  • 承認選擇(試圖識別可能的選擇,你提供)
  • 識別數字(「數字1」,「選擇3」等)
  • 識別序號(如「第一個值」,「最後一個選擇」等)

這些步驟將提供topScoretopEntity,並且最好這些3個值被返回(如果topScore優於一個minScore值)。

請注意,每個識別都可以在PromptChoice設置中禁用,並且minScore值也可以在那裏設置。

如何編輯行爲?

一個想法是設置一個minScore值相當高,並添加一個else語句來執行您的專用代碼。

這將是:

if (topScore >= this.minScore && topScore > 0) 
{ 
    result = topEntity; 
    return true; 
} 
else 
{ 
    // Your custom code here 
    // You have access to your list of options, to your message... 
} 

我不能添加關於你的問題是不是足夠清楚如何在your custom code here做的更多細節。如果它是「已知的固定問題」,它將比理解所有自然語言可能性要容易得多。