/// <summary> /// Método que categoriza inputs, dándole una etiqueta que defina qué tipo de interacción es. /// </summary> /// <returns>Objeto Mensaje (contiene el contenido original del mensaje en un string, las frases clave /// en una lista de strings y un campo de TipoMensaje.</returns> /// //Aplicamos patrón Creator porque TaggerMensajes contiene los datos que serán provistos para //inicializar instancias de Mensaje, y tiene un método que devuelve objetos del tipo Mensaje //(TaggerMensajes usa de forma muy cercana objetos Mensaje) public void GetMensajeEntrante() { Mensaje mensaje = this.EtiquetarMensaje(); this.mediador.Notificar(mensaje); }
/// <summary> /// El método notificar recibe un mensaje y según su tipo continúa con el flujo de comunicación interna. /// </summary> /// <param name="mensaje"></param> public void Notificar(Mensaje mensaje) { switch (mensaje.Tipo()) { case TipoMensaje.Genero: if ((ultimoEnvio == TipoEnvio.Genero) || (ultimoEnvio == TipoEnvio.Saludo)) { generadorPerfil.SetGenero(mensaje.Contenido()); ProcesamientoExitoso = true; } else { ProcesamientoExitoso = false; } break; case TipoMensaje.Numero: switch (ultimoEnvio) { case TipoEnvio.Edad: generadorPerfil.SetEdad(mensaje.Contenido()); ProcesamientoExitoso = true; break; case TipoEnvio.PrecioMax: generadorPerfil.SetPrecioMaximo(mensaje.Contenido()); ProcesamientoExitoso = true; break; case TipoEnvio.PrecioMin: generadorPerfil.SetPrecioMinimo(mensaje.Contenido()); ProcesamientoExitoso = true; break; default: ProcesamientoExitoso = false; break; } break; case TipoMensaje.Interes: if ((ultimoEnvio == TipoEnvio.Interes) || (ultimoEnvio == TipoEnvio.Saludo)) { generadorPerfil.SetInteres(mensaje.Contenido()); ProcesamientoExitoso = true; } else { ProcesamientoExitoso = false; } break; case TipoMensaje.Positivo: if ((ultimoEnvio == TipoEnvio.Sugerencia)) { ProcesamientoExitoso = true; } else { ProcesamientoExitoso = false; } break; case TipoMensaje.Negativo: if ((ultimoEnvio == TipoEnvio.Sugerencia)) { ultimoEnvio = TipoEnvio.Despedida; ProcesamientoExitoso = true; } else { if ((ultimoEnvio == TipoEnvio.Genero)) { //TipoGenero Desconocido si no quiere brindar el Genero generadorPerfil.SetGenero(mensaje.Contenido()); ProcesamientoExitoso = true; } else { ProcesamientoExitoso = false; } } break; case TipoMensaje.Saludo: ProcesamientoExitoso = (ultimoEnvio == TipoEnvio.Saludo); break; case TipoMensaje.Despedida: ultimoEnvio = TipoEnvio.Despedida; ProcesamientoExitoso = false; break; case TipoMensaje.Otros: ProcesamientoExitoso = false; break; } if (ProcesamientoExitoso) { this.ultimoEnvio = generadorPerfil.getDatoFaltante(); if (this.ultimoEnvio == TipoEnvio.Sugerencia) { //Hacer busqueda } else { respuesta.Preguntar(ultimoEnvio); } } else { respuesta.PedirAclaraciones(ultimoEnvio); } }
/// <summary> /// Entrada de la Bitacora. Contenido queda bajo posible modificacion /// </summary> /// <param name="msg">contenido de la entrada obtenida a traves de mensaje con anterioridad</param> /// <param name="name">Nombre del objeto</param> public Entrada(Mensaje msg) { this.Estado = TipoEstado.Finalizada; this.Contenido = msg; }