assistly 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY.mkd +5 -0
- data/README.mkd +94 -2
- data/lib/assistly/client.rb +6 -0
- data/lib/assistly/client/article.rb +96 -0
- data/lib/assistly/client/macro.rb +142 -0
- data/lib/assistly/client/topic.rb +90 -0
- data/lib/assistly/version.rb +1 -1
- data/spec/assistly/client/article_spec.rb +134 -0
- data/spec/assistly/client/macro_spec.rb +204 -0
- data/spec/assistly/client/topic_spec.rb +135 -0
- data/spec/fixtures/article.json +50 -0
- data/spec/fixtures/article_create.json +54 -0
- data/spec/fixtures/article_destroy.json +3 -0
- data/spec/fixtures/article_update.json +54 -0
- data/spec/fixtures/articles.json +58 -0
- data/spec/fixtures/macro.json +8 -0
- data/spec/fixtures/macro_action.json +9 -0
- data/spec/fixtures/macro_action_update.json +12 -0
- data/spec/fixtures/macro_actions.json +69 -0
- data/spec/fixtures/macro_create.json +13 -0
- data/spec/fixtures/macro_destroy.json +3 -0
- data/spec/fixtures/macro_update.json +13 -0
- data/spec/fixtures/macros.json +24 -0
- data/spec/fixtures/topic.json +9 -0
- data/spec/fixtures/topic_create.json +14 -0
- data/spec/fixtures/topic_destroy.json +3 -0
- data/spec/fixtures/topic_update.json +14 -0
- data/spec/fixtures/topics.json +35 -0
- metadata +50 -5
data/HISTORY.mkd
CHANGED
data/README.mkd
CHANGED
@@ -1,11 +1,20 @@
|
|
1
1
|
The Assistly Ruby Gem
|
2
2
|
====================
|
3
|
-
A Ruby wrapper for the Assistly API
|
3
|
+
A Ruby wrapper for the [Assistly API](http://dev.assistly.com/)
|
4
4
|
|
5
5
|
Installation
|
6
6
|
------------
|
7
7
|
gem install assistly
|
8
8
|
|
9
|
+
What's new in 0.2.0?
|
10
|
+
------------------
|
11
|
+
Added support for Topics, Articles, and Macros, which is currently all that is available in the Assistly API.
|
12
|
+
|
13
|
+
What's new in 0.1.5?
|
14
|
+
------------------
|
15
|
+
Added the ability to create outbound communications over email
|
16
|
+
|
17
|
+
|
9
18
|
What's new in 0.1?
|
10
19
|
------------------
|
11
20
|
This is the first release of the Assistly gem, based on the [Twitter gem](http://github.com/jnunemaker/twitter). Support for most of the [Assistly API](http://dev.assistly.com/docs/api) are handled.
|
@@ -24,6 +33,7 @@ Usage Examples
|
|
24
33
|
# All methods require authentication. To get your Assistly OAuth credentials,
|
25
34
|
# register an app in the Assistly admin for your account at http://your-domain.assistly.com/admin
|
26
35
|
@assistly = Assistly.configure do |config|
|
36
|
+
config.support_email = "help@example.com"
|
27
37
|
config.subdomain = YOUR_ASSISTLY_SUBDOMAIN
|
28
38
|
config.consumer_key = YOUR_CONSUMER_KEY
|
29
39
|
config.consumer_secret = YOUR_CONSUMER_SECRET
|
@@ -31,6 +41,10 @@ Usage Examples
|
|
31
41
|
config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
|
32
42
|
end
|
33
43
|
|
44
|
+
######
|
45
|
+
# Cases
|
46
|
+
######
|
47
|
+
|
34
48
|
# List cases
|
35
49
|
@assistly.cases
|
36
50
|
@assistly.cases(:since_id => 12345)
|
@@ -43,6 +57,10 @@ Usage Examples
|
|
43
57
|
|
44
58
|
# Get a case url
|
45
59
|
@assistly.case_url(12345)
|
60
|
+
|
61
|
+
######
|
62
|
+
# Customers
|
63
|
+
######
|
46
64
|
|
47
65
|
# List customers
|
48
66
|
@assistly.customers
|
@@ -64,6 +82,10 @@ Usage Examples
|
|
64
82
|
# Update a customer email
|
65
83
|
@assistly.update_customer_email(12345, 54321, :email => "foo@example.com")
|
66
84
|
@assistly.update_customer_email(12345, 54321, :customer_contact_type => "work")
|
85
|
+
|
86
|
+
######
|
87
|
+
# Interactions
|
88
|
+
######
|
67
89
|
|
68
90
|
# List interactions
|
69
91
|
@assistly.interactions
|
@@ -85,11 +107,81 @@ Usage Examples
|
|
85
107
|
@assistly.create_interaction(:interaction_subject => "Missed Your Call", :customer_email => "foo@example.com", :interaction_body => "Sorry we missed yoru call. What's up?", :direction => "outbound")
|
86
108
|
@assistly.create_outbound_interaction("foo@example.com", "Missed Your Call", "Sorry we missed yoru call. What's up?")
|
87
109
|
|
110
|
+
######
|
111
|
+
# Users
|
112
|
+
######
|
113
|
+
|
88
114
|
# List users
|
89
115
|
@assistly.users
|
90
116
|
|
91
117
|
# Get a specific user
|
92
118
|
@assistly.user(12345)
|
119
|
+
|
120
|
+
######
|
121
|
+
# Topics
|
122
|
+
######
|
123
|
+
|
124
|
+
# List Topics
|
125
|
+
@assistly.topics
|
126
|
+
|
127
|
+
# Get a specific topic
|
128
|
+
@assistly.topic(12345)
|
129
|
+
|
130
|
+
# Create a new topic
|
131
|
+
@assistly.create_topic("name", :description => "description")
|
132
|
+
|
133
|
+
# Update a topic
|
134
|
+
@assistly.update_topic(12345, :subject => "Updated")
|
135
|
+
|
136
|
+
# Delete a topic
|
137
|
+
@assistly.delete_topic(12345)
|
138
|
+
|
139
|
+
######
|
140
|
+
# Articles
|
141
|
+
######
|
142
|
+
|
143
|
+
# List articles for a topic
|
144
|
+
@assistly.articles(1)
|
145
|
+
|
146
|
+
# Get a specific article
|
147
|
+
@assistly.article(12345)
|
148
|
+
|
149
|
+
# Create a new article within a topic
|
150
|
+
@assistly.create_article(1, :subject => "API Tips", :main_content => "Tips on using our API")
|
151
|
+
|
152
|
+
# Update an article
|
153
|
+
@assistly.update_article(12345, :subject => "Updated API Tips")
|
154
|
+
|
155
|
+
# Delete an article
|
156
|
+
@assistly.delete_article(12345)
|
157
|
+
|
158
|
+
######
|
159
|
+
# Macros
|
160
|
+
######
|
161
|
+
|
162
|
+
# List Macros
|
163
|
+
@assistly.macros
|
164
|
+
|
165
|
+
# Get a specific macro
|
166
|
+
@assistly.macro(12345)
|
167
|
+
|
168
|
+
# Create a new macro
|
169
|
+
@assistly.create_macro("name", :labels => "escalated")
|
170
|
+
|
171
|
+
# Update a macro
|
172
|
+
@assistly.update_macro(12345, :name => "Updated Name")
|
173
|
+
|
174
|
+
# Delete a macro
|
175
|
+
@assistly.delete_macro(12345)
|
176
|
+
|
177
|
+
# Macro Actions
|
178
|
+
@assistly.macro_actions(12345)
|
179
|
+
|
180
|
+
# Macro Action
|
181
|
+
@assistly.macro_action(12345, "set-case-description")
|
182
|
+
|
183
|
+
# Update Macro Action
|
184
|
+
@assistly.update_macro_action(12345, "set-case-description", :value => "New Subject")
|
93
185
|
|
94
186
|
Contributing
|
95
187
|
------------
|
@@ -133,5 +225,5 @@ Submitting a Pull Request
|
|
133
225
|
|
134
226
|
Copyright
|
135
227
|
---------
|
136
|
-
Copyright (c) 2011 Chris Warren/Zencoder
|
228
|
+
Copyright (c) 2011 Chris Warren/[Zencoder](http://zencoder.com)
|
137
229
|
See [LICENSE](https://github.com/zencoder/assistly/blob/master/LICENSE.mkd) for details.
|
data/lib/assistly/client.rb
CHANGED
@@ -12,6 +12,9 @@ module Assistly
|
|
12
12
|
require 'assistly/client/interaction'
|
13
13
|
require 'assistly/client/case'
|
14
14
|
require 'assistly/client/customer'
|
15
|
+
require 'assistly/client/topic'
|
16
|
+
require 'assistly/client/article'
|
17
|
+
require 'assistly/client/macro'
|
15
18
|
|
16
19
|
alias :api_endpoint :endpoint
|
17
20
|
|
@@ -21,5 +24,8 @@ module Assistly
|
|
21
24
|
include Assistly::Client::Interaction
|
22
25
|
include Assistly::Client::Case
|
23
26
|
include Assistly::Client::Customer
|
27
|
+
include Assistly::Client::Topic
|
28
|
+
include Assistly::Client::Article
|
29
|
+
include Assistly::Client::Macro
|
24
30
|
end
|
25
31
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
module Assistly
|
2
|
+
class Client
|
3
|
+
# Defines methods related to articles
|
4
|
+
module Article
|
5
|
+
# Returns extended information of articles for a topic
|
6
|
+
#
|
7
|
+
# @param id [Integer] a article ID
|
8
|
+
# @option options [Boolean, String, Integer]
|
9
|
+
# @example Return extended information for 12345
|
10
|
+
# Assistly.articles
|
11
|
+
# Assistly.articles(:count => 5)
|
12
|
+
# Assistly.articles(:count => 5, :page => 3)
|
13
|
+
# @format :json
|
14
|
+
# @authenticated true
|
15
|
+
# @see http://dev.assistly.com/docs/api/topics/articles
|
16
|
+
def articles(id, *args)
|
17
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
18
|
+
response = get("topics/#{id}/articles",options)
|
19
|
+
if response['results']
|
20
|
+
return response['results']
|
21
|
+
else
|
22
|
+
return response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns extended information on a single article
|
27
|
+
#
|
28
|
+
# @param id [Integer] a article ID
|
29
|
+
# @option options [Hash]
|
30
|
+
# @example Return extended information for 12345
|
31
|
+
# Assistly.article(12345)
|
32
|
+
# Assistly.article(12345, :by => "external_id")
|
33
|
+
# @format :json
|
34
|
+
# @authenticated true
|
35
|
+
# @see http://dev.assistly.com/docs/api/articles/show
|
36
|
+
def article(id, *args)
|
37
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
38
|
+
response = get("articles/#{id}",options)
|
39
|
+
response.article
|
40
|
+
end
|
41
|
+
|
42
|
+
# Creates a new article
|
43
|
+
#
|
44
|
+
# @param id [Integer] a article ID
|
45
|
+
# @param id [Integer] a article ID
|
46
|
+
# @param id [Integer] a article ID
|
47
|
+
# @option options [Hash]
|
48
|
+
# @example Creates a new article
|
49
|
+
# Assistly.create_article(1, :subject => "API Tips", :main_content => "Tips on using our API")
|
50
|
+
# @format :json
|
51
|
+
# @authenticated true
|
52
|
+
# @see http://dev.assistly.com/docs/api/articles/create
|
53
|
+
def create_article(topic_id, *args)
|
54
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
55
|
+
response = post("topics/#{topic_id}/articles",options)
|
56
|
+
if response['success']
|
57
|
+
return response['results']['article']
|
58
|
+
else
|
59
|
+
return response
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Updates a single article
|
64
|
+
#
|
65
|
+
# @param id [Integer] a article ID
|
66
|
+
# @option options [String]
|
67
|
+
# @example Updates information for article 12345
|
68
|
+
# Assistly.update_article(12345, :subject => "New Subject")
|
69
|
+
# @format :json
|
70
|
+
# @authenticated true
|
71
|
+
# @see http://dev.assistly.com/docs/api/articles/update
|
72
|
+
def update_article(id, *args)
|
73
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
74
|
+
response = put("articles/#{id}",options)
|
75
|
+
if response['success']
|
76
|
+
return response['results']['article']
|
77
|
+
else
|
78
|
+
return response
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Deletes a single article
|
83
|
+
#
|
84
|
+
# @param id [Integer] a article ID
|
85
|
+
# @example Deletes article 12345
|
86
|
+
# Assistly.update_article(12345, :subject => "New Subject")
|
87
|
+
# @format :json
|
88
|
+
# @authenticated true
|
89
|
+
# @see http://dev.assistly.com/docs/api/articles/update
|
90
|
+
def delete_article(id)
|
91
|
+
response = delete("articles/#{id}")
|
92
|
+
response
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
module Assistly
|
2
|
+
class Client
|
3
|
+
# Defines methods related to macros
|
4
|
+
module Macro
|
5
|
+
# Returns extended information of macros
|
6
|
+
#
|
7
|
+
# @option options [Boolean, String, Integer]
|
8
|
+
# @example Return extended information for 12345
|
9
|
+
# Assistly.macros
|
10
|
+
# Assistly.macros(:count => 5)
|
11
|
+
# Assistly.macros(:count => 5, :page => 3)
|
12
|
+
# @format :json
|
13
|
+
# @authenticated true
|
14
|
+
# @see http://dev.assistly.com/docs/api/macros
|
15
|
+
def macros(*args)
|
16
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
17
|
+
response = get("macros",options)
|
18
|
+
response['results']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Returns extended information on a single macro
|
22
|
+
#
|
23
|
+
# @param id [Integer] a macro ID
|
24
|
+
# @option options [Hash]
|
25
|
+
# @example Return extended information for 12345
|
26
|
+
# Assistly.macro(12345)
|
27
|
+
# @format :json
|
28
|
+
# @authenticated true
|
29
|
+
# @see http://dev.assistly.com/docs/api/macros/show
|
30
|
+
def macro(id)
|
31
|
+
response = get("macros/#{id}")
|
32
|
+
response.macro
|
33
|
+
end
|
34
|
+
|
35
|
+
# Creates a new macro
|
36
|
+
#
|
37
|
+
# @param name [String] A macro name
|
38
|
+
# @option options [Hash]
|
39
|
+
# @example Creates a new macro
|
40
|
+
# Assistly.create_macro("name")
|
41
|
+
# Assistly.create_macro("name")
|
42
|
+
# @format :json
|
43
|
+
# @authenticated true
|
44
|
+
# @see http://dev.assistly.com/docs/api/macros/create
|
45
|
+
def create_macro(name, *args)
|
46
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
47
|
+
response = post("macros",options)
|
48
|
+
if response['success']
|
49
|
+
return response['results']['macro']
|
50
|
+
else
|
51
|
+
return response
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Updates a single macro
|
56
|
+
#
|
57
|
+
# @param id [Integer] a macro ID
|
58
|
+
# @option options [String]
|
59
|
+
# @example Updates information for macro 12345
|
60
|
+
# Assistly.update_macro(12345, :subject => "New Subject")
|
61
|
+
# @format :json
|
62
|
+
# @authenticated true
|
63
|
+
# @see http://dev.assistly.com/docs/api/macros/update
|
64
|
+
def update_macro(id, *args)
|
65
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
66
|
+
response = put("macros/#{id}",options)
|
67
|
+
if response['success']
|
68
|
+
return response['results']['macro']
|
69
|
+
else
|
70
|
+
return response
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# Deletes a single macro
|
75
|
+
#
|
76
|
+
# @param id [Integer] a macro ID
|
77
|
+
# @example Deletes macro 12345
|
78
|
+
# Assistly.update_macro(12345, :subject => "New Subject")
|
79
|
+
# @format :json
|
80
|
+
# @authenticated true
|
81
|
+
# @see http://dev.assistly.com/docs/api/macros/update
|
82
|
+
def delete_macro(id)
|
83
|
+
response = delete("macros/#{id}")
|
84
|
+
response
|
85
|
+
end
|
86
|
+
|
87
|
+
##########
|
88
|
+
# Macro Actions
|
89
|
+
##########
|
90
|
+
|
91
|
+
# Returns extended information of macros
|
92
|
+
#
|
93
|
+
# @option options [Boolean, String, Integer]
|
94
|
+
# @example Return extended information for 12345
|
95
|
+
# Assistly.macro_actions(1)
|
96
|
+
# Assistly.macro_actions(1, :count => 5)
|
97
|
+
# Assistly.macro_actions(1, :count => 5, :page => 3)
|
98
|
+
# @format :json
|
99
|
+
# @authenticated true
|
100
|
+
# @see http://dev.assistly.com/docs/api/macros/actions
|
101
|
+
def macro_actions(id, *args)
|
102
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
103
|
+
response = get("macros/#{id}/actions",options)
|
104
|
+
response['results']
|
105
|
+
end
|
106
|
+
|
107
|
+
# Returns extended information on a single macro
|
108
|
+
#
|
109
|
+
# @param id [Integer] a macro ID
|
110
|
+
# @option options [Hash]
|
111
|
+
# @example Return extended information for 12345
|
112
|
+
# Assistly.macro_action(12345, "set-case-description")
|
113
|
+
# @format :json
|
114
|
+
# @authenticated true
|
115
|
+
# @see http://dev.assistly.com/docs/api/macros/actions/show
|
116
|
+
def macro_action(id, slug)
|
117
|
+
response = get("macros/#{id}/actions/#{slug}")
|
118
|
+
response['action']
|
119
|
+
end
|
120
|
+
|
121
|
+
# Updates a single macro action
|
122
|
+
#
|
123
|
+
# @param id [Integer] a macro ID
|
124
|
+
# @option options [String]
|
125
|
+
# @example Updates information for macro 12345
|
126
|
+
# Assistly.update_macro_action(12345, "set-case-description", :value => "New Subject")
|
127
|
+
# @format :json
|
128
|
+
# @authenticated true
|
129
|
+
# @see http://dev.assistly.com/docs/api/macros/actions/update
|
130
|
+
def update_macro_action(id, slug, *args)
|
131
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
132
|
+
response = put("macros/#{id}/actions/#{slug}",options)
|
133
|
+
if response['success']
|
134
|
+
return response['results']['action']
|
135
|
+
else
|
136
|
+
return response
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module Assistly
|
2
|
+
class Client
|
3
|
+
# Defines methods related to topics
|
4
|
+
module Topic
|
5
|
+
# Returns extended information of topics
|
6
|
+
#
|
7
|
+
# @option options [Boolean, String, Integer]
|
8
|
+
# @example Return extended information for 12345
|
9
|
+
# Assistly.topics
|
10
|
+
# Assistly.topics(:count => 5)
|
11
|
+
# Assistly.topics(:count => 5, :page => 3)
|
12
|
+
# @format :json
|
13
|
+
# @authenticated true
|
14
|
+
# @see http://dev.assistly.com/docs/api/topics/show
|
15
|
+
def topics(*args)
|
16
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
17
|
+
response = get("topics",options)
|
18
|
+
response['results']
|
19
|
+
end
|
20
|
+
|
21
|
+
# Returns extended information on a single topic
|
22
|
+
#
|
23
|
+
# @param id [Integer] a topic ID
|
24
|
+
# @option options [Hash]
|
25
|
+
# @example Return extended information for 12345
|
26
|
+
# Assistly.topic(12345)
|
27
|
+
# Assistly.topic(12345, :by => "external_id")
|
28
|
+
# @format :json
|
29
|
+
# @authenticated true
|
30
|
+
# @see http://dev.assistly.com/docs/api/topics/show
|
31
|
+
def topic(id, *args)
|
32
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
33
|
+
response = get("topics/#{id}",options)
|
34
|
+
response.topic
|
35
|
+
end
|
36
|
+
|
37
|
+
# Creates a new topic
|
38
|
+
#
|
39
|
+
# @param name [String] A topic name
|
40
|
+
# @option options [Hash]
|
41
|
+
# @example Creates a new topic
|
42
|
+
# Assistly.create_topic("name")
|
43
|
+
# Assistly.create_topic("name", :description => "description")
|
44
|
+
# @format :json
|
45
|
+
# @authenticated true
|
46
|
+
# @see http://dev.assistly.com/docs/api/topics/create
|
47
|
+
def create_topic(name, *args)
|
48
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
49
|
+
response = post("topics",options)
|
50
|
+
if response['success']
|
51
|
+
return response['results']['topic']
|
52
|
+
else
|
53
|
+
return response
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# Updates a single topic
|
58
|
+
#
|
59
|
+
# @param id [Integer] a topic ID
|
60
|
+
# @option options [String]
|
61
|
+
# @example Updates information for topic 12345
|
62
|
+
# Assistly.update_topic(12345, :subject => "New Subject")
|
63
|
+
# @format :json
|
64
|
+
# @authenticated true
|
65
|
+
# @see http://dev.assistly.com/docs/api/topics/update
|
66
|
+
def update_topic(id, *args)
|
67
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
68
|
+
response = put("topics/#{id}",options)
|
69
|
+
if response['success']
|
70
|
+
return response['results']['topic']
|
71
|
+
else
|
72
|
+
return response
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# Deletes a single topic
|
77
|
+
#
|
78
|
+
# @param id [Integer] a topic ID
|
79
|
+
# @example Deletes topic 12345
|
80
|
+
# Assistly.update_topic(12345, :subject => "New Subject")
|
81
|
+
# @format :json
|
82
|
+
# @authenticated true
|
83
|
+
# @see http://dev.assistly.com/docs/api/topics/update
|
84
|
+
def delete_topic(id)
|
85
|
+
response = delete("topics/#{id}")
|
86
|
+
response
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|