Skip to content
forked from chriswarren/desk

A Ruby wrapper for the Assistly REST API

License

Notifications You must be signed in to change notification settings

clintg/assistly

 
 

Repository files navigation

The Assistly Ruby Gem

A Ruby wrapper for the Assistly API This may be out of date.

Installation

gem install assistly

What's new in 0.2.4?

Resolved an issue that was breaking PUT requests.

What's new in 0.2.3?

Removed deep_merge because it conflicts with rails. Handling the merge inside the create_outbound_interaction method only on headers for now, until we need it elsewhere.

What's new in 0.2.2?

Added deep_merge support so that we keep any custom email headers when creating outbound interactions. Required pony in the gem so you don't have to include it in your app.

What's new in 0.2.1?

Stopped returning only the 'results' array when listing things, because this would cause us to not have access to page numbers, total counts, etc.

What's new in 0.2.0?

Added support for Topics, Articles, and Macros, which is currently all that is available in the Assistly API.

What's new in 0.1.5?

Added the ability to create outbound communications over email

What's new in 0.1?

This is the first release of the Assistly gem, based on the Twitter gem. Support for most of the Assistly API are handled. There is not yet support for Content or Macros.

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 "assistly"

# All methods require authentication. To get your Assistly OAuth credentials,
# register an app in the Assistly admin for your account at http://your-domain.assistly.com/admin
@assistly = Assistly.configure do |config|
  config.support_email = "[email protected]"
  config.subdomain = YOUR_ASSISTLY_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
@assistly.cases
@assistly.cases(:since_id => 12345)

# Get a specific case
@assistly.case(12345)

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

# Get a case url
@assistly.case_url(12345)

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

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

# Get a specific customer
@assistly.customer(12345)

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

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

# Add a customer email
@assistly.create_customer_email(12345, "[email protected]")
@assistly.create_customer_email(12345, "[email protected]", :customer_contact_type => "work")

# Update a customer email
@assistly.update_customer_email(12345, 54321, :email => "[email protected]")
@assistly.update_customer_email(12345, 54321, :customer_contact_type => "work")

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

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

# Create an inbound interaction
@assistly.create_interaction(:interaction_subject => "help me", :customer_email => "[email protected]", :interaction_body => "You're my only hope.")
@assistly.create_inbound_interaction(:interaction_subject => "help me", :customer_email => "[email protected]", :interaction_body => "You're my only hope.")

# Create an outbound interaction
# Assistly's API doesn't support creating outbound communications, so we do this over email with a BCC back to Assistly and customer headers.
# Assistly.support_email must be set to your Assistly 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.assistly.com/customer/portal/articles/4180
# Additional headers can be passed as well http://support.assistly.com/customer/portal/articles/6728
#
# Email is sent using Pony https://github.com/benprew/pony
@assistly.create_interaction(:interaction_subject => "Missed Your Call", :customer_email => "[email protected]", :interaction_body => "Sorry we missed yoru call. What's up?", :direction => "outbound")
@assistly.create_outbound_interaction("[email protected]", "Missed Your Call", "Sorry we missed yoru call. What's up?")

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

# List users
@assistly.users

# Get a specific user
@assistly.user(12345)

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

# List Topics
@assistly.topics

# Get a specific topic
@assistly.topic(12345)

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

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

# Delete a topic
@assistly.delete_topic(12345)

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

# List articles for a topic
@assistly.articles(1)

# Get a specific article
@assistly.article(12345)

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

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

# Delete an article
@assistly.delete_article(12345)

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

# List Macros
@assistly.macros

# Get a specific macro
@assistly.macro(12345)

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

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

# Delete a macro
@assistly.delete_macro(12345)

# Macro Actions
@assistly.macro_actions(12345)

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

# Update Macro Action
@assistly.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

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

About

A Ruby wrapper for the Assistly REST API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%