I fail to understand how exactly yelp/grubhub would bill the 10-20% of the order amount of the phone call. The call is recorded, yes (a reason why they can forget about that in the EU, in the EU you would need to implement a system for the caller to deny consent of the recording while on the line other than "if you don't like being recorded hang up now"). But do they manually listen to every phone call, make sure the restaurant place tells the correct amount, calculate their fee and put this on a bill to the restaurant?
A podcast I listen to just did an episode about this, specifically GrubHub. It's an automated system that analyzes the call, and it seemed to charge for any call over 45 seconds where food was discussed. As far as the amount goes, they used the average of the last X orders placed through the GrubHub app for that restaurant and charged some percentage of that. Then the owner is able to log in to their GrubHub account and see a list of all the calls they were charged for, listen to each one, and dispute any that didn't actually result in an order. The system is garbage.
They could set up a forwarding phone number as a way of proving effectiveness of advertising if they only publish the phone number there. A consensual arrangement is basically the only way it could work for all circumstances pick up or delivery through the number.