Пример #1
0
        public async Task <QnAResult[]> QueryQnAService(string query, QnABotState qnAcontext, ITurnContext turnContext)
        {
            var requestUrl    = $"{this._endpoint.Host}/knowledgebases/{this._endpoint.KnowledgeBaseId}/generateanswer";
            var request       = new HttpRequestMessage(HttpMethod.Post, requestUrl);
            var requestObject = new
            {
                question       = query,
                top            = this._options.Top,
                context        = qnAcontext,
                strictFilters  = this._options.StrictFilters,
                metadataBoost  = this._options.MetadataBoost,
                scoreThreshold = this._options.ScoreThreshold,
            };
            var jsonRequest = JsonConvert.SerializeObject(requestObject, Formatting.None);

            request.Headers.Add("Authorization", $"EndpointKey {this._endpoint.EndpointKey}");
            request.Content = new StringContent(jsonRequest, System.Text.Encoding.UTF8, "application/json");

            await LuisServiceV3.LogCustomTrace(requestObject, turnContext, "QnA Request", "QnA");

            var response = await this._httpClient.SendAsync(request).ConfigureAwait(false);

            response.EnsureSuccessStatusCode();

            var contentString = response.Content.ReadAsStringAsync().Result;

            var result = JsonConvert.DeserializeObject <QnAResultList>(contentString);
            await LuisServiceV3.LogCustomTrace(result, turnContext, "QnA Result", "QnA");

            return(result.Answers);
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BasicBot"/> class.
        /// </summary>
        /// <param name="botServices">Bot services.</param>
        /// <param name="accessors">Bot State Accessors.</param>
        public BasicBot(BotServices services, UserState userState, ConversationState conversationState, ILoggerFactory loggerFactory)
        {
            _services          = services ?? throw new ArgumentNullException(nameof(services));
            _userState         = userState ?? throw new ArgumentNullException(nameof(userState));
            _conversationState = conversationState ?? throw new ArgumentNullException(nameof(conversationState));

            _qnaStateAccessor      = _userState.CreateProperty <QnABotState>(nameof(QnABotState));
            _greetingStateAccessor = _userState.CreateProperty <GreetingState>(nameof(GreetingState));
            _dialogStateAccessor   = _conversationState.CreateProperty <DialogState>(nameof(DialogState));

            // Verify LUIS configuration.
            if (!_services.LuisServices.ContainsKey(LuisConfiguration))
            {
                throw new InvalidOperationException($"The bot configuration does not contain a service type of `luis` with the id `{LuisConfiguration}`.");
            }

            laLigaBL         = new LaLigaBL();
            luisServiceV3    = new LuisServiceV3();
            qnAServiceHelper = new QnAServiceHelper();

            Dialogs = new DialogSet(_dialogStateAccessor);
            Dialogs.Add(new GreetingDialog(_greetingStateAccessor, loggerFactory));
        }