47 lines
2.6 KiB
Markdown
47 lines
2.6 KiB
Markdown
---
|
||
title: "Unfuddle User Feedback"
|
||
date: 2009-06-02T00:00:00+00:00
|
||
draft: false
|
||
needs_review: true
|
||
canonical_url: https://www.viget.com/articles/unfuddle-user-feedback/
|
||
---
|
||
|
||
Recently, we wanted a better system for managing feedback from
|
||
[SpeakerRate](http://speakerrate.com/) users. While we do receive some
|
||
general site suggestions, most of the feedback we get involves discrete
|
||
corrections to data (a speaker who has been entered into the system
|
||
twice, for example). We started to create a simple admin interface for
|
||
managing these requests, when we realized that the ticket tracking
|
||
system we use internally, [Unfuddle](http://unfuddle.com/), already has
|
||
all the features we need.
|
||
|
||
Fortunately, Unfuddle has a full-featured
|
||
[API](http://unfuddle.com/docs/api), so programatically creating tickets
|
||
is simply a matter of adding
|
||
[HTTParty](http://railstips.org/2008/7/29/it-s-an-httparty-and-everyone-is-invited)
|
||
to our `Feedback` model:
|
||
|
||
``` {#code .ruby}
|
||
class Feedback < ActiveRecord::Base include HTTParty base_uri "viget.unfuddle.com/projects/#{UNFUDDLE[:project]} validates_presence_of :description after_create :post_to_unfuddle, :if => proc { Rails.env == "production" } def post_to_unfuddle self.class.post("/tickets.xml", :basic_auth => UNFUDDLE[:auth], :query => { :ticket => ticket }) end private def ticket returning(Hash.new) do |ticket| ticket[:summary] = "#{self.topic}" ticket[:description] = "#{self.name} (#{self.email}) - #{self.created_at}:\n\n#{self.description}" ticket[:milestone_id] = UNFUDDLE[:milestone] ticket[:priority] = 3 end end end
|
||
```
|
||
|
||
We store our Unfuddle configuration in
|
||
`config/initializers/unfuddle.rb`:
|
||
|
||
``` {#code .ruby}
|
||
UNFUDDLE = { :project => 12345, :milestone => 12345, # the 'feedback' milestone :auth => { :username => "username", :password => "password" } }
|
||
```
|
||
|
||
Put your user feedback into Unfuddle, and you get all of its features:
|
||
email notification, bulk ticket updates, commenting, file attachments,
|
||
etc. This technique isn't meant to replace customer-service oriented
|
||
software like [Get Satisfaction](http://getsatisfaction.com/) (we're
|
||
using both on SpeakerRate), and if you're not already using a ticketing
|
||
system to manage your project, this is probably overkill; something like
|
||
[Lighthouse](http://lighthouseapp.com/) or [GitHub
|
||
Issues](https://github.com/blog/411-github-issue-tracker) would better
|
||
suit your needs, and both have APIs if you want to set up a similar
|
||
system. But for us here at Viget, who manage all aspects of our projects
|
||
through a ticketing system, seeing actionable user feedback in the same
|
||
place as the rest of our tasks has been extremely convenient.
|