/desk

A Ruby wrapper for the Assistly REST API

Primary LanguageRubyMIT LicenseMIT

The Desk Ruby Gem

A Ruby wrapper for the Desk.com API

Installation

gem install desk

What's new in 0.3.3?

@mtchavez bumped faraday_middleware to 0.9.0

What's new in 0.3.2?

@tstachl added support for groups and max requests

What's new in 0.3.0?

Renamed to Desk Newer faraday, faraday_middleware and hashie

Help! I'm getting: "Did not recognize your engine specification. Please specify either a symbol or a class. (RuntimeError)"

You'll need to explicitly require a JSON library. We recommend yajl-ruby.

Usage Examples

require "rubygems"
require "desk"

# All methods require authentication. To get your Desk OAuth credentials,
# register an app in the Desk.com admin for your account at http://your-domain.desk.com/admin
Desk.configure do |config|
  config.support_email = "help@example.com"
  config.subdomain = YOUR_DESK_SUBDOMAIN
  config.consumer_key = YOUR_CONSUMER_KEY
  config.consumer_secret = YOUR_CONSUMER_SECRET
  config.oauth_token = YOUR_OAUTH_TOKEN
  config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
end

######
# Cases
######

# List cases
Desk.cases
Desk.cases(:since_id => 12345)

# Get a specific case
Desk.case(12345)

# Update a specific case
Desk.update_case(12345, :subject => "Something Else")

# Get a case url
Desk.case_url(12345)

######
# Customers
######

# List customers
Desk.customers
Desk.customers(:since_id => 12345, :count => 5)

# Get a specific customer
Desk.customer(12345)

# Create a customer
Desk.create_customer(:name => "Chris Warren", :twitter => "cdwarren")

# Update a customer
Desk.update_customer(12345, :name => "Christopher Warren")

# Add a customer email
Desk.create_customer_email(12345, "foo@example.com")
Desk.create_customer_email(12345, "foo@example.com", :customer_contact_type => "work")

# Update a customer email
Desk.update_customer_email(12345, 54321, :email => "foo@example.com")
Desk.update_customer_email(12345, 54321, :customer_contact_type => "work")

# Add a customer phone number
Desk.create_customer_phone(12345, "555-368-7147")
Desk.create_customer_phone(12345, "555-368-7147", :customer_contact_type => "work")

# Update a customer phone number
Desk.update_customer_phone(12345, 54321, :phone => "555-368-7147")
Desk.update_customer_phone(12345, 54321, :customer_contact_type => "work")

######
# Interactions
######

# List interactions
Desk.interactions
Desk.interactions(:since_id => 12345)
Desk.interactions(:since_id => 12345, :count => 5)

# Create an inbound interaction
Desk.create_interaction(:interaction_subject => "help me", :customer_email => "foo@example.com", :interaction_body => "You're my only hope.")
Desk.create_inbound_interaction(:interaction_subject => "help me", :customer_email => "foo@example.com", :interaction_body => "You're my only hope.")

# Create an outbound interaction
# Desk.com's API doesn't support creating outbound communications, so we do this over email with a BCC back to Desk and customer headers.
# Desk.support_email must be set to your Desk.com email address so that the email can be sent to the account and give the customer someone to respond to.
#
# Read more at http://support.desk.com/customer/portal/articles/4180
# Additional headers can be passed as well http://support.desk.com/customer/portal/articles/6728
#
# Email is sent using Pony https://github.com/benprew/pony
Desk.create_interaction(:interaction_subject => "Missed Your Call", :customer_email => "foo@example.com", :interaction_body => "Sorry we missed yoru call. What's up?", :direction => "outbound")
Desk.create_outbound_interaction("foo@example.com", "Missed Your Call", "Sorry we missed yoru call. What's up?")

######
# Users
######

# List users
Desk.users

# Get a specific user
Desk.user(12345)

######
# Topics
######

# List Topics
Desk.topics

# Get a specific topic
Desk.topic(12345)

# Create a new topic
Desk.create_topic("name", :description => "description")

# Update a topic
Desk.update_topic(12345, :subject => "Updated")

# Delete a topic
Desk.delete_topic(12345)

######
# Articles
######

# List articles for a topic
Desk.articles(1)

# Get a specific article
Desk.article(12345)

# Create a new article within a topic
Desk.create_article(1, :subject => "API Tips", :main_content => "Tips on using our API")

# Update an article
Desk.update_article(12345, :subject => "Updated API Tips")

# Delete an article
Desk.delete_article(12345)

######
# Macros
######

# List Macros
Desk.macros

# Get a specific macro
Desk.macro(12345)

# Create a new macro
Desk.create_macro("name", :labels => "escalated")

# Update a macro
Desk.update_macro(12345, :name => "Updated Name")

# Delete a macro
Desk.delete_macro(12345)

# Macro Actions
Desk.macro_actions(12345)

# Macro Action
Desk.macro_action(12345, "set-case-description")

# Update Macro Action
Desk.update_macro_action(12345, "set-case-description", :value => "New Subject")

Contributing

In the spirit of free software, everyone is encouraged to help improve this project.

Here are some ways you can contribute:

  • by using alpha, beta, and prerelease versions
  • by reporting bugs
  • by suggesting new features
  • by writing or editing documentation
  • by writing specifications
  • by writing code (no patch is too small: fix typos, add comments, clean up inconsistent whitespace)
  • by refactoring code
  • by closing issues
  • by reviewing patches

All contributors will be added to the HISTORY file and will receive the respect and gratitude of the community.

Submitting an Issue

We use the GitHub issue tracker to track bugs and features. Before submitting a bug report or feature request, check to make sure it hasn't already been submitted. You can indicate support for an existing issuse by voting it up. When submitting a bug report, please include a Gist that includes a stack trace and any details that may be necessary to reproduce the bug, including your gem version, Ruby version, and operating system. Ideally, a bug report should include a pull request with failing specs.

Submitting a Pull Request

  1. Fork the project.
  2. Create a topic branch.
  3. Implement your feature or bug fix.
  4. Add documentation for your feature or bug fix.
  5. Run bundle exec rake doc:yard. If your changes are not 100% documented, go back to step 4.
  6. Add specs for your feature or bug fix.
  7. Run bundle exec rake spec. If your changes are not 100% covered, go back to step 6.
  8. Commit and push your changes.
  9. Submit a pull request. Please do not include changes to the gemspec, version, or history file. (If you want to create your own version for some reason, please do so in a separate commit.)

Copyright (c) 2012 Chris Warren/Zencoder See LICENSE for details.