240 likes | 648 Views
Plug Into Messaging Extend the Messaging Experience Gregory Cypes, Principal Software Engineer AIM What is the AIM Developer Program? An engineering-driven effort at AOL to position AIM as a premier “Web 2.0” platform
E N D
Plug Into Messaging Extend the Messaging Experience Gregory Cypes, Principal Software Engineer AIM
What is the AIM Developer Program? • An engineering-driven effort at AOL to position AIM as a premier “Web 2.0” platform • A comprehensive set of APIs, each targeted at different types of applications • A business model where AOL can freely support innovation, while retaining the ability to maintain network integrity
What are the goals of Open AIM? • Help 3rd party developers to derive revenue from successful innovations on the AIM platform • Make it known that AOL is interested in openness and building platforms • Enhance the value of the AIM network by allowing developers to innovate on our platform
Components of Open AIM • Web AIM APIs (sometimes referred to as WIM) • Whimsicals • Javascript embed-able objects (buddy list, presence, IM) • Wimzi • Javascript or Flash embed-able object for anonymous IM • Direct Server APIs • SDK APIs • Custom Clients • Plugins • Bots
AIM SDK Info • Core AIM technology library, supports all AIM functionality • High Level COM API • Platform supports for… • Windows • Mac OS X • Linux • Windows Mobile • Uses proven third-party technology • NSS (Mozilla) for security • sipXtapi (Pingtel) or RTC (Microsoft) for audio/video • Used internally at AOL for AIM 6.x and others • Usable by Java via Java wrapper
More SDK Info • Custom Clients • Build your own AIM experience into an application • Build it on a device • Plugins • Full access to the API to build and extend features of AIM • Bots • Full API…bots can do file transfer, a/v etc.
What can it do for you? PC-PSTN audio calls Preference Management PC-PC video calls Presence lookup from email Military-grade encryption of all communications Email and toaster alerts Custom presence info AIM location services ICQ/federated interop AIM directory info Location Services Report spam/Notify Custom p2p sessions for data streaming • Presence/Buddy List • File Transfer • IM Sessions/Chat rooms • Image Transfer • SMS/IM Forwarding • Buddy List Transfer • Expressions and emoticons • File Sharing • Away messages and profiles • PC-PC audio calls and conferences • Expressions and emoticons • File Sharing • Privacy Management
AIM Custom Clients • Standalone AIM applications built on top of Open AIM • Allows for creation of specialized clients • Automatic support for AIM plugins • Can be deployed as a server • Custom Clients deployed in the field today • SuperComputer International’s Playlinc client (gamer’s client) • Web Ex’s AIM Pro client (Enterprise client) • Doppleganger’s PCD Lounge (music lovers experience) • AIM Lite (simple client experience) • AIM Express (Web based client) • And more to come…
Open AIM Plugins • Code that is loaded inside the AIM application when it signs onto the AIM service • In-proc COM objects, can be written using standard tools in any language that supports COM • Full support for Visual Studio.net 2005 and WPF/XAML • Full Open AIM API exposed to plugins; in general, anything AIM can do, a plugin can do • AIMCC responsible for loading plugins, so plugins can function in any AIMCC-based application • Can interact with the host application UI; e.g. adding commands to AIM 6.x’s “Actions” menu, Buddy List right-click menu and IM Window.
Plugin API • Plugins primarily interact with 4 main interfaces: • IAccPlugin – implemented by plugin to allow for initialization and shutdown • IAccSession – called by plugin to perform AIM operations (e.g. create A/V conversation) • DAccEvents – desired event handlers implemented by plugins (e.g. when an A/V session is initiated.) • IAccCommandTarget – optional; implemented by plugin to receive commands from AIM UI
Open AIM Widgets • Available for AIM Lite (http://x.aim.com/laim); and for AIM 6.x • Uses JavaScript and Boxely UI technology for rapid development and deployment of plugins • Widgets have full access to the Open AIM API • Widgets are zip files that contain: • JavaScript • Manifest file containing Open AIM key and plugin information • Optional Boxely file, if your plugin contains UI
AIM Location Services • Currently a plugin for AIM 6.x and Open AIM clients • Opt-In plugin shares location info with users on your buddy list • Integrated with Mapquest’s API to plot buddies on the map • First plugin that uses the Boxely engine to render UI • Available via the web APIs – Can be used by cell phones • Set your location outside your client via an AIM Location Web page
Open AIM Bots • Bots are automated AIM clients • Typically, writing a bot involves writing a lot of basic stuff for login, authentication, etc, and only basic text functionality supported • With AIMCC, all bot infrastructure is provided; developers can simply focus on their business logic • AccBot shell application loads bot “plugins” that perform the bot functionality • Bots can fully access enhanced IM functionality, including file transfer, audio/video, images • Some ideas: • Easy upload of images and podcasts to AOL Journals • Send an IM with a location, get back a map • Dial-A-Song
Keys and Fingerprints • All AIM Developer APIs require keys • Keying allows us to identify who is using our network, and to restrict/deny access if abuse occurs • A key is a unique text string; common practice for Web APIs (Google Search, Google Maps) • Keys for plugins and clients require fingerprints • Fingerprinting prevents unauthorized use of a key • A fingerprint is a SHA-256 hash of a DLL or EXE • AIMCC automatically sends keys and fingerprints to the AIM servers during login • Web service requests include key in the URL
Keys • Separate keys for Web Services, Plugins, and Custom Clients • Plugin and client keys have different “levels” • Development key – no fingerprint required, but usage limited to ~200 logins/day • Deployment key – fingerprint required, usage limited to ~200K logins/day or 2M logins/month • Unlimited key – fingerprint required, no usage limits • Web services keys also have usage limits • Unlimited keys require a relationship with AOL
AIM: Urls • aim: scheme URLs can allow web pages to pass commands to AIM clients • Complements AIM web services • Some examples: • aim:addBuddy?screenname=<sn> (adds buddy to buddylist) • aim:goIM?screenname=<sn> (brings up IM window) • aim:goTalk?screenname=<sn> (brings up Talk window) • aim:buddyIcon?src=<url> (sets buddy icon) • Low-tech but simple way to integrate
Open AIM Examples Deployed Today • Custom Clients • Doppelganger’s PCD Lounge • Playlinc • AIM Pro • Plugins • Obopay • AIM Tunes • QQ Games • Bots • Prof. Gilzot • Spleak • And More to Come…
Still not convinced? • 3 Steps to integrate Web IM • http://dev.aol.com/data_sheets/WebAIM_Quick_Start_Guide.pdf • AIM Widgets • Visual Studio not required • Turn key solution • AIM Gallery • Easy to upload finished work • Comments and feedback built into the site
Getting Started • Official site - http://developer.aim.com to get keys and download the SDK • Read the Quickstart guide • Look at the plugin tutorials • Look at the sample code • Look at the interface docs available online • Searchable via Your Favorite Search Engine • Let us know what obstacles you ran into
Contact Info • AIM Developer main page • http://developer.aim.com • Get Plugins, Bots, Clients and other goodies • http://gallery.aim.com • My Info • http://www.gregsmind.com • Gregory.Cypes@corp.aol.com