Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LuisBot"/> class.
        /// </summary>
        /// <param name="services">Services configured from the ".bot" file.</param>
        public LuisBot(BotServices services, LuisBotAccessors accessors, GrossIncomeIntentWorker grossIncomeIntentWorker, NetIncomeIntentWorker netIncomeIntentWorker, OutgoingInvoicePaymentCheckWorker outgoingInvoicePaymentCheckWorker, LogoutWorker logoutWorker, HelpWorker helpWorker, GreetingWorker greetingWorker, ILoggerFactory loggerFactory)
        {
            _services = services ?? throw new System.ArgumentNullException(nameof(services));

            var luisKey = GetLuisKey();

            if (!_services.LuisServices.ContainsKey(luisKey))
            {
                throw new System.ArgumentException($"Invalid configuration. Please check your '.bot' file for a LUIS service named '{luisKey}'.");
            }

            _stateAccessors = accessors ?? throw new ArgumentNullException(nameof(accessors));

            _grossIncomeIntentWorker           = grossIncomeIntentWorker ?? throw new System.ArgumentNullException(nameof(grossIncomeIntentWorker));
            _netIncomeIntentWorker             = netIncomeIntentWorker ?? throw new System.ArgumentNullException(nameof(netIncomeIntentWorker));
            _outgoingInvoicePaymentCheckWorker = outgoingInvoicePaymentCheckWorker ?? throw new System.ArgumentNullException(nameof(outgoingInvoicePaymentCheckWorker));
            _logoutWorker   = logoutWorker ?? throw new System.ArgumentNullException(nameof(logoutWorker));
            _helpWorker     = helpWorker ?? throw new System.ArgumentNullException(nameof(helpWorker));
            _greetingWorker = greetingWorker ?? throw new System.ArgumentNullException(nameof(greetingWorker));
            _loggerFactory  = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));

            _dialogs = new DialogSet(_stateAccessors.ConversationDialogState);

            // Add the OAuth prompts and related dialogs into the dialog set
            _dialogs.Add(LoginPrompt("MastreenoAuth"));
        }
Exemplo n.º 2
0
        public async Task InvokeAsync(HttpContext context, GrossIncomeIntentWorker grossIncomeIntentWorker, NetIncomeIntentWorker netIncomeIntentWorker, OutgoingInvoicePaymentCheckWorker outgoingInvoicePaymentCheckWorker)
        {
            var streamReader = new StreamReader(context.Request.Body);
            var rawBody      = await streamReader.ReadToEndAsync();

            var           skillRequest = JsonConvert.DeserializeObject <SkillRequest>(rawBody.ToString());
            SkillResponse response     = null;

            if (skillRequest.Request is IntentRequest)
            {
                var request    = (IntentRequest)skillRequest.Request;
                var intentName = request.Intent.Name;
                if (intentName == "Gross_Income")
                {
                    var queryParams = QueryParametersFactory
                                      .Accountancy
                                      .GrossIncome.Parse(request);
                    var msg = grossIncomeIntentWorker.Do(queryParams);
                    response = ResponseBuilder.Tell(msg);
                }
                else if (intentName == "Net_Income")
                {
                    var queryParams = QueryParametersFactory
                                      .Accountancy
                                      .NetIncome.Parse(request);
                    var msg = netIncomeIntentWorker.Do(queryParams);
                    response = ResponseBuilder.Tell(msg);
                }
                else if (intentName == "Outgoing_Invoice_Payment_Check")
                {
                    var queryParams = QueryParametersFactory
                                      .Accountancy
                                      .OutgoingInvoicePaymentCheck.Parse(request);
                    var msg = outgoingInvoicePaymentCheckWorker.Do(queryParams);
                    response = ResponseBuilder.Tell(msg);
                }
                else
                {
                    var msg = "Alas, I couldn't understand what you asked for.";
                    response = ResponseBuilder.Tell(msg);
                }
            }
            else if (skillRequest.Request is LaunchRequest)
            {
                var request  = (LaunchRequest)skillRequest.Request;
                var msg      = "Hi, I am Martin: how can I help you?";
                var reprompt = "Ground control to major Tom: Martin's still waiting for you here.";
                response = ResponseBuilder.Ask(msg, new Reprompt(reprompt));
            }
            var responseJson = JsonConvert.SerializeObject(response);
            await context.Response.WriteAsync(responseJson);

            await _next(context);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LuisBot"/> class.
 /// </summary>
 /// <param name="services">Services configured from the ".bot" file.</param>
 public LuisBot(BotServices services, GrossIncomeIntentWorker grossIncomeIntentWorker, NetIncomeIntentWorker netIncomeIntentWorker, OutgoingInvoicePaymentCheckWorker outgoingInvoicePaymentCheckWorker, ILoggerFactory loggerFactory)
 {
     _services = services ?? throw new System.ArgumentNullException(nameof(services));
     if (!_services.LuisServices.ContainsKey(LuisKey))
     {
         throw new System.ArgumentException($"Invalid configuration. Please check your '.bot' file for a LUIS service named '{LuisKey}'.");
     }
     _grossIncomeIntentWorker           = grossIncomeIntentWorker ?? throw new System.ArgumentNullException(nameof(grossIncomeIntentWorker));
     _netIncomeIntentWorker             = netIncomeIntentWorker ?? throw new System.ArgumentNullException(nameof(netIncomeIntentWorker));
     _outgoingInvoicePaymentCheckWorker = outgoingInvoicePaymentCheckWorker ?? throw new System.ArgumentNullException(nameof(outgoingInvoicePaymentCheckWorker));
     _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
 }