public async Task AddOrUpdateConversationReference(ITurnContext turnContext) { var activity = turnContext.Activity; var timeoutReference = new TimeoutConversationReference(activity.GetConversationReference()); using (var documentClient = new DocumentClient(new Uri(_cosmosUri), _cosmosKey)) { await documentClient.UpsertDocumentAsync(UriFactory.CreateDocumentCollectionUri(_databaseId, _collectionId), timeoutReference); } }
private async Task AddOrUpdateConversationReference(ITurnContext turnContext) { var activity = turnContext.Activity; TimeoutConversationReference timeoutConversation = null; if (_conversationReferences.TryGetValue(activity.Conversation.Id, out timeoutConversation)) { if (timeoutConversation.LastAccessed.AddSeconds(TimeoutSeconds) < DateTime.UtcNow) { await turnContext.SendActivityAsync("Welcome back! Let's start over from the beginning."); await DialogState.DeleteAsync(turnContext); } timeoutConversation.LastAccessed = DateTime.UtcNow; } else { var timeoutReference = new TimeoutConversationReference(activity.GetConversationReference()); _conversationReferences.AddOrUpdate(timeoutReference.ConversationReference.Conversation.Id, timeoutReference, (key, newValue) => timeoutReference); } }