Calling a smart contract is similar to normal transfer, but the receiving address is a contract address instead of user account address.
The request transaction should contain a data field that specifies both method selector and method parameter, which can be built up with corresponding RPC APIs.
Transfer amount and token ID must be present if the contract method requires a token transfer when being called.