There is no way to prevent a caller from pushing a button, but there is always the ability for 3CX to be programmed in such a way as to ignore non-relevant responses.......if the programmers have included such a feature.
However, the manual indicates:
5. In the section ‘Destination if no answer’, you can define what should happen if the call does not
get answered by an agent. If no agent is logged into the queue, this option gets triggered
immediately. In addition, this option gets triggered if the caller presses the ‘*’ button on his phone.
This gives callers an option to exit out of the queue and leave a message.
I have no doubt that callers "experiment" and push keys just to see what response they get. So, from my perspective, you have three options:
1. Modify your announcement to let callers know about the "*" action.
2. Submit a feature request such that the "*" is an optional feature.
3. Examine the logs and try and determine the % of calls that fit this scenario and if you adjust your thinking to discount the dropped calls, live with it and move on. It may be a %'age that in the scheme of things is annoying at best.
Modifying the announcement is the quicker possible solution, but may also be the riskier if you do not have the call back function already implemented. Now, 100% of the callers will know and a larger %'age may elect to use. If you have the call back feature enabled, it may not be so much of an issue.
A feature request takes time and there is no guarantee that it will be implemented or that if implemented, it will be in a timeframe that suits your desire.