Correct, any “ANSWER” line would cause charging which might be unwanted, so carefull with the “lift, drop” tactic.
If your provider supports “Early inband” you could do this:
(Syntax might be wrong, made out of mind…)
Ok, what happens here ?
A call comes in via ZAP (PSTN).
You catch it via the appropiate extension. Now the important part:
The DIAL string must point to a valid and logged in enddevice, so we get a “ring” and not a “non available” on the device.
This could be a “dummy” soft-sip on a laptop or whatever.
The “,m(filename)” is the secret here:
THis is “early inband” : It doesnt play a calltone/ringtone to the caller, it play MUSIC (M=Music). The music is the same as configured for MOH.
But since we also issued a filename, this particular file is played to the caller.
And THIS file could be a customized announcement of yours:
“Dear Caller - this announcement is not causing any callcosts to you, its free. If you want to call Mary, John and family, dial XXXXXX. This number is for outgoing calls only. Thank you for calling”
You could even extend that:
“Dear Caller - this announcement is not causing any callcosts to you, its free. If you want to call Mary, John and family, dial XXXXXX. If you wait ten more seconds, you get connected and charged for this call. If you dont want that, HANG UP NOW”.
Then you put another branching in the extensions for the timeout, forwarding the call to another (VIP)-enddevice.