mod_avmd waits for the beep
It detects the tone after a greeting, not who answered — too late for routing.
FreeSWITCH has no built-in answering machine detection like Asterisk’s AMD(). AMDY adds it with a Lua script and mod_audio_stream, returning a verdict your dialplan can route on.
detection starts after answer
calls lost when AMDY is unreachable
free detections to evaluate
The usual options find the voicemail tone after the greeting, rely on timing modules, or depend on one carrier’s detection.
It detects the tone after a greeting, not who answered — too late for routing.
Third-party silence detectors make the same mistakes as stock Asterisk AMD.
Detection bundled into one carrier only covers calls on that carrier.
Your dialplan runs the AMDY Lua script on answer. It streams 8 kHz mono audio over a secure WebSocket via mod_audio_stream, sets AMDSTATUS when a verdict arrives, then stops the stream.
Read the API docs<extension name="amdy_amd">
<condition field="destination_number" expression="^amd$">
<action application="lua" data="amdy_amd.lua"/>
<action application="transfer"
data="${AMDSTATUS} XML amd_routes"/>
</condition>
</extension>The dialer still dials and your carrier still carries the call. The decision just gets better.
Works on FreeSWITCH and FusionPBX installs with mod_audio_stream.
HUMAN, MACHINE or FALLBACK — route each however you like.
Unclear calls never default to HUMAN, so agents aren’t sent machines.
50,000 free detections. Point one campaign at it and compare.