예제 #1
0
        public async Task StartAsync()
        {
            var reply = context.MakeMessage();

            reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;

            var estadoPregunta  = "True";
            var estadoPregunta2 = "False";
            var accion          = "Compartir";

            context.PrivateConversationData.SetValue <string>("Accion", accion);

            var estadoRespuesta  = "True";
            var estadoRespuesta2 = "False";

            string confirmacionRespuesta1       = "Tengo esta respuesta para usted:";
            string confirmacionRespuesta2       = "Tengo estas respuestas para usted:";
            string preguntaNoRegistrada1        = "Lo siento, su pregunta no esta registrada, tal vez no escribió la pregunta correctamente";
            string preguntaNoRegistrada2        = "Lo siento, su pregunta no esta registrada";
            string opcionSecundarioDeRespuesta1 = "Pero esta respuesta le podría interesar:";
            string opcionSecundarioDeRespuesta2 = "Pero estas respuestas le podrían interesar:";
            string preguntaConsulta             = "si tiene otra consulta por favor hágamelo saber";

            // Recorrido de la primera parte de la pregunta
            foreach (var entityP1 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra1"))
            {
                var palabra1 = entityP1.Entity.ToLower().Replace(" ", "");
                context.PrivateConversationData.SetValue <string>("Palabra1", palabra1);

                if (palabra1 == "carpeta" || palabra1 == "carpeta")
                {
                    // Se detectó  la segunda parte de la pregunta
                    foreach (var entityP2 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra2"))
                    {
                        var palabra2 = entityP2.Entity.ToLower().Replace(" ", "");
                        if (palabra2 == "contactos" || palabra2 == "contacto")
                        {
                            // Se detectó  la tercera parte de la pregunta
                            foreach (var entityP3 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra3"))
                            {
                                var palabra3 = entityP3.Entity.ToLower().Replace(" ", "");
                                if (palabra3 == "usuarios" || palabra3 == "usuario")
                                {
                                    reply.Attachments = RespuestasOutlook.GetCompartirCarpetaContactosUsuarios();
                                    await context.PostAsync(confirmacionRespuesta1);

                                    await context.PostAsync(reply);

                                    await context.PostAsync(preguntaConsulta);

                                    context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                                    context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                                    return;
                                }
                                else
                                {
                                    reply.Attachments = RespuestasOutlook.GetCompartirCarpetaContactosUsuarios();
                                    await context.PostAsync($"Lo siento, su pregunta no esta registrada, tal vez no escribió correctamente la palabra '{palabra3}'?");

                                    await context.PostAsync(opcionSecundarioDeRespuesta1);

                                    await context.PostAsync(reply);

                                    context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                                    return;
                                }
                            }
                            // No se detectó la tercera parte de la pregunta
                            reply.Attachments = RespuestasOutlook.GetCompartirCarpetaContactosUsuarios();
                            await context.PostAsync(confirmacionRespuesta1);

                            await context.PostAsync(reply);

                            await context.PostAsync(preguntaConsulta);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            return;
                        }
                        else
                        {
                            reply.Attachments = RespuestasOutlook.GetCompartirCarpetaContactosUsuarios();
                            await context.PostAsync($"Lo siento, su pregunta no esta registrada, tal vez no escribió correctamente la palabra '{palabra2}'?");

                            await context.PostAsync(opcionSecundarioDeRespuesta1);

                            await context.PostAsync(reply);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            return;
                        }
                    }
                    // No se detectó la segunda parte de la pregunta
                    reply.Attachments = RespuestasOutlook.GetCompartirCarpetaContactosUsuarios();
                    await context.PostAsync(confirmacionRespuesta1);

                    await context.PostAsync(reply);

                    await context.PostAsync(preguntaConsulta);

                    context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                    return;
                }
                else if (palabra1 == "archivos" || palabra1 == "archivo")
                {
                    // Se detectó el Servicio de la pregunta
                    foreach (var entity in result.Entities.Where(Entity => Entity.Type == "Servicio"))
                    {
                        var serv = entity.Entity.ToLower().Replace(" ", "");
                        if (serv == "word")
                        {
                            reply.Attachments = RespuestasWord.GetCompartirArchivosWord();
                            await context.PostAsync(confirmacionRespuesta1);

                            await context.PostAsync(reply);

                            await context.PostAsync(preguntaConsulta);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                        else if (serv == "excel")
                        {
                            reply.Attachments = RespuestasExcel.GetCompartirLibrosExcelOtrosUsuarios();
                            await context.PostAsync(confirmacionRespuesta1);

                            await context.PostAsync(reply);

                            await context.PostAsync(preguntaConsulta);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                        else if (serv == "powerpoint")
                        {
                            reply.Attachments = RespuestasPowerPoint.GetCompartirPresentacionPowerPoint();
                            await context.PostAsync(confirmacionRespuesta1);

                            await context.PostAsync(reply);

                            await context.PostAsync(preguntaConsulta);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                        else if (serv == "onedrive")
                        {
                            reply.Attachments = RespuestasOneDrive.GetCompartirArchivosCarpetasOneDrive();
                            await context.PostAsync(confirmacionRespuesta1);

                            await context.PostAsync(reply);

                            await context.PostAsync(preguntaConsulta);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                        else
                        {
                            reply.Attachments = Respuestas.GetCompartirArchivos();
                            await context.PostAsync($"Lo siento, {serv} no esta registrado, consulte otra vez el servicio escribiendo ayuda");

                            await context.PostAsync(opcionSecundarioDeRespuesta2);

                            await context.PostAsync(reply);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                    }
                    // Se detectó  la segunda parte de la pregunta
                    foreach (var entityP2 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra2"))
                    {
                        var palabra2 = entityP2.Entity.ToLower().Replace(" ", "");
                        if (palabra2 == "Android" || palabra2 == "android")
                        {
                            reply.Attachments = RespuestasOneDrive.GetCompartirArchivosOneDriveAndroid();
                            await context.PostAsync(reply);

                            await context.PostAsync(preguntaConsulta);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                        else
                        {
                            reply.Attachments = RespuestasOneDrive.GetCompartirArchivosOneDriveAndroid();
                            await context.PostAsync($"Lo siento, su pregunta no esta registrada, tal vez no escribió correctamente la palabra '{palabra2}'?");

                            await context.PostAsync(opcionSecundarioDeRespuesta1);

                            await context.PostAsync(reply);

                            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                    }
                    // No se detectó la segunda parte de la pregunta
                    reply.Attachments = Respuestas.GetCompartirArchivos();
                    await context.PostAsync(confirmacionRespuesta1);

                    await context.PostAsync(reply);

                    await context.PostAsync(preguntaConsulta);

                    context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                    return;
                }
                else if (palabra1 == "blocdenotas" || palabra1 == "páginadenotas" || palabra1 == "páginasdenotas" || palabra1 == "paginadenotas" || palabra1 == "paginasdenotas")
                {
                    reply.Attachments = RespuestasOneNote.GetCompartirPaginaDeNotasBlocDeNotasOneNote();
                    await context.PostAsync(confirmacionRespuesta1);

                    await context.PostAsync(reply);

                    await context.PostAsync(preguntaConsulta);

                    context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta);
                    context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                    return;
                }
                else if (palabra1 == "presentación" || palabra1 == "presentacion" || palabra1 == "presentaciones")
                {
                    reply.Attachments = RespuestasPowerPoint.GetCompartirPresentacionPowerPoint();
                    await context.PostAsync(confirmacionRespuesta1);

                    await context.PostAsync(reply);

                    await context.PostAsync(preguntaConsulta);

                    context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                    return;
                }
                else if (palabra1 == "libro" || palabra1 == "libros")
                {
                    reply.Attachments = RespuestasExcel.GetCompartirLibrosExcelOtrosUsuarios();
                    await context.PostAsync(confirmacionRespuesta1);

                    await context.PostAsync(reply);

                    await context.PostAsync(preguntaConsulta);

                    context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                    return;
                }
                else if (palabra1 == "coautoría" || palabra1 == "coautoria" || palabra1 == "autoría" || palabra1 == "autoria")
                {
                    foreach (var entityP2 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra2"))
                    {
                        var palabra2 = entityP2.Entity.ToLower().Replace(" ", "");
                        if (palabra1 == "presentación" || palabra1 == "presentacion" || palabra1 == "presentaciones")
                        {
                            reply.Attachments = RespuestasPowerPoint.GetCompartirAutoriaPresentacionPowerPoint();
                            await context.PostAsync(confirmacionRespuesta1);

                            await context.PostAsync(reply);

                            await context.PostAsync(preguntaConsulta);

                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                        else
                        {
                            reply.Attachments = RespuestasPowerPoint.GetCompartirAutoriaPresentacionPowerPoint();
                            await context.PostAsync($"Lo siento, su pregunta no esta registrada, tal vez no escribió correctamente la palabra '{palabra2}'?");

                            await context.PostAsync(opcionSecundarioDeRespuesta1);

                            await context.PostAsync(reply);

                            await context.PostAsync(preguntaConsulta);

                            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                            return;
                        }
                    }
                    // No se detectó la segunda parte de la pregunta
                    reply.Attachments = RespuestasPowerPoint.GetCompartirAutoriaPresentacionPowerPoint();
                    await context.PostAsync(opcionSecundarioDeRespuesta1);

                    await context.PostAsync(reply);

                    await context.PostAsync(preguntaConsulta);

                    context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta);
                    return;
                }
                else
                {
                    await context.PostAsync(preguntaNoRegistrada2);

                    await context.PostAsync($"O tal vez no escribió correctamente la palabra '{palabra1}'?");

                    context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta2);
                    context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta2);
                    return;
                }
            }
            // No se detectó la primera parte de la pregunta
            reply.Attachments = Respuestas.GetConsultaV2();
            await context.PostAsync(preguntaNoRegistrada2);

            await context.PostAsync(reply);

            await context.PostAsync("O tal vez no escribió la pregunta correctamente");

            context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta2);
            context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta2);
            return;
        }