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