How We Implemented Live Help in BuildMaster
March 29, 2011 1 Comment
One of the new features we introduced in BuildMaster 2.3 was Live Help: if you’d like a quick answer to a question, just click to chat with a support engineer.
Though I’m sure we’re not the only software company to embed “instant support” in their product, I couldn’t find anyone else who was doing it. Of course, I didn’t look very far, since BuildMaster is a web-based application and there are plenty of places to go for web-based chat.
Choosing a Chat Provider
Being that we’d need to embed chat in our (download & install) application, our requirements were a little different than most. Namely, we needed:
- Look & Feel Customization – having the standard “click here to chat” image on the sidebar doesn’t exactly fit in to our UI
- Instant Message Integration – our support staff consists of developers, and the last thing we want is a clunky messaging app
- Permission to Distribute – it’s pretty important that we’d be explicitly permitted to use chat in such a manner
- Flexible Installation – we didn’t want to embed the actual chat code (in case we need to switch vendors, for example), but instead embed code that lived on inedo.com, which would then reference the chat vendor’s code
- API – we don’t need much, just
- ability to detect when operators are available
- send metadata to operator (license key)
- hide/show chat box
We evaluated a number of different vendors: SnapEngage, LivePerson, BoldChat, Olark, WhosOn, and a few others. Ultimately, we settled on Olark. While their software wasn’t as feature-rich as others, their support was topnotch (likely because we were chatting with the developers/founders) and it seemed to be the easiest to integrate with and customize.
Implementing Live Help with Olark
Because Live Help needs to “call home” to determine if an operator is available, we felt that users should be able to turn-off the feature. And that meant a simple configuration page:
When the checkbox is enabled, a single line of JavaScript is added to the page’s HEAD section:
$(function () {
$('body').append('<sc' + 'ript type="text/javascript" ' +
+ 'src="http://links.inedo.com/integrated-support/?' +
+ 'lickey=00000000-0000-0000-0000-000000000000"></s' +
+ 'cript>');
});
It’s a JQuery call that essentially instructs the browser to append a <SCRIPT> tag to the body after the page has finished loaded. The script that loaded resides on our server, and looks something like this (with explanatory comments added):
// copy/paste of Olark's code; this will asynchronously // contact their server to load the latest chat client window.olark||(function (k) { var g = window, j = document, a = g.location.protocol == "https:" ? "https:" : "http:", i = k.name, ... snip... name: "olark", methods: ["configure", "extend", "declare", "identify"] }); //this is our Olark account number / api-key olark.identify('0000-000-00-0000'); //set the IM "buddy" to be the user signed-in to BuildMaster olark('api.chat.updateVisitorNickname', { snippet: 'BM~'+$('#BuildMaster_DisplayName').text(), hidesDefault: true}); //when an operator is available, display the appropriate link olark('api.chat.onOperatorsAvailable', function () { $('#HeaderHelpBox').empty().append( $('<a href="#">Live Help is Available</a>') .click(function () { olark('api.box.show'); olark('api.box.expand'); }) ); }); //when an operator is away, display the appropriate link olark('api.chat.onOperatorsAway', function () { $('#HeaderHelpBox').empty().append( $('<a href="#">Send Message To Support</a>') .click(function () { olark('api.box.show'); olark('api.box.expand'); }) ); });
The Result
Success! Although we’ve always been around to answer support questions, having Live Support embedded right in the system has given users the confidence that we actually are there.
Though there were some concerns that it might overburden support, it’s actually made our lives easier. While simple questions have always been simple to ask, complex questions require a lot of back-and-forth to understand the underlying situation. And as it turns out, chat is ideal for that.


