This seems to be begging for a DIY project, doesn't it?
A 3d printed case, a little SoC, perhaps a Raspberry Pi Zero, as the brains with asterisk and some additional open source software providing a web interface running on it.
Would i require some public server side component to handle the call routing etc? (or could you just use something like Google Voice?)
Would i require some public server side component to handle the call routing etc? (or could you just use something like Google Voice?)