def METHOD_NAME(self, client, userdata, message):
    """
    message handler
    displays the message content of monitored channels, with
    higlighted command/success fields.
    on the fly discovery of clients id and automatic subscription
    to the corresponding channels
    """
    print("========", datetime.now())
    print("topic  :", Fore.CYAN + message.topic + Style.RESET_ALL)
    # decode some output
    data = json.deserialize_msg(message.payload)
    # colorize output
    k = "command"
    if k in data:
        print("command: " + Fore.GREEN + str(data[k]) + Style.RESET_ALL)
        del data[k]
    k = "success"
    if k in data:
        if data[k] is True:
            print("success: " + Fore.GREEN + str(data[k]) + Style.RESET_ALL)
        else:
            print("success: " + Fore.RED + str(data[k]) + Style.RESET_ALL)
        del data[k]
    print(yaml.dump(data, default_flow_style=False))
    # study message to detect new clients channels
    if "node_id" in data:
        c = 'general/' + data["node_id"]
        if not c in self.channels:
            self.channels[c] = None
            print(Fore.CYAN + "** subscribing to: " + c + Style.RESET_ALL)
            self.client.subscribe(c)