在一定时间后取消提示或对话框 - Bot Framework
Posted
技术标签:
【中文标题】在一定时间后取消提示或对话框 - Bot Framework【英文标题】:Cancel a prompt or dialog after certain time - Bot Framework 【发布时间】:2017-06-09 02:53:44 【问题描述】:如果在一定时间内没有用户输入,我有一个关于取消提示或对话框的问题。 我需要一种方法来以某种方式在提示中超时。
示例: 机器人提示用户:“你几岁?”。 Bot 现在等待用户的响应,但用户从未响应,而 bot 仍在等待。
在我的情况下,机器人应该只等待 20 秒,然后关闭对话框。
cancellation token
或 HandleSystemMessageAsync Method
中的超时实现对这个目的有帮助吗?我将如何实现这个提示?
感谢您的任何想法!
【问题讨论】:
您是为此使用 PromptDialog 还是仅向用户发送消息? 是的,我正在使用 PromptDialog,例如:“PromptDialog.Number(context, ResumeAfterAgePromptAsync, 'How old are you')” 与我的***.com/questions/41569285/…类似的问题我有相同的要求,但想在取消对话或提示之前发送消息 【参考方案1】:您可以在 context.UserData 中保存时间戳,然后在收到新消息时检查时间差是否 >20 秒并适当地路由对话。
【讨论】:
在这种情况下,'PrivateConversationData' 会比 UserData 更好吗? 这是个好问题。根据Bot State Service,PrivateConversationData 的范围是用户和对话。如果 State API 的实现将每个对话的 PrivateConversationData 存储在不同的数据包中,这可能会导致大量不必要的数据存储。如果使用 UserData,则应该存储在同一个数据包中,因此每次都会被覆盖。 但是,如果您在一个频道(例如 Messenger)上开始对话 - 然后在另一个频道(例如 SMS)上向机器人发送消息 - 会不会是不同的对话?例如,如果我打开一个带有嵌入式 Webchat iframe 的页面,机器人会收到一个“ConversationUpdate”活动并开始一个新的对话。是否有可能在不同的频道上恢复相同的对话? 这是个好问题。我实际上不知道,但我认为不会,因为每次连接时模拟器都会分配一个新的 ConversationId。以上是关于在一定时间后取消提示或对话框 - Bot Framework的主要内容,如果未能解决你的问题,请参考以下文章
Syn Bot - Oscova WidgetChannel 无法显示提示
联想笔记本命令提示符x:windows/system32怎么打开 ?如何修补?