Asterisk is one of the coolest things I've encountered in years. I use it often, though it does have its issues from time to time.
We use it at the home and the office for our telephone system. Its is dubbed the "opensource PBX", and is comparable to "hosted PBX" services. It is powerful enough to handle thousands of phone calls.
The biggest problem I've run into with Asterisk is quality of service, and I've wrestled with HTB and iproute2 traffic control (tc) quite a bit. I've got a decent script, but it still needs work and I'd like to be able to reduce the echo's I get sometimes.
Advice anyone?