I recently became Chief Architect for DemandResults, publishers of SEO for Salesforce, an SEO automation app. DemandResults is currently building a platform to perform live call tracking, called ringDNA. It is powered by Cassandra and Twilio, and makes great use of Web Sockets. It is also well integrated with the Force.com platform.
When I saw the theme and sponsors of the hackathon, I knew I wanted to work on an iOS app w/ the ringDNA & Twilio theme. I had some great experience with the Force.com toolkit for iOS back in my Appirio days. We did a great project for RehabCare that was all built on iOS. I do, however, wish Quinton’s new version was available a few days earlier :). I used the older SOAP based version and mixed in a few of my own objective-c REST calls to make things simpler. I also used the Force.com toolkit for Twilio which I helped Twilio with the week prior to Dreamforce. One of the things I had heard from the judges was that audience interaction was a key element in selecting the winners in 2010, so I wanted to find some way to do that as well.
Here’s the basic overview of what I put together:
- iPad app based on Force.com Toolkit for IOS
- iPad app uses oAuth to authenticate to Force.com (connected to a development org)
- Twilio REST Objective-C helper classes (I wrote this piece)
- Twilio Client for iOS (alpha version)
- Quick TwiML script to “conference” in all callers
- Instead of building a complicated call queue I put every in-bound caller in their own unique conference room. Twilio has the ability to conference and uses an arbitrary string for naming the conference room. To keep it simple and unique, I used the Twilio Call SID for the name of the conference room.
- iCarousel interface to show other people in your organization and their current call status
- This piece mostly pulled Chatter stats. I didn’t have time to get this completely working before the hackathon presentations began. I blame Metallica and Appirio’s party for that.
When I got on stage for the finale, I had handed the judges a piece of paper w/ a call-in number. Then, I thought… it’s all for fun, let’s see what happens if the whole audience dials in. I wasn’t planning to do that, but it worked out to be much more interesting. We could see the in-bound callers pouring in on the iOS interface and we were getting their names and geographic information from Twilio’s caller ID data. I forget the gentlemen’s name we called out, but I randomly picked someone from the audience and answered that call.
Answering the call was actually an interesting aspect of the application. Since all in-bound callers were technically on-hold in their own isolated conference rooms, answering a call just meant connecting my Twilio iOS Client to one of the open conference bridges. This took another 5-10 lines of TwiML to setup and that piece was addressed.
Once we connected the gentlemen from the audience, the rest of us could hear him answer the phone over the speakers. It ended up working perfectly.
I wanted to share one more interesting point about the hackathon. I’m currently about to publish my third book. This one is on iOS Augmented Reality programming. It is already available for pre-order on Amazon. Anyway, as it turns out Yosun (2nd place hackathon winner) is the technical reviewer for my book. We had never met each other in person and didn’t actually realize we were both there until the names of the winners were announced. I’m always amazed at the reach of Dreamforce, but this really sold me on how impact-ful it is to so many different developer communities.