コード例 #1
0
ファイル: VehicleSettingsDialog.cs プロジェクト: STHQ/AI
        /// <summary>
        /// Take the users input for setting validation and validate it matches the chosen setting - e.g. off for park assist or 21c for temperature.
        /// </summary>
        /// <param name="promptContext">Prompt Context.</param>
        /// <param name="cancellationToken">Cancellation Token.</param>
        /// <returns>Whether prompt value was validated.</returns>
        private async Task <bool> SettingValueSelectionValidator(PromptValidatorContext <FoundChoice> promptContext, CancellationToken cancellationToken)
        {
            var state = await Accessor.GetAsync(promptContext.Context);

            if (promptContext.Recognized != null && promptContext.Recognized.Succeeded)
            {
                // Use the value selection LUIS model to perform validation of the users entered setting value
                VehicleSettingsValueSelection valueSelectionResult = await vehicleSettingValueSelectionLuisRecognizer.RecognizeAsync <VehicleSettingsValueSelection>(promptContext.Context, CancellationToken.None);

                List <string> valueEntities = new List <string>();
                if (valueSelectionResult.Entities.VALUE != null)
                {
                    valueEntities.AddRange(valueSelectionResult.Entities.VALUE);
                }
                else if (valueSelectionResult.Entities.SETTING != null)
                {
                    valueEntities.AddRange(valueSelectionResult.Entities.SETTING);
                }

                settingFilter.ApplySelectionToSettingValues(state, valueEntities);

                return(true);
            }

            return(false);
        }
コード例 #2
0
        /// <summary>
        /// Take the users input for setting validation and validate it matches the chosen setting - e.g. off for park assist or 21c for temperature.
        /// </summary>
        /// <param name="promptContext">Prompt Context.</param>
        /// <param name="cancellationToken">Cancellation Token.</param>
        /// <returns>Whether prompt value was validated.</returns>
        private async Task <bool> SettingValueSelectionValidator(PromptValidatorContext <FoundChoice> promptContext, CancellationToken cancellationToken)
        {
            var state = await Accessor.GetAsync(promptContext.Context);

            if (promptContext.Recognized != null && promptContext.Recognized.Succeeded)
            {
                // The response from the user might be the exact setting name or more likely something like "first one" or "last one" so we need to ensure the activity text (used by the LUIS recognizer) is correct
                // No way to identify this situation so we override
                string valueChoice = promptContext.Recognized.Value.Value;
                promptContext.Context.Activity.Text = valueChoice;

                // Use the value selection LUIS model to perform validation of the users entered setting value
                VehicleSettingsValueSelection valueSelectionResult = await vehicleSettingValueSelectionLuisRecognizer.RecognizeAsync <VehicleSettingsValueSelection>(promptContext.Context, CancellationToken.None);

                List <string> valueEntities = new List <string>();
                if (valueSelectionResult.Entities.VALUE != null)
                {
                    valueEntities.AddRange(valueSelectionResult.Entities.VALUE);
                }
                else if (valueSelectionResult.Entities.SETTING != null)
                {
                    valueEntities.AddRange(valueSelectionResult.Entities.SETTING);
                }

                var selectedValue = settingFilter.ApplySelectionToSettingValues(state, valueEntities);
                // We identified a setting value, proceed
                if (selectedValue != null)
                {
                    state.Changes = selectedValue;
                    return(true);
                }
            }

            return(false);
        }
コード例 #3
0
        public void AddRecognizerResult(VehicleSettingsValueSelection luisResult)
        {
            // Remove transient entity types.
            Entities.Remove("INDEX");

            if (luisResult.Entities.INDEX != null)
            {
                AddEntities(nameof(luisResult.Entities.INDEX), luisResult.Entities.INDEX);
            }

            if (luisResult.Entities.SETTING != null)
            {
                AddEntities(nameof(luisResult.Entities.SETTING), luisResult.Entities.SETTING);
            }

            if (luisResult.Entities.VALUE != null)
            {
                AddEntities(nameof(luisResult.Entities.VALUE), luisResult.Entities.VALUE);
            }
        }