I think they don’t use custom channel.
They do its in their explanation and you also saw it in their code See Custom Rasa Channelon their site They use Rasa-core - NLU cant be used for dialog flow.
but where is the NLU called
Im not sure i understand what you are trying to ask - the custom channels integrate with rasa-core. Whenever a input message is received , thats passed on the core which uses NLU to determine intent and entities. Youll have to read /try out channels if you are finding it difficult to understand whats going on.
but not to the NLU? Yes the on_message is what is used to pass the message to rasa-core