Accept DTMF before playback is done

I have a custom extension doing some mysql queries and such. All of that is working swimmingly, but I have a customer request:
Is it possible to allow users to interrupt the playback and input their information? I understand I could use Background instead of Playback, but that only accepts a single digit and jumps to a new extension. In this case, I don’t know what the first extension will be and it may result in “eating” the first digit of the users’ ID number.

Here’s an example:
exten => _999,1(begin),Playback(custom/please_enter_agent_id)
exten => _999,n,Read(agentid,8,3,5)

Works, but they have to wait for the recording to finish.

exten => _999,1(begin),Background(custom/please_enter_agent_id)
exten => _999,n,Read(agentid,8,3,5)

Lets us interrupt the playback, but errors out (as I don’t have single-digit extensions in this context.)

I’m dumb. Just put read(variable,file_for_playback) and it works fine.