Я создаю бота и каждый раз, когда заканчивается разговор, я очищаю состояние разговора. Для этого я отправляю активность с типом endOfConversation
после последнего сообщения.
По методу OnMessageActivityAsync
моего бота я добавил этот код.
turnContext.OnSendActivities(OnSendActivitiesHandlerAsync);
Ведьма должен выполнить этот код:
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 Framework, но при запуске в Microsoft Teams у меня были ошибки. При поиске этого сообщения я обнаружил следующее:
Этот конкретный тип не поддерживается в командах, извините.
https://github.com/microsoft/botframework-sdk/issues/3300
В журналах я вижу это, когда хочу отправить тип endOfConversation
.
{
"code": "BadArgument",
"message": "Unknown activity type",
"innerHttpError": null
}
Я хотел бы отправить тип окончания разговора, потому что на основании этого типа я мог очистить состояние разговора на стороне сервера бота. В этом состоянии я сохраняю некоторые объекты, которые больше не нужны, когда разговор заканчивается.
Так что мой вопрос теперь состоит в том, как я могу очистить состояние разговора в конце разговора, не используя endOfConversation
тип