View Single Post
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.