So let's talk a little bit about what happens when you send a chat message.
When a player types something into the chat field, what normally happens is that the game grabs all the text in the chat area, and puts it into a string, let's call it %message. Then the game (still on the client side) runs a function called commandToServer() which is basically how all scripted communication from the client to the server happens. Specifically, it callscommandToServer('MessageSent', %message);
(Note the single quotes, not double quotes; this is important in this case.)
When the client calls this function on its own machine, the end result is a transmission to the server, which causes the server to run serverCmdMessageSent(%client, %message);
The exception to this is when the chat starts with a slash. When this is detected, the chat is not sent to the server at all. Instead, a different commandToServer() is sent, specifically the one after the slash, with everything after that being arguments separated by spaces. So "/C restaurant [food_item]" will run:commandToServer('C', %shop, %item);
where %shop is "restaurant" and %item is "[food_item]". This makes the server callserverCmdC(%client, %shop, %item);
So to answer your question, routing through the chat system would be clumsy and is entirely unnecessary. The "command" field of your button only needs to have:commandToServer('C', "restaurant", "item");