I've been playing with Google Voice a lot lately, and for me, the killer feature is voicemail transcription.
Now it's not always perfect, but being able to read a rough transcription of a voicemail makes handling voicemail so much faster and easier.
I'm not quite ready to make the jump to using my Google Voice number as my primary number, I suppose I'm still a little attached to the number I've had for the past few years.
But I did manage to get Google Voice working just as a voicemail replacement, here's how I did it:
- In your Google Voice settings, put Google Voice on Do-Not-Disturb mode. This causes all calls to go immediately to voicemail. More details
- Use special GSM codes to modify where your calls are sent if you don't answer, are busy, or are unreachable:
- If no answer: *61*[google voice number]*11*[seconds delay]#
- Example: *61*14153331212*20#
- This forwarding rule is for when your phone rings, but you don't respond in any way.
- If busy: *67*[google voice number]*11#
- This forwarding rule is for when your phone rings, but you actively decline the call.
- If unreachable: *62*[google voice number]*11#
- This forwarding rule is for when your phone can't be reached, i.e., you have no service or your phone is off.
- More details

Now my iPhone still does everything like it use to, except when calls go to voicemail, they're handled by Google Voice. When I get a new voicemail, I get a text message with the transcript of the voicemail, and I can use http://www.google.com/voice to view those messages (in a visual voicemail sort of way) or dial my own Google Voice number to listen to voicemails the old fashioned way.
Pretty sweet.
Note: The methods described above should work for any phone on a GSM network, not just the iPhone. So if you're on AT&T, T-Mobile, or any other GSM network, then this can work for you.

