Voice to OF via Google Voice, you shouldn't even need a smart phone for this one.
I set this up in a really round-about way, using bits and pieces I found here at the OF forum and across the net, but it works.
Important points for me were that I figured a way to speak a task with minimal clicks (so I can speak tasks while driving or biking without having to look at my iPhone to launch an app).
The basic workflow is that I voice dial myself, and after ~1 ring I get a beep. I leave a message, which GVoice transcribes and emails to me. I have a Gmail filter set up that forwards the email to a second Gmail address that I use exclusively to add tasks to OF via Mail.app. Whenever Mail.app receives a message from this Gmail account, it runs the AppleScript below, which processes the email and extracts the content of the transcribed voicemail and turns it into a task, with a link to the voicemail in question in the notes section (because Google's transcription is often pretty bad, but good enough to remind me of whatever it was). So GVoice -> Gmail1 -> Gmail2 -> Mail.app -> OF.
First, I set up my Google Voice number to skip directly to the "leave a message" beep whenever it receives a call from me. To do this, I added a new greeting called "memo" where I cut off the message as soon as I could after the "record your new message" prompt. Then I made a new "group" in GVoice (voice settings->Groups) composed of just me, forwards to: "none," greeting: "memo," Call screening: "Off." Then make sure to select "transcribe voicemails" and "email the message to:" (insert your primary Gmail address) under Voice settings -> voicemail and text.
Then, in your 1* Gmail account, set up a few filters (and a label if you want).
Filter 1, to send your voice memos to the other Gmail address (and make them read/archived/labeled so they don't clog up your inbox but are organized by a label)
Code:
Matches: from:(voice-noreply@google.com) subject:("New voicemail from [Your Name]")
Do this: Skip Inbox, Mark as read, Apply label "GVoice", Forward to [2* email address for OF stuff]
Filter 2, to take the rest of the voicemail notifications and do whatever you'd like with them, but ensure that they don't go to OF unless they're from you.
Code:
Matches: from:voice-noreply@google.com subject:"New Voicemail from" -subject:"New Voicemail from [Your Name]"
Do this: Skip Inbox, Mark as read, Apply label "GVoice"
Now, set up that 2* gmail account in mail.app, and set a rule such that all messages from that account with the subject:"New voicemail from [Your Name]" get processed by the AppleScript below, which cleans them up and imports to OF.
Code:
-- Derived from work that is copyright 2007 The Omni Group. All rights reserved.
-- Modified to work specifically with Google Voice messages. Intended for non-profit, personal use only.
using terms from application "Mail"
on process_message(theMessage)
set theSubject to subject of theMessage
set theContent to content of theMessage
set AMPM to text -2 through -1 of theSubject
set messageStart to (offset of AMPM in theContent) + 5
set messageEnd to (offset of "Play Message" in theContent) - 3
set task_content to text messageStart through messageEnd of theContent
set message_URL to "message:<" & message id of theMessage & ">"
set omni_note to "GVoice Memo: " & message_URL
set theText to task_content & return & omni_note
tell application "OmniFocus"
tell default document
parse tasks with transport text theText with as single task
end tell
end tell
end process_message
on perform mail action with messages theMessages for rule theRule
try
set theMessageCount to count of theMessages
repeat with theMessageIndex from 1 to theMessageCount
my process_message(item theMessageIndex of theMessages)
end repeat
on error m number n
tell application "OmniFocus"
log "Exception in Mail action: (" & n & ") " & m
end tell
end try
end perform mail action with messages
end using terms from
So... really circuitous, but in the end it's something that works reliably, even without an internet-enabled phone, and as a bonus you can just call it with your phone's voice dialing, making it so you never have to even look at the phone.
Hope this is helpful to someone, I'll try to drop by this thread every once if anyone has any questions.