public async Task StartAsync() { var reply = context.MakeMessage(); reply.AttachmentLayout = AttachmentLayoutTypes.Carousel; var estadoPregunta = "True"; var estadoPregunta2 = "False"; var accion = "Aplicar"; context.PrivateConversationData.SetValue <string>("Accion", accion); var estadoRespuesta = "True"; var estadoRespuesta2 = "False"; string preguntaConsulta = "¿Tiene alguna otra consulta?"; 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:"; // 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 == "categoría" || palabra1 == "categorías" || palabra1 == "categoria" || palabra1 == "categorias") { foreach (var entityP2 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra2")) { var palabra2 = entityP2.Entity.ToLower().Replace(" ", ""); if (palabra2 == "color") { reply.Attachments = RespuestasOutlook.GetCrearAsignarCategoriasColor(); 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.GetCrearAsignarCategoriasColor(); 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; } } await context.PostAsync($"Quizás desea saber como asignar categorías de color, tengo esto: "); reply.Attachments = RespuestasOutlook.GetCrearAsignarCategoriasColor(); await context.PostAsync(reply); await context.PostAsync($"Caso contrario, la pregunta no se encuentra registrada o vuelva a escribir correctamente la pregunta."); context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta); context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta2); return; } // ------------------------------------------------------------------- else if (palabra1 == "diseñosdefondo" || palabra1 == "diseñosdefondos" || palabra1 == "fondos" || palabra1 == "fondo" || palabra1 == "diseño" || palabra1 == "diseños") { foreach (var entityP2 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra2")) { var palabra2 = entityP2.Entity.ToLower().Replace(" ", ""); if (palabra2 == "mensajes" || palabra2 == "mensaje") { reply.Attachments = RespuestasOutlook.GetCrearDiseñosDePlantillaParaMensajesV2(); await context.PostAsync(confirmacionRespuesta2); 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.GetAplicarFondosTemasMensajes(); 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>("EstadoPregunta", estadoPregunta); context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta); return; } } await context.PostAsync($"Quizás desea saber como aplicar un tema a mensajes de correo, tengo esto: "); reply.Attachments = RespuestasOutlook.GetAplicarFondosTemasMensajes(); await context.PostAsync(reply); await context.PostAsync($"Caso contrario, la pregunta no se encuentra registrada o vuelva a escribir correctamente la pregunta."); context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta); context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta2); return; } // ------------------------------------------------------------------- else if (palabra1 == "espaciosimple" || palabra1 == "espaciossimples") { foreach (var entityP2 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra2")) { var palabra2 = entityP2.Entity.ToLower().Replace(" ", ""); if (palabra2 == "línea" || palabra2 == "líneas" || palabra2 == "linea" || palabra2 == "lineas") { reply.Attachments = RespuestasWord.GetAplicarEspacioSimpleLineasDocumento(); 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 == "documento" || palabra1 == "documentos") { reply.Attachments = RespuestasWord.GetAplicarEspacioSimpleLineasDocumento(); 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 = RespuestasWord.GetAplicarEspacioSimpleLineasDocumento(); 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 = RespuestasWord.GetAplicarEspacioSimpleLineasDocumento(); await context.PostAsync(preguntaNoRegistrada1); await context.PostAsync(opcionSecundarioDeRespuesta1); await context.PostAsync(reply); context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta); return; } // ------------------------------------------------------------------- else if (palabra1 == "estilos" || palabra1 == "estilo") { foreach (var serv in result.Entities.Where(Entity => Entity.Type == "Servicio")) { var servicio1 = serv.Entity.ToLower().Replace(" ", ""); if (servicio1 == "word") { reply.Attachments = RespuestasWord.GetAplicarEstiloTextoWord(); 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 (servicio1 == "outlook") { reply.Attachments = Respuestas.GetAplicarEstilos(); await context.PostAsync(confirmacionRespuesta2); 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.GetAplicarEstilos(); await context.PostAsync($"Lo siento, su pregunta no esta registrada, no se encuentra el servicio '{servicio1}'?"); await context.PostAsync(opcionSecundarioDeRespuesta1); await context.PostAsync(reply); await context.PostAsync(preguntaConsulta); context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta); context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta); return; } } //obtener el producto si este a sido escodigo anteriormente var servicio = "Servicio"; context.PrivateConversationData.TryGetValue <string>("tipoDeServicio", out servicio); if (servicio == "Word" || servicio == "Outlook") { reply.Attachments = Respuestas.GetAplicarEstilos(); await context.PostAsync(confirmacionRespuesta1); await context.PostAsync(reply); await context.PostAsync(preguntaConsulta); context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta); return; } else { // No se detectó la segunda parte de la pregunta reply.Attachments = Respuestas.GetAplicarEstilos(); await context.PostAsync(preguntaNoRegistrada1); await context.PostAsync(opcionSecundarioDeRespuesta1); await context.PostAsync(reply); await context.PostAsync(preguntaConsulta); context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta); context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta); return; } } // ------------------------------------------------------------------- else if (palabra1 == "efecto" || palabra1 == "efectos") { foreach (var entityP2 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra2")) { var palabra2 = entityP2.Entity.ToLower().Replace(" ", ""); if (palabra2 == "animación" || palabra2 == "animacion" || palabra2 == "animaciones") { reply.Attachments = RespuestasPowerPoint.GetAplicarVariosEfectosAnimacion(); 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 = RespuestasPowerPoint.GetAplicarVariosEfectosAnimacion(); 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 = reply.Attachments = RespuestasPowerPoint.GetAplicarVariosEfectosAnimacion(); await context.PostAsync(preguntaNoRegistrada1); await context.PostAsync(opcionSecundarioDeRespuesta1); await context.PostAsync(reply); context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta); context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta2); return; } // ------------------------------------------------------------------- else if (palabra1 == "animación" || palabra1 == "animacion" || palabra1 == "animaciones") { reply.Attachments = RespuestasPowerPoint.GetAplicarVariosEfectosAnimacion(); 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 == "plantilla" || palabra1 == "plantillas") { foreach (var entityP2 in result.Entities.Where(Entity => Entity.Type == "Pregunta::Palabra2")) { var palabra2 = entityP2.Entity.ToLower().Replace(" ", ""); if (palabra2 == "presentación" || palabra2 == "presentacion" || palabra2 == "presentaciones") { reply.Attachments = RespuestasPowerPoint.GetAplicarPlantillaPresentacion(); 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 = RespuestasPowerPoint.GetAplicarPlantillaPresentacion(); 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 = RespuestasPowerPoint.GetAplicarPlantillaPresentacion(); await context.PostAsync(preguntaNoRegistrada1); await context.PostAsync(opcionSecundarioDeRespuesta1); await context.PostAsync(reply); context.PrivateConversationData.SetValue <string>("EstadoPregunta", estadoPregunta); context.PrivateConversationData.SetValue <string>("EstadoRespuesta", estadoRespuesta2); 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 await context.PostAsync(preguntaNoRegistrada2); reply.Attachments = Respuestas.GetConsultaV2(); 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; }