Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft团队在对话结束时清除对话状态的可能方法_C#_Botframework_Microsoft Teams - Fatal编程技术网

C# Microsoft团队在对话结束时清除对话状态的可能方法

C# Microsoft团队在对话结束时清除对话状态的可能方法,c#,botframework,microsoft-teams,C#,Botframework,Microsoft Teams,我正在创建一个bot,每次会话结束时,我都要清除会话状态。为此,我在最后一条消息之后发送了一个类型为endOfConversation的活动 在我的bot的messageactivitysync方法中,我添加了这段代码 turnContext.OnSendActivities(OnSendActivitiesHandlerAsync); Witch必须执行以下代码: private async Task<ResourceResponse[]> OnSendActivitiesHan

我正在创建一个bot,每次会话结束时,我都要清除会话状态。为此,我在最后一条消息之后发送了一个类型为
endOfConversation
的活动

在我的bot的messageactivitysync方法
中,我添加了这段代码

turnContext.OnSendActivities(OnSendActivitiesHandlerAsync);
Witch必须执行以下代码:

private async Task<ResourceResponse[]> OnSendActivitiesHandlerAsync(ITurnContext turnContext, List<Activity> activities, Func<Task<ResourceResponse[]>> next)
{
    foreach (Activity activity in activities)
    {
        if (activity.Type == ActivityTypes.EndOfConversation)
        {
            await _conversationState.ClearStateAsync(turnContext); // <-- `_conversationState` is a global variable type of `BotState`.
        }
    }

    return await next();
}
我希望发送一个会话结束类型,因为基于该类型,我可以清除bot服务器端的会话状态。在这种状态下,当对话结束时,我存储一些不再相关的对象

因此,我现在的问题是,如果不使用
endOfConversation
类型,如何在对话结束时清除对话状态?

您提供的链接中的“RichMoe”表示团队不支持此操作(2017年),我认为这一点仍然正确-我认为团队没有“结束”的概念例如,一个网站上的支持机器人会像任何对话一样,团队会试图永远保存整个聊天历史记录


如果我可以尝试帮助解决一些相关问题,或许您可以解释为什么需要“结束”对话。

如果团队中的对话从未真正“结束”,那么清除对话状态是否正确?从理论上讲,用户将来可能会回来,并期望bot从任何角度继续运行。如果您确实有短期项目,您可以使用备用缓存机制,并设置到期日期+时间,就像ideaA用例是服务台或远程顾问场景中的机器人一样。用户需要有一种方式来表明他们已完成此支持会话。在Skype for Business中,他们只需关闭聊天窗口。团队现在有一个1-1和会议的弹出/取消锁定功能,但是这里的关闭操作只是一个重做,没有事件发送给远程方(bot)。我们最终在bot端实现了一个非活动计时器。这不是一个理想的情况,但目前所有这些都在团队中起作用。
{
    "code": "BadArgument",
    "message": "Unknown activity type",
    "innerHttpError": null
}