Bots 在特定时间后取消提示或对话框-Bot框架

Bots 在特定时间后取消提示或对话框-Bot框架,bots,botframework,Bots,Botframework,我有一个关于取消提示或对话框的问题,如果用户在一定时间内没有输入。 我需要一种在提示内暂停的方法 示例: 机器人提示用户:“你多大了?”。 机器人现在正在等待用户的响应,但用户从未响应,机器人仍在等待 在我的例子中,机器人应该只等待20秒,然后关闭对话框。 取消令牌或HandleSystemMessageAsync方法中的超时实现是否有助于实现此目的,以及如何实现提示? 谢谢你的建议 您可以在context.UserData中保存一个时间戳,然后在收到新消息时检查时间差是否大于20秒,并适当地发

我有一个关于取消提示或对话框的问题,如果用户在一定时间内没有输入。 我需要一种在提示内暂停的方法

示例:
机器人提示用户:“你多大了?”。
机器人现在正在等待用户的响应,但用户从未响应,机器人仍在等待

在我的例子中,机器人应该只等待20秒,然后关闭对话框。
取消令牌
HandleSystemMessageAsync方法
中的超时实现是否有助于实现此目的,以及如何实现提示?

谢谢你的建议

您可以在context.UserData中保存一个时间戳,然后在收到新消息时检查时间差是否大于20秒,并适当地发送对话框。

您是使用PromptDialog进行此操作,还是只向用户发送消息?是的,我使用PromptDialog,如:“PromptDialog.Number”(上下文,ResumeAfterAgePromptAsync,“您多大岁数”)与我的问题类似,我有相同的要求,但想在取消对话框或提示之前发送消息。在这种情况下,“PrivateConversationData”不是比UserData更好吗?这是一个好问题。根据PrivateConversationData,它的作用域是用户和对话。如果状态API的实现存储PrivateeConversationData对于不同数据包中的每个会话,这可能会导致大量不必要的数据存储。如果使用UserData,它应该存储在同一个数据包中,因此每次都会被覆盖。但是如果您在一个频道(例如Messenger)上启动会话,然后在另一个频道(例如SMS)上向机器人发送消息-这不是一个不同的对话吗?例如,如果我打开一个带有嵌入式Webchat iframe的页面,bot会收到一个“ConversationUpdate”活动并开始一个新的对话。是否可能在不同的频道上恢复相同的对话?这是一个好问题。我不知道,但我假设不会,因为模拟器已经启动每次连接时都会指定一个新的ConversationId。