No third party module , scripting as follows, I use a couple of methods
First, I ask the caller their name and store the recording, (every human will know their name, not so much BOTS) add that as an entry in the asteriskdb database structure, that way you can make a ‘supervised transfer’ announcing both CallerID(number) and their recorded name before answering the call every time they call. At which point you could conditionally add them to the whitelist if you want. Of course, in the absence of an audible response, just send them to voicemail or whatever.
As a ‘checkpoint’ I might conditionally further ask them what their zipcode is and send the recorded response to your STT which easily consume just numbers, if they pass muster, i.e. a verifiable legitimate 5 digit string (every 'mercan knows their ZIPCODE, not so much BOTS ) , add them and their associated zipcode to the ‘whitelist’ family in asteriskdb, you also get to selectively send any later calls from that CallerID(number) to the right department based on the zipcode if you want. (The possibilities are endless here . . . )
All of this can be accomplished without anyone having to press any buttons , they just have to be human.