IntentDialog在bot框架的开头只匹配一次

时间:2017-02-14 17:19:23

标签: bots botframework chatbot

我有一段简单的代码,我想在开始时运行第一个运行操作,让默认对话框处理其他所有操作。在下面的代码中。

bar < 2.0::float8

我的问题就在这里。当人物类型独占时我相信默认对话框将运行其匹配并且理想情况下应该触发独占,无论多少次但由于某种原因它不会按照下面的屏幕截图那样发生。一旦一个人在开始时键入独占或心愿单,它总是在底部运行默认值,我该如何解决这个问题。另外如何在IntentDialog中的不同匹配子句之间共享数据,假设我希望在匹配和默认情况下有一些变量session.dialogData.name enter image description here 更新1 我没有在上面的代码中的2个区域内写session.endDialog,而是编写了session.send()而没有结束任何对话框,现在当我键入exclusive或wishlist时没有任何反应。我错过了什么吗? enter image description here

1 个答案:

答案 0 :(得分:1)

如果要返回调用(上一个)对话框,则应始终调用session.endDialog

在你的第一个例子中:

|current dialog|user input|next dialog|
|first run     |go        | /         |
| /            |whishlist | /         |
| /            |freak     |runCampaign|
|runCampaign   |<any>     |runCampaign|

由于您未在session.endDialog对话框中拨打runCampaign,因此您将始终在其中,并且在任何用户输入中都会默认&#39;将被打印。

在第二个示例中,您错过了键入&#34; whishlist&#34;,因此您立即进入runCampaign对话框。因此,您更改为send没有调用。但如果你输入了'whislist&#39;就像在#34; freak&#34;之前的第一个例子中一样,你会进入wishlist并且你总是会打印出#34;添加到心愿单&#34;任何输入。