コード例 #1
0
        private async Task<bool> EnsureTokenIsValid()
        {
            var res = false;

            if (masterClient == null ||
                (string.IsNullOrWhiteSpace(conversationToken) || string.IsNullOrWhiteSpace(ConversationId))
                || DateTime.UtcNow > convoTokenExpirationDate || ConversationClient == null) return res;

            //MK renew only when getting close to end date (~5 min)
            if (DateTime.UtcNow.AddMinutes(-5) > convoTokenExpirationDate)
            {
                var refreshConvoTokenResponse = await ConversationClient.Tokens.RenewTokenWithOperationResponseAsync(ConversationId);
                if (!string.IsNullOrWhiteSpace(refreshConvoTokenResponse?.Body))
                {
                    conversationToken = refreshConvoTokenResponse.Body;
                    convoTokenExpirationDate = DateTimeOffset.UtcNow.AddMinutes(Utilities.Constants.ConvoTokenExpirationTimeInMinutes);
                    ConversationClient = new DirectLinkApiClient(new TokenCredentials(conversationToken, TenantId), new LoggingHttpHandler());
                    res = true;
                }
                else
                {
                    //TODO handle refresh of new conversation token failure
                }
            }
            else
            {
                res = true;
            }

            return res;
        }
コード例 #2
0
        private async Task<string> StartNewConversation()
        {
            var newConvoTokenResponse = await masterClient.Tokens.GenerateTokenForNewConversationWithOperationResponseAsync();
            if (!string.IsNullOrWhiteSpace(newConvoTokenResponse?.Body))
            {
                ConversationClient = new DirectLinkApiClient(new TokenCredentials(newConvoTokenResponse.Body, TenantId), new LoggingHttpHandler());
                var newConvoResponse = await ConversationClient.Conversations.NewConversationWithOperationResponseAsync();
                if (!string.IsNullOrWhiteSpace(newConvoResponse?.Body?.ConversationId))
                {
                    conversationToken = newConvoResponse.Body.Token;
                    convoTokenExpirationDate = DateTimeOffset.UtcNow.AddMinutes(Utilities.Constants.ConvoTokenExpirationTimeInMinutes);

                    return newConvoResponse.Body.ConversationId;
                }
                else
                {
                    //TODO handle new conversation creation failure
                }
            }
            else
            {
                //TODO handle generation of new conversation token failure
            }

            return null;
        }