【发布时间】:2016-08-10 03:58:44
【问题描述】:
我正在使用 MS Bot Framework 和 C# 构建一个可以处理 3 个对话框的机器人。每个对话框都是使用 FormDialog 和 FormBuilder 构建的,如下所示:
internal static IDialog<OrderDialogForm> BuildDialog()
{
return Chain.From(() => FormDialog.FromForm(BuildForm));
}
当您第一次与机器人交谈时,它会让您选择三个对话框之一,例如“填写订单”、“输入您的用户资料”、“获得支持”、
一旦用户选择,例如,“填写订单”,机器人就会启动相应的对话框。
显然,用户应该继续回答对话中的问题,直到对话结束。
但是用户每次发送消息,都会传递给API控制器中的这个方法:
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
从这里开始,机器人需要确定三个对话中的哪一个当前正在进行中,然后继续该对话。
如何做到这一点,记住当前正在执行哪个对话框,并且对于来自用户的每条新消息,继续该对话框而不是将用户返回到主屏幕?
我的想法是创建某种全局变量或存储在其他地方的记录,可能在数据库中。该记录将包含该用户现在与机器人进行的当前对话的类型。每次机器人收到消息时,它都会查询数据库以找出用户的最后一次交互是与 OrderDialog 的交互,因此程序代码可以决定继续使用 OrderDialog。但它似乎很慢,并且可能在 Bot Framework 中有某种内置函数来存储有关用户的数据,例如它最后一次与之交互的对话类型。
【问题讨论】:
标签: c# botframework