Phew, I thought I was the only one who made up call-plans like this! Yeah, what you have to do is no use background OR playback at all but just “Read”
From this page at voip-info.org:
As of Asterisk 1.0:
As of Asterisk 1.2:
As of Asterisk 1.4:
So here you see that the read() command does the playback for you!
Try something like:
exten => _X.,n,Read(var,ext-or-zero,4,,3,5)
This will playback the file “ext-or-zero” and allows for 5 seconds after the playback to enter in whatever you need to enter in. That it stores the entered DTMF as “var”
Hope this helps!