Email has been the main way for clients to contact us for a while now. Whilst great for general communication, emails do have their shortcomings when clients are asking us to do things. Tasks can get done and not communicated straight away or sometimes multiple people are required to complete a task and each have their own email string which can lead to miscommunications and a waste of time.
We have been wanting to improve this process for a while and have tried a few other support desk solutions, but nothing has given us quite what we wanted or needed. Given that we've recently changed our project management systems to Jira (something in equal parts more powerful and more complicated than our beloved Asana) - it seemed like the perfect time to integrate our support as well.
The new project management system provides a great solution for organising our team, but it doesn't really look that great, in fact it has a horrible User Interface that we have all struggled to get used to. More importantly, we don't want to put our clients through the same pain barrier we have experienced. Why can't any of the support desks feel as easy and intuitive as we'd like? Enter: The Yadda Service Desk.
The Service Desk is basically a simplified web interface for Jira where clients can log tickets and send and receive communications. First off, there is a lot of information in Jira so I had to decide exactly what we wanted to show. You need to be able to log a work order, to know when there was an update to it, and to be able to update it yourself. Oh, and some way for you to know if we're getting to your tickets in a timely manner or not. That's great, Jira has a ServiceDesk API available that does exactly what we need.
Currently, most of our sites are built with Wordpress or Laravel. We opted for Laravel for this project, primarily because we are building the interface from scratch and, as all the data comes directly from Jira, there is no need for a CMS, which is Wordpress' strongest feature. A lot of the build is going to be the API integration anyway and Laravel provides a lot more flexibility for this sort of thing.
Next step: Build the basic structure. This is nice and easy. A few models, some relationships. Work out what should do what. Get Chris to make some designs to make it look nice (apparently rainbows and smiley faces aren't on-brand for Yadda... I'm starting to think there's a reason I spend most of my time developing back-end things). Design gets implemented, and now it's looking rather good. It's not terribly functional though. Which leads on to...
Integrate the API: I hold my hands up and say that ever since a project a fair time ago which entailed integrating multiple API's into a single unified format, I have had a deep-seated mistrust for most 3rd party APIs. Thankfully, this time I find the documentation to be largely helpful and accurate, and so I start making a set of models that represent the data I'm pulling down. Everything is good. I can pull down issues from Jira. As a side note, I renamed Issues to Tickets for our service desk. I'd like to think that not everything you have to request is going to be us fixing an issue. Sometimes, you might want us to change something. Or request new things. Time to go home for the day.
The next day: I didn't do it, it's all broken, Everything is ruined.
In reality, one of the JIRA functions marked with "experimental features" had just changed. Very, very slightly. Problem resolved and everything is looking fine. It's working nicely now, except that while I can tell Jira that I have made a new ticket, nothing is changing it's status on Jira. If I tell our system that we're waiting for a customer to give us more details, I want Jira to know about it. I need to implement Transitions.
Unforunately, the ServiceDesk API does not handle transitions - i.e. moving a ticket from "Waiting for support" to "Waiting for customer" or, more positively, "Resolved". At this point I go back and look through the API and come to the conclusion that it's not quite as thorough as I'd have liked, though I see with interest that the main Jira API does cover transitions. After investigating the possibility of transferring my existing work with the ServiceDesk API over, I resign myself to having to use both. The Jira API doesn't handle SLAs - the things that let you know we dun messed up, hard though that is to believe. Despite it feeling a little awkward, I set up some new models to work with that API.
All that’s left is to hook it up to send emails out to let you know when your ticket has been updated.
All in all though, I’m pretty pleased with it. It doesn’t bombard you with information. It offers a fair compromise between asking too much and making the ticket a chore to fill out, and not asking you enough questions to get all the information we need to help. It helps you, to help us, to help you… however cheesy that sounds.