Пример #1
0
        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            var    activity       = await result as IMessageActivity;
            string responseString = string.Empty;
            var    query          = activity.Text.ToString();

            if (query == "regresar")
            {
                context.Call(new FAQDialog(), CallBack);
            }
            else
            {
                var knowledgebaseId         = "64b38a8c-0075-4bc9-8466-79c2148d7b05";
                var qnamakerSubscriptionKey = "EndpointKey c7eb7a4f-937e-47cc-8eca-5308d8f7cd07";

                Uri qnamakerUriBase = new Uri("https://inversionqna.azurewebsites.net/qnamaker");
                var builder         = new UriBuilder($"{qnamakerUriBase}/knowledgebases/{knowledgebaseId}/generateAnswer");
                var postBody        = $"{{\"question\": \"{query}\"}}";

                using (WebClient client = new WebClient())
                {
                    client.Encoding = System.Text.Encoding.UTF8;
                    client.Headers.Add("Authorization", qnamakerSubscriptionKey);
                    client.Headers.Add("Content-Type", "application/json");
                    responseString = client.UploadString(builder.Uri, postBody);
                }
                var receivedAnswer = QnAHelper.HandleResponse(responseString);
                await context.PostAsync(receivedAnswer);

                context.Wait(MessageReceivedAsync);
            }
        }
Пример #2
0
        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            var    activity       = await result as IMessageActivity;
            string responseString = string.Empty;
            var    query          = activity.Text.ToString();

            if (query == "regresar")
            {
                context.Call(new FAQDialog(), CallBack);
            }
            else
            {
                var knowledgebaseId         = "7a8ae76d-dc2d-48d8-9791-2b6008d88f43";
                var qnamakerSubscriptionKey = "EndpointKey d459479f-f29d-40d1-aded-bb0b258603ab";

                Uri qnamakerUriBase = new Uri("https://aforeqna2.azurewebsites.net/qnamaker");
                var builder         = new UriBuilder($"{qnamakerUriBase}/knowledgebases/{knowledgebaseId}/generateAnswer");
                var postBody        = $"{{\"question\": \"{query}\"}}";

                using (WebClient client = new WebClient())
                {
                    client.Encoding = System.Text.Encoding.UTF8;
                    client.Headers.Add("Authorization", qnamakerSubscriptionKey);
                    client.Headers.Add("Content-Type", "application/json");
                    responseString = client.UploadString(builder.Uri, postBody);
                }
                var receivedAnswer = QnAHelper.HandleResponse(responseString);
                await context.PostAsync(receivedAnswer);

                context.Wait(MessageReceivedAsync);
            }
        }
Пример #3
0
        public async Task <bool> PushLatestQnA(PushLatestQnA data)
        {
            QnAHelper qnaHelper = new QnAHelper {
                ProxyObj           = ProxyHelper.GetProxyForQnA(),
                QnAHost            = WebApiConstants.QnAHost,
                QnAKey             = WebApiConstants.QnAKey,
                QnAService         = WebApiConstants.QnAService,
                QnAKnowledgeBaseId = WebApiConstants.QnAKnowledgeBaseId
            };

            var lstQnaQuestion = await qnaHelper.GetAllQnAFromKB(WebApiConstants.QnAKnowledgeBaseId);

            logger.Info("Start Push QnAs to QnA Maker");

            var result = await qnaHelper.PushLatestQuestionToQnA(WebApiConstants.QnAKnowledgeBaseId, data.ListQuestionAndAnswers, lstQnaQuestion.qnaDocuments);

            logger.Info("Finish Push QnAs to QnA Maker");

            if (result)
            {
                logger.Info("Start Publish QnA Knowledge Base");

                result = await qnaHelper.PublishQnAKnowledgeBase(WebApiConstants.QnAKnowledgeBaseId);

                logger.Info("Finish Publish QnA Knowledge Base");
            }

            return(await Task.FromResult(result));
        }
Пример #4
0
        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            var    activity       = await result as IMessageActivity;
            string responseString = string.Empty;
            var    query          = activity.Text.ToString();

            string host          = "";
            string EndpointKey   = "";
            string knowledgeBase = "";

            var builder  = new UriBuilder($"{host}/qnamaker/knowledgebases/{knowledgeBase}/generateAnswer");
            var postBody = $"{{\"question\": \"{query}\"}}";

            using (WebClient client = new WebClient())
            {
                client.Encoding = System.Text.Encoding.UTF8;
                client.Headers.Add("Authorization", EndpointKey);
                client.Headers.Add("Content-Type", "application/json");
                responseString = client.UploadString(builder.Uri, postBody);
            }
            var receivedAnswer = QnAHelper.HandleResponse(responseString);
            await context.PostAsync(receivedAnswer);

            context.Wait(MessageReceivedAsync);
        }
