Esempio n. 1
0
        public static async Task <DialogTurnResult> Call <T>(this DialogContext context, object entities = null, object options = null, CancellationToken cancellationToken = default)
            where T : class
        {
            Microsoft.Bot.Builder.Dialogs.Dialog diag = context.Dialogs.Find(typeof(T).Name);
            if (diag == null)
            {
                return(new DialogTurnResult(DialogTurnStatus.Cancelled));
            }

            if (diag is FormDialog <T> )
            {
                FormDialog <T> formDialog = diag as FormDialog <T>;
                var            field      = formDialog.GetType().GetField("_entities", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
                if (field != null)
                {
                    entities = ConvertToLuisModels(entities) ?? Enumerable.Empty <EntityRecommendation>();
                    field.SetValue(formDialog, entities);
                }
            }

            return(await context.BeginDialogAsync(typeof(T).Name, options, cancellationToken));
        }