The code to do this exists in the asterisk github repo. It’s about 3 years old and was coded by interns. It’s not geared for freepbx but I have made it work in freepbx. It needs a lot of TLC
As for freepbx. It’s a pretty commonly requested feature but I can’t comment on future commitments.