Пример #5
0
        private async Task <DialogTurnResult> ActStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var luisResult = await LuisHelper.ExecuteLuisQuery(Configuration, Logger, stepContext.Context, cancellationToken);

            switch (luisResult.Intent)
            {
            case "Book_flight":
                //We need to return flight details
                // Run the BookingDialog giving it whatever details we have from the LUIS call, it will fill out the remainder.
                return(await stepContext.BeginDialogAsync(nameof(BookingDialog), luisResult, cancellationToken));

            //return await stepContext.BeginDialogAsync(nameof(NewerDialog), luisResult, cancellationToken);
            case "AuthDialog_Intent":
                //Type something like "Oauth card" or "Auth Dialog intent"

                //Run the AuthBot Dialog
                return(await stepContext.BeginDialogAsync(nameof(AuthDialog), luisResult, cancellationToken));

            case "APIDialog_Intent":
                //Type something like "Salesforce query" or "I need to check my quota" "I need to check my sales targets"

                //Run the AuthBot Dialog
                return(await stepContext.BeginDialogAsync(nameof(APIDialog), luisResult, cancellationToken));

            case "None":
            case "Cancel":
            default:
                //Default to QnA
                await QnAHelper.ExecuteQnAQuery(Configuration, Logger, stepContext.Context, cancellationToken);

                return(await stepContext.BeginDialogAsync(nameof(MainDialog), null));
            }
        }
        public QnADialog(UserState userState) : base(nameof(QnADialog))
        {
            _globalUserStateAccessor = userState.CreateProperty <GlobalUserState>(nameof(GlobalUserState));

            var waterfallSteps = new WaterfallStep[]
            {
                AskForQuestionAsync,
                DeployAnswerAsync,
            };

            AddDialog(new WaterfallDialog(nameof(WaterfallDialog), waterfallSteps));
            AddDialog(new TextPrompt(textPromptName));
            qnaHandler = new QnAHelper("genericqna", "96ec4044-8149-44a8-a6db-c875a2595140", "EndpointKey 455ea526-1307-46bd-97aa-52abe80ebcd5");

            InitialDialogId = nameof(WaterfallDialog);
        }
Пример #7
0
        public async Task <bool> PublishQnAKnowledgeBase()
        {
            QnAHelper qnaHelper = new QnAHelper
            {
                ProxyObj           = ProxyHelper.GetProxyForQnA(),
                QnAHost            = WebApiConstants.QnAHost,
                QnAKey             = WebApiConstants.QnAKey,
                QnAService         = WebApiConstants.QnAService,
                QnAKnowledgeBaseId = WebApiConstants.QnAKnowledgeBaseId
            };

            logger.Info("Start Publish QnA Knowledge Base");

            var result = await qnaHelper.PublishQnAKnowledgeBase(WebApiConstants.QnAKnowledgeBaseId);

            logger.Info("Finish Publish QnA Knowledge Base");

            return(await Task.FromResult(result));
        }
Пример #8
0
        public async Task <GetQnAKnowledgeBaseResult> GetQnAKnowledgeBase()
        {
            QnAHelper qnaHelper = new QnAHelper
            {
                ProxyObj           = ProxyHelper.GetProxyForQnA(),
                QnAHost            = WebApiConstants.QnAHost,
                QnAKey             = WebApiConstants.QnAKey,
                QnAService         = WebApiConstants.QnAService,
                QnAKnowledgeBaseId = WebApiConstants.QnAKnowledgeBaseId
            };

            logger.Info("Start get QnAs from QnA Maker");

            var lstQuestionResponseString = await qnaHelper.GetAllQnAFromKB(WebApiConstants.QnAKnowledgeBaseId);

            logger.Info("Finish get QnAs from QnA Maker");

            return(await Task.FromResult <GetQnAKnowledgeBaseResult>(lstQuestionResponseString));
        }
Пример #9
0
        public async Task <Result <int> > SubmitAsync(
            Answer answer,
            int questionId)
        {
            ResultCode resultCode;

            if (!_context.Questions.Any(q => q.Id == questionId))
            {
                resultCode = ResultCode.CannotFindQuestion;
            }
            else if (QnAHelper.IsMarkedAnswered(_context, questionId))
            {
                resultCode = ResultCode.CannotSubmitForAnsweredQuestion;
            }
            else
            {
                answer.QuestionId = questionId;
                await SaveAsync(answer);

                resultCode = ResultCode.SuccessfullySubmitted;
            }

            return(new Result <int>(resultCode, answer.Id));
        }
 public bool IsMarkedAnswered(int questionId) =>
 QnAHelper.IsMarkedAnswered(_context, questionId);