Ejemplo n.º 1
0
        public IActionResult Generate([FromBody] TokenCreationPayload payload)
        {
            // according to https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-authentication?view=azure-bot-service-4.0#generate-token-versus-start-conversation
            //     we don't start a conversation , we just issue a new token that is valid for specific conversation
            var userId         = payload.UserId;
            var conversationId = Guid.NewGuid().ToString();
            var claims         = new List <Claim>();

            claims.Add(new Claim(TokenBuilder.ClaimTypeConversationID, conversationId));
            var expiresIn = this._inDirectlineSettings.TokenExpiresIn;
            var token     = this._tokenBuilder.BuildToken(userId, claims, expiresIn);

            return(new OkObjectResult(new DirectLineConversation {
                ConversationId = conversationId,
                Token = token,
                ExpiresIn = expiresIn,
            }));
        }
Ejemplo n.º 2
0
        private async Task <ConversationInfo> StartNewConversationAsync(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentNullException(nameof(userId));
            }
            var payload = new TokenCreationPayload {
                UserId   = userId,
                Password = "******",
            };
            var initConversation = await this._directLineClient.GenerateTokenAsync(payload)
                                   .ConfigureAwait(false);

            var directLineConversation = await this._directLineClient.StartConversationAsync(initConversation.Token)
                                         .ConfigureAwait(false);

            await this._ucstore.StoreAsync(userId, directLineConversation, "")
            .ConfigureAwait(false);

            return(await this._ucstore.GetConversationAsync(userId));
        }
Ejemplo n.º 3
0
        public async Task <DirectLineConversation> GenerateTokenAsync(TokenCreationPayload payload)
        {
            if (payload == null)
            {
                throw new ArgumentNullException(nameof(payload));
            }
            var endpoint = "/v3/directline/tokens/generate";
            var req      = new HttpRequestMessage(HttpMethod.Post, endpoint);

            req.Content = new StringContent(
                JsonConvert.SerializeObject(payload),
                Encoding.UTF8,
                "application/json"
                );
            var resp = await this._httpClient.SendAsync(req);

            var json = await resp.Content.ReadAsStringAsync();

            var x = JsonConvert.DeserializeObject <DirectLineConversation>(json);

            return(x);
        }