Я установил бота, у которого есть обычный стек диалога, в котором каждый диалог сохраняет данные о состоянии в базе данных Cosmos в Azure. Когда диалог заканчивается, я использую OnEndDialogAsyn c, чтобы удалить данные, указывающие c для этого диалога.
Мой вопрос: как мне определить, когда закончится весь разговор, чтобы я мог удалить весь предмет? Или разговор никогда не заканчивается?
Мой текущий код, который удаляет все данные диалога в конце:
protected override async Task OnEndDialogAsync(ITurnContext context, DialogInstance instance, DialogReason reason, CancellationToken cancellationToken)
{
DialogStateDictionary dictionary = await Dependencies.StateAccessor.GetAsync(context, () => null);
if (dictionary != null && dictionary.ContainsKey(DialogID) == true)
{
dictionary[DialogID] = null;
}
await Dependencies.StateAccessor.SetAsync(context, dictionary);
}
Код для удаления всего объекта будет:
await Dependencies.StateAccessor.SetAsync(context, null);