Thursday, January 31, 2008

Visual Voicemail on a 14 year old Macintosh

Among the many selling points Apple touts about the new iPhone is the fact that it has "Visual Voicemail."

You can check your messages and choose visually which to listen to, rather than going through them sequentially.

Everybody and their brother thought it was wonderful, and of course, Apple was sued because it apparently violated someone else's patent:
http://www.macworld.co.uk/ipod-itunes/news/index.cfm?RSS&NewsID=19843

But wait - Apple was doing basic visual voice mail with Macs back in 1995 with the often criticized Geoport Telecom Adapter.

The Geoport Telecom Adapter is a device that plugs into the serial port (it requires a 9th pin instead of the usual 8 so power can be provided) and allows the Mac to surf the web, fax, and also perform telephony functions.

The bad part about it is that it uses the Mac's processor to do all the work. So if you try to surf with it - it's painfully slow because it is performing the modulation and demodulation of the audio signal (the mo and the dem of modem) as well as the regular computer functions.

On Windows there was a similar product called a Winmodem, though they didn't to my knowledge have the voice mail features. They were cheap and much maligned. I've also heard them called soft modems.

Apple released 2 different versions of the product (the Geoport Telecom Adapter and the Geoport Telecom Adapter II) - and there was also a 3rd party Geoport ISDN adapter.

On the plus side, the Geoport could support fasters speeds just by installing software updates. The product originally shipped at 14.4kps, but 28.8 and 33.6 updates were available.

The interface, as one would expect from Apple, was simple and elegant.



Unfortunately Apple did not integrate any Caller ID features into the software, so it just lists the date, time and length of the call.

Supposedly the Geoport Telecom Adapter II supports Caller ID, but I've tried with two different units (including the dark grey one shipped with the 20th anniversary Macintosh) and I could not get it to work.

The Macintosh software in question that can read the Caller ID signals is called, appropriately enough, Mac Caller ID(c).

http://homepage.mac.com/maccallerid/ (The app is now freeware)

The application talks to a Caller ID compatible modem, in my case a US Robotics 56k one, and when a call comes in - it puts the info on the screen, and in a database. It can also announce the caller using the Mac's built in text to speech if you want it to. The key feature for me is the fact that it is Applescriptable.

So when a call comes in, the Apple Telecom software records a System 7 sound file with the message. I have a folder action script attached to the the folder where the sounds are recorded to. That creates a copy of the file - which then SoundApp converts to an .aiff file (it can also convert to mp3 or wav or whatever you want.) - Then I have Mac Caller ID tag the time, number, and name of the call, along with the length (provided by SoundApp - also very Applescriptable) - and it places all of this information in the "Get info" field of the file. Then I have it append the info to the top of the web page that serves as my "Visual Voicemail" interface.


(Click image for larger version)

The interface is obviously a nod to the iPhone's. It's actually a web page with 3 frames - top (with the title bar, and a hidden javascript menu for options and returning to the 6100 MC home page - it appears when you mouse over the top left corner), the middle, where all the calls are listed, and the bottom, where the audio files play, courtesy of the Quicktime browser plugin.

But wait, there's more! As you can see, there is a little options button at the end of each call listing. Click that and you get a list of options including call back (which just dials the phone - I don't have a microphone on the 6100mc because I'm using the audio input for digitizing), archive (which just copies the file to a folder and removes it from the list), area code lookup (for phone numbers I don't recognize), address book - which can add the contact info to my Claris organizer contacts, email - which can forward the message as an attachment (I want to add some sort of script that could also check the contact list and give you the option of emailing the person whose number matches the call), and SMS - which uses the free Teleflip SMS service to send SMS back to the phone number (if it's a cell that accepts text messages - obviously it won't do anything if you try to SMS a land line number), and finally delete.


(click image for bigger version)

These features rely on Javascript and Applescript to talk - which thankfully is possible thanks to Julio Sancho's MSIE Library: http://scriptbuilders.net/files/msielibrary1.3.html

So when I click on, say, the second message's options button, javascript creates a cookie, called "File ID", with the number "2" in it. When I've selected one of the options from that menu, say "SMS", it runs the SMS Applescript which first uses the MSIE Library to query the cookie - and it determines that it should run on the 2nd message.

Conceivably I could have created different versions of all the menu scripts and just launch them depending on the message - say "delete1", "delete2", "delete3", etc. but that would have been very cludgy and wasteful.

My original plan was to have the javascript put the file ID of the message in question on the clipboard, and then have each script query the clipboard to see which they should run on - but while Applescript has tons of options for working with clipboard data, javascripting the clipboard on the Mac didn't seem to work, at least not on IE 5.1.7.

Two major features that are in the development stage - auto SMS to my mobile phone with the caller ID & message length info of the most recent message, and also the flip side of Visual Voicemail: audio email.

The Akua Scripting addition has a command called "Mutter" which takes text and uses Mac text to speech and doesn't just say it - it records it into a file resource.

What I plan is something that may work with Claris Emailer that certain actions could get run depending on the sender, and it might then create a sound file of the email's time and subject line, maybe the first paragraph - and puts it in the phone messages folder and fools the Apple telecom app into thinking it's a regular phone message.

Then using the phone answering script I could have the option of listening to the whole email message, forwarding it, sending an audio reply, faxing something, who knows?

So then I could essentially check my email from any voice capable phone, anywhere.

The Apple telecom App also allows all kinds of possibilities with DTMF - the phone beeps and "Press 1 for more options" type thing. Combined with the X-10 interface - controlling the house can not only be done through the browser on my 6100mc - it can be done from any phone.

With internet cafes, wi-fi and data capable phones - remote access to data away from home or work is commonplace - but still - it's pretty amazing for a 14 year old machine.

But then again, this isn't just any ordinary machine. This is the 6100mc baby!

Solid state hard drive? Check.

Visual Voicemail? Check.

Multimedia coming through serial, audio, and video ports? Check.

Web browsing from the couch with the data on the TV screen? Check.
Turn on the lamp upstairs remotely before you go to bed? Check.

Emulation so I can play Castle Wolfenstein, and use Luddite's launcher to run Jeremiah's Hang Man? Check.

Listen to iTunes? Check.

Turn the TV into a digital frame with a slideshow of photos? Check.

See the weather outside with the webcam? Check.

Digitize a funny clip from a TV show into Quicktime? Check.

Kick butt and take names in the Retrochallenge? CHECK!

1 comment:

Unknown said...

Man... outstanding - I would love to see a video when this thing is in work. Amazing!

Oliver - RetroChallenger