I've thought long and hard about building something more complicated but I was always sort of stopped by the lack of MMS and my (apparently faulty) understanding of how their Caller ID works[2]. Not anymore!
[1]: https://www.twilio.com/labs/twimlets/voicemail
[2]: Previously I had thought you could only set registered numbers as caller ID, but turns out if you dial out while processing an incoming call you can set the caller ID as the incoming number. See here: https://www.twilio.com/docs/api/twiml/dial#attributes-caller...
https://github.com/mmastrac/snippets/tree/gh-pages/voicemail
Obviously you'd want to host that yourself somewhere private and possibly hard-code the keys.
I used it to setup a menu with recordings and things like'press 1 for support' to route calls for our sales and support teams.
https://callmemaybe.meteor.com/
Unfortunately, the Connect API was a bit confusing to implement, so you actually have to paste in your API key.
My goal is to rewrite it soon with basic features like call forwarding, blocking, etc.