如何处理botframework SDK3 C中的超时#
我很抱歉,我是一个新手,我有这么多问题 我的机器人状态保存在数据库中。所以它永远不会超时。我使用团队。 但如果用户在10分钟内没有回复,我想重启对话 这是我的解决方案。如何处理botframework SDK3 C中的超时#,botframework,Botframework,我很抱歉,我是一个新手,我有这么多问题 我的机器人状态保存在数据库中。所以它永远不会超时。我使用团队。 但如果用户在10分钟内没有回复,我想重启对话 这是我的解决方案。 据我所知,我还制作了一本静态字典,它可以帮助我轻松地处理每一次对话的计时器。在的帮助下,我打断了堆栈。但一旦结束,它将回到最初的对话。解决这个问题。我根据清除了状态我相信有很多方法可以解决这个问题,但这里有一种方法你可以尝试 在您的Global.asax中 为线程定义此取消令牌源 CancellationTokenSource
据我所知,我还制作了一本静态字典,它可以帮助我轻松地处理每一次对话的计时器。在的帮助下,我打断了堆栈。但一旦结束,它将回到最初的对话。解决这个问题。我根据清除了状态我相信有很多方法可以解决这个问题,但这里有一种方法你可以尝试 在您的Global.asax中 为线程定义此取消令牌源
CancellationTokenSource _getTokenAsyncCancellation = new CancellationTokenSource();
在应用程序中,用while循环设置一个任务线程。它看起来像这样:
Task.Factory.StartNew(async () =>
{
while (!_getTokenAsyncCancellation.IsCancellationRequested)
{
try
{
//Check timespan between last message timestamp vs NOW
//if timespan > 9 minutes
// send message
}
catch (Exception ex)
{
Trace.TraceError(ex.Message);
}
await Task.Delay(TimeSpan.FromMinutes(1), _getTokenAsyncCancellation.Token).ConfigureAwait(false);
}
}).ConfigureAwait(false);
另外,添加一个Application_edn方法,以清晰地显示内容
protected void Application_End()
{
_getTokenAsyncCancellation.Cancel();
}
现在,你还没做完。您还需要跟踪用户最后一条消息的时间戳。基本上,每次bot从用户那里接收到一条新消息时,yo都会设置这个时间戳,while循环中的代码会对此进行检查
我希望这会对你有所帮助,并为你提供一些想法。我相信有很多方法可以解决这个问题,但这里有一种方法你可以尝试 在您的Global.asax中 为线程定义此取消令牌源
CancellationTokenSource _getTokenAsyncCancellation = new CancellationTokenSource();
在应用程序中,用while循环设置一个任务线程。它看起来像这样:
Task.Factory.StartNew(async () =>
{
while (!_getTokenAsyncCancellation.IsCancellationRequested)
{
try
{
//Check timespan between last message timestamp vs NOW
//if timespan > 9 minutes
// send message
}
catch (Exception ex)
{
Trace.TraceError(ex.Message);
}
await Task.Delay(TimeSpan.FromMinutes(1), _getTokenAsyncCancellation.Token).ConfigureAwait(false);
}
}).ConfigureAwait(false);
另外,添加一个Application_edn方法,以清晰地显示内容
protected void Application_End()
{
_getTokenAsyncCancellation.Cancel();
}
现在,你还没做完。您还需要跟踪用户最后一条消息的时间戳。基本上,每次bot从用户那里接收到一条新消息时,yo都会设置这个时间戳,while循环中的代码会对此进行检查
我希望这对您有所帮助,并为您提供一些尝试的想法。非常感谢您。。对不起,我真的是个新手。你能告诉我如何在这里发送信息吗?//发送信息”。什么时候调用Application_End?这开始变得非常复杂,可能是一个单独的问题。看看GitHib中的这个。它展示了如何创建和发送临时消息。这就是你将在你的线程中所做的。您需要一种方法来获取所有必要的ID和值。您可能会将最后一条消息时间存储在状态中。谢谢。你有没有办法结束MS团队中的所有对话?非常感谢。。对不起,我真的是个新手。你能告诉我如何在这里发送信息吗?//发送信息”。什么时候调用Application_End?这开始变得非常复杂,可能是一个单独的问题。看看GitHib中的这个。它展示了如何创建和发送临时消息。这就是你将在你的线程中所做的。您需要一种方法来获取所有必要的ID和值。您可能会将最后一条消息时间存储在状态中。谢谢。你有没有办法结束MS团队中的所有对话?