Exemplo n.º 1
0
        protected override async Task OnMessageActivityAsync(ITurnContext <IMessageActivity> turnContext, CancellationToken cancellationToken)
        {
            _logger.LogInformation("Calling QnA Maker");

            QnAAnswerModel response = await _qnAService
                                      .GenerateAnswer(turnContext.Activity.Text, turnContext.Activity.Locale);

            if (response != null)
            {
                IEnumerable <string> suggestedActions = response.Context?.Prompts?.Select(p => p.DisplayText);

                if (suggestedActions != null)
                {
                    await turnContext.SendActivityAsync(
                        MessageFactory.SuggestedActions(
                            response.Context?.Prompts?.Select(p => p.DisplayText),
                            response.Answer), cancellationToken);
                }
                else
                {
                    await turnContext.SendActivityAsync(
                        MessageFactory.Text(response.Answer), cancellationToken);
                }
            }
            else
            {
                await turnContext.SendActivityAsync(MessageFactory.Text("No QnA Maker answers were found."), cancellationToken);
            }
        }
Exemplo n.º 2
0
        public async Task <DialogTurnResult> GetQnAAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken = default)
        {
            // Call QnA Maker and get results.
            _qnaResult = await _qnAService.GenerateAnswer(stepContext.Context.Activity.Text, stepContext.Context.Activity.Locale);

            if (_qnaResult == null)
            {
                // No answer found.
                await stepContext.Context.SendActivityAsync("No contemplamos esa opción.");

                return(await stepContext.EndDialogAsync());
            }
            return(await stepContext.NextAsync());
        }
Exemplo n.º 3
0
        internal async Task <QnAAnswerModel> GenerateAnswer(string message, string lang)
        {
            QnAAnswerModel qnAResponse = null;

            string route = $"generateAnswer";

            var requestBody = JsonConvert.SerializeObject(new { question = message });

            HttpContent httpContent = new StringContent(requestBody, Encoding.UTF8, "application/json");

            var response = await _client.PostAsync(route, httpContent);

            if (response.IsSuccessStatusCode)
            {
                qnAResponse = (await response.Content.ReadAsAsync <QnaResponse>()).Answers.FirstOrDefault();
            }

            return(qnAResponse);
        }