If you are using EOSIO_DISPATCH with ACTION keyword, then replace ACTION keyword with [[eosio::action]] void from your .hpp file and remove EOSIO_DISPATCH from your .cpp file of smart contract.
As EOSIO_DISPATCH blocks eosio::on_notify.
Also check: [[eosio::on_notify("VALID_EOSIO_ACCOUNT_NAME::VALID_EOSIO_ACTION_NAME")]] Ref: https://developers.eos.io/manuals/eosio.cdt/v1.6/guides/generator-attributes
Please closely check eosio.token contract you will get how use. https://github.com/EOSIO/eosio.contracts/tree/master/contracts/eosio.token