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; }