gitlab_support_readiness 1.0.106 → 1.0.107
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/support_readiness/repos/triggers.rb +58 -0
- data/lib/support_readiness/zendesk/requester_roles.rb +67 -0
- data/lib/support_readiness/zendesk/satisfaction_reasons.rb +90 -0
- data/lib/support_readiness/zendesk/targets.rb +95 -0
- data/lib/support_readiness/zendesk/ticket_user_types.rb +80 -0
- data/lib/support_readiness/zendesk/via_types.rb +150 -0
- data/lib/support_readiness/zendesk.rb +5 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f818f636d0d4ede0cdc4deb7ddc3766c55494083323688b4e1824eaf379c7e9f
|
4
|
+
data.tar.gz: a0f927d38db878c0ad5910942dff16fdc47233b2c80db148d66ace3cb21bb15b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61da165d631935cd0a8d45c974b7affb65ce62143430e77b8fc1240e5236618223b5e51ee69590a465e29111f37cb7f14701a0c4a0735c597629d15d7e4d2673
|
7
|
+
data.tar.gz: 9d87216ba5ef760c5da1da4e58c0f7e0902d1cfc21a2f039b8f4ef9e926666a43dfaf98163579a06c4b077c179274479e578b161589215f5ea99246057894ac4
|
@@ -137,6 +137,8 @@ module Readiness
|
|
137
137
|
def self.gather(location = 'data')
|
138
138
|
@categories = Readiness::Zendesk::TriggerCategories.list(@zendesk_client)
|
139
139
|
@schedules = Readiness::Zendesk::Schedules.list(@zendesk_client)
|
140
|
+
@satisfaction_reasons = Readiness::Zendesk::SatisfactionReasons.list(@zendesk_client)
|
141
|
+
@targets = Readiness::Zendesk::Targets.list(@zendesk_client)
|
140
142
|
@ticket_fields = Readiness::Zendesk::TicketFields.list(@zendesk_client)
|
141
143
|
@ticket_forms = Readiness::Zendesk::TicketForms.list(@zendesk_client)
|
142
144
|
@webhooks = Readiness::Zendesk::Webhooks.list(@zendesk_client)
|
@@ -172,6 +174,38 @@ module Readiness
|
|
172
174
|
def self.convert_names_to_ids(trigger)
|
173
175
|
%w[any all].each do |type|
|
174
176
|
trigger['conditions'][type].each_with_index do |c, i|
|
177
|
+
if c['field'] == 'satisfaction_reason_code'
|
178
|
+
reason = Readiness::Zendesk::SatisfactionReasons.find_by_name(@zendesk_client, c['value'], @satisfaction_reasons)
|
179
|
+
unless reason.nil?
|
180
|
+
trigger['conditions'][type][i]['value'] = reason.reason_code.to_s
|
181
|
+
end
|
182
|
+
end
|
183
|
+
if c['field'] == 'via_id'
|
184
|
+
via_type = Readiness::Zendesk::ViaTypes.find_by_name(c['value'])
|
185
|
+
unless via_type.nil?
|
186
|
+
trigger['conditions'][type][i]['value'] = via_type.id.to_s
|
187
|
+
end
|
188
|
+
end
|
189
|
+
if c['field'] == 'requester_role'
|
190
|
+
role = Readiness::Zendesk::RequesterRoles.find_by_name(c['value'])
|
191
|
+
unless role.nil?
|
192
|
+
trigger['conditions'][type][i]['value'] = role.id.to_s
|
193
|
+
end
|
194
|
+
end
|
195
|
+
if c['field'] == 'role'
|
196
|
+
role = Readiness::Zendesk::TicketUserTypes.find_by_name(@zendesk_client, c['value'])
|
197
|
+
unless role.nil?
|
198
|
+
trigger['conditions'][type][i]['value'] = role.id.to_s
|
199
|
+
end
|
200
|
+
end
|
201
|
+
if c['field'] == 'assignee_id'
|
202
|
+
unless ['', 'current_user', 'requester_id'].include? c['value']
|
203
|
+
search = Readiness::Zendesk::Search.users(@zendesk_client, "email:#{c['value']}")
|
204
|
+
if search.count == 1
|
205
|
+
trigger['conditions'][type][i]['value'] = search.first.id.to_s
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
175
209
|
if c['field'] == 'ticket_form_id'
|
176
210
|
if c['value'] =~ /Form\:\ /
|
177
211
|
name = c['value'].split('Form: ').last
|
@@ -192,6 +226,30 @@ module Readiness
|
|
192
226
|
end
|
193
227
|
end
|
194
228
|
trigger['actions'].each_with_index do |a, i|
|
229
|
+
if a['field'] == 'notification_target'
|
230
|
+
if a['value'].first =~ /^Target\:\ /
|
231
|
+
name = a['value'].first.split('Target: ').last
|
232
|
+
target = Readiness::Zendesk::Targets.find_by_name(@zendesk_client, name, @targets)
|
233
|
+
trigger['actions'][i]['value'][0] = target.id.to_s
|
234
|
+
end
|
235
|
+
end
|
236
|
+
if a['field'] == 'role'
|
237
|
+
role = Readiness::Zendesk::TicketUserTypes.find_by_name(@zendesk_client, c['value'])
|
238
|
+
unless role.nil?
|
239
|
+
trigger['actions'][i]['value'] = role.id.to_s
|
240
|
+
end
|
241
|
+
end
|
242
|
+
if a['field'] == 'assignee_id'
|
243
|
+
unless ['', 'current_user', 'requester_id'].include? a['value']
|
244
|
+
search = Readiness::Zendesk::Search.users(@zendesk_client, "email:#{a['value']}")
|
245
|
+
if search.count == 1
|
246
|
+
trigger['actions'][i]['value'] = search.first.id.to_s
|
247
|
+
else
|
248
|
+
puts "Cannot find user #{a['value']} for #{trigger['title']}"
|
249
|
+
exit 1
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
195
253
|
if a['field'] == 'notification_webhook'
|
196
254
|
if a['value'].first =~ /^Webhook\:\ /
|
197
255
|
name = a['value'].first.split('Webhook: ').last
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Zendesk
|
6
|
+
module Zendesk
|
7
|
+
##
|
8
|
+
# Defines the class RequesterRoles within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.107
|
12
|
+
class RequesterRoles < Readiness::Client
|
13
|
+
attr_accessor :id, :name
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::RequesterRoles} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.107
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::RequesterRoles}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::RequesterRoles.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@id = object['id']
|
26
|
+
@name = object['name']
|
27
|
+
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Lists requester roles
|
31
|
+
#
|
32
|
+
# @author Jason Colyer
|
33
|
+
# @since 1.0.107
|
34
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
35
|
+
# @return [Array]
|
36
|
+
# @example
|
37
|
+
# require 'support_readiness'
|
38
|
+
# types = Readiness::Zendesk::RequesterRoles.list
|
39
|
+
# pp types.first.name
|
40
|
+
# # => "Web form"
|
41
|
+
def self.list
|
42
|
+
[
|
43
|
+
{ 'id' => 4, 'name' => 'Agent' },
|
44
|
+
{ 'id' => 'LIGHT_AGENT', 'name' => 'Light Agent' },
|
45
|
+
{ 'id' => 0, 'name' => 'End User' },
|
46
|
+
{ 'id' => 2, 'name' => 'Admin' }
|
47
|
+
].map { |r| RequesterRoles.new(r) }
|
48
|
+
end
|
49
|
+
|
50
|
+
##
|
51
|
+
# Locates a via type within Zendesk by name
|
52
|
+
#
|
53
|
+
# @author Jason Colyer
|
54
|
+
# @since 1.0.107
|
55
|
+
# @param name [String] The via type name to look for
|
56
|
+
# @return [Object] An instance of {Readiness::Zendesk::ViaTypes}
|
57
|
+
# @example
|
58
|
+
# require 'support_readiness'
|
59
|
+
# role = Readiness::Zendesk::RequesterRoles.find_by_name('Agent')
|
60
|
+
# pp role.id
|
61
|
+
# # => 4
|
62
|
+
def self.find_by_name(name)
|
63
|
+
RequesterRoles.list.detect { |r| r.name == name }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Zendesk
|
6
|
+
module Zendesk
|
7
|
+
##
|
8
|
+
# Defines the class SatisfactionReasons within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.107
|
12
|
+
# @todo Find methods
|
13
|
+
class SatisfactionReasons < Readiness::Client
|
14
|
+
attr_accessor :id, :raw_value, :reason_code, :value
|
15
|
+
|
16
|
+
##
|
17
|
+
# Creates a new {Readiness::Zendesk::SatisfactionReasons} instance
|
18
|
+
#
|
19
|
+
# @author Jason Colyer
|
20
|
+
# @since 1.0.107
|
21
|
+
# @param object [Object] An instance of {Readiness::Zendesk::SatisfactionReasons}
|
22
|
+
# @example
|
23
|
+
# require 'support_readiness'
|
24
|
+
# Readiness::Zendesk::SatisfactionReasons.new
|
25
|
+
def initialize(object = {})
|
26
|
+
@id = object['id']
|
27
|
+
@raw_value = object['raw_value']
|
28
|
+
@reason_code = object['reason_code']
|
29
|
+
@value = object['value']
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Lists satisfaction reasons
|
34
|
+
#
|
35
|
+
# @author Jason Colyer
|
36
|
+
# @since 1.0.107
|
37
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
38
|
+
# @return [Array]
|
39
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/ticket-management/satisfaction_reasons/#list-reasons-for-satisfaction-rating Zendesk API > Satisfaction Reaosns > List Reasons for Satisfaction Rating
|
40
|
+
# @example
|
41
|
+
# require 'support_readiness'
|
42
|
+
# config = Readiness::Zendesk::Configuration.new
|
43
|
+
# config.username = 'alice@example.com'
|
44
|
+
# config.token = 'test123abc'
|
45
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
46
|
+
# client = Readiness::Zendesk::Client.new(config)
|
47
|
+
# reasons = Readiness::Zendesk::SatisfactionReasons.list(client)
|
48
|
+
# pp reasons.first.reason_code
|
49
|
+
# # => 1003
|
50
|
+
def self.list(client)
|
51
|
+
response = client.connection.get 'satisfaction_reasons'
|
52
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
53
|
+
body = Oj.load(response.body)
|
54
|
+
body['satisfaction_reasons'].map { |t| SatisfactionReasons.new(t)}
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Locates a satisfaction reason within Zendesk by name. Can utilize a cache for quicker results
|
59
|
+
#
|
60
|
+
# @author Jason Colyer
|
61
|
+
# @since 1.0.107
|
62
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
63
|
+
# @param value [String] The satisfaction reason value to look for
|
64
|
+
# @param cache [Array] The results of {Readiness::Zendesk::SatisfactionReasons#list}
|
65
|
+
# @return [Object] An instance of {Readiness::Zendesk::SatisfactionReasons}
|
66
|
+
# @example
|
67
|
+
# require 'support_readiness'
|
68
|
+
# config = Readiness::Zendesk::Configuration.new
|
69
|
+
# config.username = 'alice@example.com'
|
70
|
+
# config.token = 'test123abc'
|
71
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
72
|
+
# client = Readiness::Zendesk::Client.new(config)
|
73
|
+
# reason = Readiness::Zendesk::SatisfactionReasons.find_by_name!(client, 'Agent did not respond quickly')
|
74
|
+
# pp reason.reason_code
|
75
|
+
# # => 1003
|
76
|
+
# list = Readiness::Zendesk::SatisfactionReasons.list(client)
|
77
|
+
# reason = Readiness::Zendesk::Schedules.find_by_name(client, 'Agent did not respond quickly', list)
|
78
|
+
# pp reason.reason_code
|
79
|
+
# # => 1003
|
80
|
+
def self.find_by_name(client, value, cache = nil)
|
81
|
+
list = if cache.nil?
|
82
|
+
SatisfactionReasons.list(client)
|
83
|
+
else
|
84
|
+
cache
|
85
|
+
end
|
86
|
+
list.detect { |c| c.value == value }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Zendesk
|
6
|
+
module Zendesk
|
7
|
+
##
|
8
|
+
# Defines the class Targets within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.107
|
12
|
+
# @todo Find methods
|
13
|
+
# @todo Create method
|
14
|
+
# @todo Update method
|
15
|
+
# @todo Delete method
|
16
|
+
class Targets < Readiness::Client
|
17
|
+
attr_accessor :active, :email, :id, :subject, :title, :type
|
18
|
+
|
19
|
+
##
|
20
|
+
# Creates a new {Readiness::Zendesk::Targets} instance
|
21
|
+
#
|
22
|
+
# @author Jason Colyer
|
23
|
+
# @since 1.0.107
|
24
|
+
# @param object [Object] An instance of {Readiness::Zendesk::Targets}
|
25
|
+
# @example
|
26
|
+
# require 'support_readiness'
|
27
|
+
# Readiness::Zendesk::Targets.new
|
28
|
+
def initialize(object = {})
|
29
|
+
@active = object['active']
|
30
|
+
@email = object['email']
|
31
|
+
@id = object['id']
|
32
|
+
@subject = object['subject']
|
33
|
+
@title = object['title']
|
34
|
+
@type = object['type']
|
35
|
+
end
|
36
|
+
|
37
|
+
##
|
38
|
+
# Lists targets
|
39
|
+
#
|
40
|
+
# @author Jason Colyer
|
41
|
+
# @since 1.0.107
|
42
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
43
|
+
# @return [Array]
|
44
|
+
# @see https://developer.zendesk.com/api-reference/ticketing/targets/targets/#list-targets Zendesk API > Targets > List Targets
|
45
|
+
# @example
|
46
|
+
# require 'support_readiness'
|
47
|
+
# config = Readiness::Zendesk::Configuration.new
|
48
|
+
# config.username = 'alice@example.com'
|
49
|
+
# config.token = 'test123abc'
|
50
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
51
|
+
# client = Readiness::Zendesk::Client.new(config)
|
52
|
+
# categories = Readiness::Zendesk::Schedules.list(client)
|
53
|
+
# pp categories.first.id
|
54
|
+
# # => 10001
|
55
|
+
def self.list(client)
|
56
|
+
response = client.connection.get 'targets'
|
57
|
+
handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
|
58
|
+
body = Oj.load(response.body)
|
59
|
+
body['targets'].map { |t| Targets.new(t)}
|
60
|
+
end
|
61
|
+
|
62
|
+
##
|
63
|
+
# Locates a target within Zendesk by name. Can utilize a cacheh for quicker results
|
64
|
+
#
|
65
|
+
# @author Jason Colyer
|
66
|
+
# @since 1.0.107
|
67
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
68
|
+
# @param name [String] The target name to look for
|
69
|
+
# @param cache [Array] The results of {Readiness::Zendesk::Targets#list}
|
70
|
+
# @return [Object] An instance of {Readiness::Zendesk::Targets}
|
71
|
+
# @example
|
72
|
+
# require 'support_readiness'
|
73
|
+
# config = Readiness::Zendesk::Configuration.new
|
74
|
+
# config.username = 'alice@example.com'
|
75
|
+
# config.token = 'test123abc'
|
76
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
77
|
+
# client = Readiness::Zendesk::Client.new(config)
|
78
|
+
# target = Readiness::Zendesk::Targets.find_by_name(client, 'Email Bob')
|
79
|
+
# pp target.id
|
80
|
+
# # => 123
|
81
|
+
# list = Readiness::Zendesk::Targets.list(client)
|
82
|
+
# target = Readiness::Zendesk::Targets.find_by_name(client, 'Email Bob', list)
|
83
|
+
# pp target.id
|
84
|
+
# # => 123
|
85
|
+
def self.find_by_name(client, name, cache = nil)
|
86
|
+
list = if cache.nil?
|
87
|
+
Targets.list(client)
|
88
|
+
else
|
89
|
+
cache
|
90
|
+
end
|
91
|
+
list.detect { |c| c.title == name }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Zendesk
|
6
|
+
module Zendesk
|
7
|
+
##
|
8
|
+
# Defines the class TicketUserTypes within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.107
|
12
|
+
class TicketUserTypes < Readiness::Client
|
13
|
+
attr_accessor :id, :name
|
14
|
+
|
15
|
+
##
|
16
|
+
# Creates a new {Readiness::Zendesk::TicketUserTypes} instance
|
17
|
+
#
|
18
|
+
# @author Jason Colyer
|
19
|
+
# @since 1.0.107
|
20
|
+
# @param object [Object] An instance of {Readiness::Zendesk::TicketUserTypes}
|
21
|
+
# @example
|
22
|
+
# require 'support_readiness'
|
23
|
+
# Readiness::Zendesk::TicketUserTypes.new
|
24
|
+
def initialize(object = {})
|
25
|
+
@id = object['id']
|
26
|
+
@name = object['name']
|
27
|
+
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Lists ticket user types
|
31
|
+
#
|
32
|
+
# @author Jason Colyer
|
33
|
+
# @since 1.0.107
|
34
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
35
|
+
# @return [Array]
|
36
|
+
# @example
|
37
|
+
# require 'support_readiness'
|
38
|
+
# types = Readiness::Zendesk::TicketUserTypes.list
|
39
|
+
# pp types.first.name
|
40
|
+
# # => "Agent"
|
41
|
+
def self.list
|
42
|
+
[
|
43
|
+
{ 'id' => 'agent', 'name' => 'Agent' },
|
44
|
+
{ 'id' => 'end_user', 'name' => 'End User' }
|
45
|
+
].map { |r| TicketUserTypes.new(r) }
|
46
|
+
end
|
47
|
+
|
48
|
+
##
|
49
|
+
# Locates a ticket user type within Zendesk by name. If not found, will assume a user email (and will exit on error)
|
50
|
+
#
|
51
|
+
# @author Jason Colyer
|
52
|
+
# @since 1.0.107
|
53
|
+
# @param name [String] The ticket user type name to look for
|
54
|
+
# @return [Object] An instance of {Readiness::Zendesk::TicketUserTypes}
|
55
|
+
# @example
|
56
|
+
# require 'support_readiness'
|
57
|
+
# config = Readiness::Zendesk::Configuration.new
|
58
|
+
# config.username = 'alice@example.com'
|
59
|
+
# config.token = 'test123abc'
|
60
|
+
# config.url = 'https://example.zendesk.com/api/v2'
|
61
|
+
# client = Readiness::Zendesk::Client.new(config)
|
62
|
+
# type = Readiness::Zendesk::TicketUserTypes.find_by_name(client, 'Agent')
|
63
|
+
# pp type.id
|
64
|
+
# # => 4
|
65
|
+
# type = Readiness::Zendesk::TicketUserTypes.find_by_name(client, 'jcolyer@gitlab.com')
|
66
|
+
# pp type.id
|
67
|
+
# # => 12345
|
68
|
+
def self.find_by_name(client, name)
|
69
|
+
type = TicketUserTypes.list.detect { |r| r.name == name }
|
70
|
+
if type.nil?
|
71
|
+
search = Search.users(client, "email:#{name}")
|
72
|
+
if search.count == 1
|
73
|
+
type = TicketUserTypes.new({ 'id' => search.first.id, 'name' => search.first.email })
|
74
|
+
end
|
75
|
+
end
|
76
|
+
type
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,150 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Defines the module Readiness.
|
4
|
+
module Readiness
|
5
|
+
# Defines the module Zendesk
|
6
|
+
module Zendesk
|
7
|
+
##
|
8
|
+
# Defines the class ViaTypes within the module {Readiness::Zendesk}.
|
9
|
+
#
|
10
|
+
# @author Jason Colyer
|
11
|
+
# @since 1.0.107
|
12
|
+
# @todo Find a way to dynamically generate list via https://developer.zendesk.com/documentation/ticketing/reference-guides/via-types/
|
13
|
+
class ViaTypes < Readiness::Client
|
14
|
+
attr_accessor :id, :name
|
15
|
+
|
16
|
+
##
|
17
|
+
# Creates a new {Readiness::Zendesk::Via_IDs} instance
|
18
|
+
#
|
19
|
+
# @author Jason Colyer
|
20
|
+
# @since 1.0.107
|
21
|
+
# @param object [Object] An instance of {Readiness::Zendesk::ViaTypes}
|
22
|
+
# @example
|
23
|
+
# require 'support_readiness'
|
24
|
+
# Readiness::Zendesk::ViaTypes.new
|
25
|
+
def initialize(object = {})
|
26
|
+
@id = object['id']
|
27
|
+
@name = object['name']
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Lists via types
|
32
|
+
#
|
33
|
+
# @author Jason Colyer
|
34
|
+
# @since 1.0.107
|
35
|
+
# @param client [Object] An instance of {Readiness::Zendesk::Client}
|
36
|
+
# @return [Array]
|
37
|
+
# @example
|
38
|
+
# require 'support_readiness'
|
39
|
+
# types = Readiness::Zendesk::ViaTypes.list
|
40
|
+
# pp types.first.name
|
41
|
+
# # => "Web form"
|
42
|
+
def self.list
|
43
|
+
[
|
44
|
+
{ 'id' => 0, 'name' => 'Web form' },
|
45
|
+
{ 'id' => 4, 'name' => 'Email' },
|
46
|
+
{ 'id' => 5, 'name' => 'Web service (API)' },
|
47
|
+
{ 'id' => 8, 'name' => 'Trigger, automation' },
|
48
|
+
{ 'id' => 9, 'name' => 'Linked problem' },
|
49
|
+
{ 'id' => 10, 'name' => 'Group deletion' },
|
50
|
+
{ 'id' => 11, 'name' => 'Change user' },
|
51
|
+
{ 'id' => 12, 'name' => 'Delete user' },
|
52
|
+
{ 'id' => 13, 'name' => 'Change group' },
|
53
|
+
{ 'id' => 14, 'name' => 'Push resource' },
|
54
|
+
{ 'id' => 15, 'name' => 'iPhone' },
|
55
|
+
{ 'id' => 16, 'name' => 'Get Satisfaction' },
|
56
|
+
{ 'id' => 17, 'name' => 'Feedback tab' },
|
57
|
+
{ 'id' => 19, 'name' => 'Merge' },
|
58
|
+
{ 'id' => 20, 'name' => 'Batch' },
|
59
|
+
{ 'id' => 21, 'name' => 'Recover from suspended ticket' },
|
60
|
+
{ 'id' => 22, 'name' => 'Automatic Solution Suggestions' },
|
61
|
+
{ 'id' => 23, 'name' => 'X (formerly Twitter) like' },
|
62
|
+
{ 'id' => 24, 'name' => 'Topic' },
|
63
|
+
{ 'id' => 25, 'name' => 'Merge user' },
|
64
|
+
{ 'id' => 26, 'name' => 'X DM' },
|
65
|
+
{ 'id' => 27, 'name' => 'Closed ticket' },
|
66
|
+
{ 'id' => 28, 'name' => 'LogMeIn Rescue' },
|
67
|
+
{ 'id' => 29, 'name' => 'Chat' },
|
68
|
+
{ 'id' => 30, 'name' => 'X' },
|
69
|
+
{ 'id' => 31, 'name' => 'Ticket sharing' },
|
70
|
+
{ 'id' => 32, 'name' => 'Macro reference' },
|
71
|
+
{ 'id' => 33, 'name' => 'Voicemail' },
|
72
|
+
{ 'id' => 34, 'name' => 'Phone call (incoming)' },
|
73
|
+
{ 'id' => 35, 'name' => 'Phone call (outbound)' },
|
74
|
+
{ 'id' => 36, 'name' => 'Blog' },
|
75
|
+
{ 'id' => 37, 'name' => 'Text message' },
|
76
|
+
{ 'id' => 38, 'name' => 'Facebook post' },
|
77
|
+
{ 'id' => 39, 'name' => 'Import' },
|
78
|
+
{ 'id' => 40, 'name' => 'GitHub' },
|
79
|
+
{ 'id' => 41, 'name' => 'Facebook private message' },
|
80
|
+
{ 'id' => 42, 'name' => 'Lotus' },
|
81
|
+
{ 'id' => 43, 'name' => 'Monitor event' },
|
82
|
+
{ 'id' => 44, 'name' => 'CTI* voicemail' },
|
83
|
+
{ 'id' => 45, 'name' => 'CTI phone call (inbound)' },
|
84
|
+
{ 'id' => 46, 'name' => 'CTI phone call (outbound)' },
|
85
|
+
{ 'id' => 47, 'name' => 'Churned account' },
|
86
|
+
{ 'id' => 48, 'name' => 'Web Widget' },
|
87
|
+
{ 'id' => 49, 'name' => 'Mobile SDK' },
|
88
|
+
{ 'id' => 50, 'name' => 'Help center post' },
|
89
|
+
{ 'id' => 51, 'name' => 'Sample ticket' },
|
90
|
+
{ 'id' => 52, 'name' => 'Sample interactive ticket' },
|
91
|
+
{ 'id' => 53, 'name' => 'Admin setting' },
|
92
|
+
{ 'id' => 54, 'name' => 'Satisfaction prediction' },
|
93
|
+
{ 'id' => 55, 'name' => 'Channel framework' },
|
94
|
+
{ 'id' => 56, 'name' => 'Mobile' },
|
95
|
+
{ 'id' => 57, 'name' => 'SMS text messages (through Talk)' },
|
96
|
+
{ 'id' => 58, 'name' => 'Ticket tagging' },
|
97
|
+
{ 'id' => 59, 'name' => 'Connect IPM' },
|
98
|
+
{ 'id' => 60, 'name' => 'Connect Mail' },
|
99
|
+
{ 'id' => 61, 'name' => 'Connect SMS' },
|
100
|
+
{ 'id' => 62, 'name' => 'Rule revision' },
|
101
|
+
{ 'id' => 63, 'name' => 'Answer Bot for agents' },
|
102
|
+
{ 'id' => 64, 'name' => 'Answer Bot for Slack' },
|
103
|
+
{ 'id' => 65, 'name' => 'Answer Bot for SDK' },
|
104
|
+
{ 'id' => 66, 'name' => 'Answer Bot API' },
|
105
|
+
{ 'id' => 67, 'name' => 'Answer Bot for Web Widget' },
|
106
|
+
{ 'id' => 68, 'name' => 'Symphony' },
|
107
|
+
{ 'id' => 69, 'name' => 'Side conversation' },
|
108
|
+
{ 'id' => 70, 'name' => 'Answer Bot' },
|
109
|
+
{ 'id' => 71, 'name' => 'Omnichannel' },
|
110
|
+
{ 'id' => 72, 'name' => 'LINE' },
|
111
|
+
{ 'id' => 73, 'name' => 'WeChat' },
|
112
|
+
{ 'id' => 74, 'name' => 'WhatsApp' },
|
113
|
+
{ 'id' => 75, 'name' => 'Native messaging' },
|
114
|
+
{ 'id' => 76, 'name' => 'Mailgun' },
|
115
|
+
{ 'id' => 77, 'name' => 'MessageBird SMS' },
|
116
|
+
{ 'id' => 78, 'name' => 'Sunshine Conversations Facebook Messenger' },
|
117
|
+
{ 'id' => 79, 'name' => 'Telegram messenger' },
|
118
|
+
{ 'id' => 80, 'name' => 'Sunshine Conversations Twilio SMS' },
|
119
|
+
{ 'id' => 81, 'name' => 'Viber messenger' },
|
120
|
+
{ 'id' => 82, 'name' => 'Google RCS messaging' },
|
121
|
+
{ 'id' => 83, 'name' => 'Apple Messages for Business' },
|
122
|
+
{ 'id' => 84, 'name' => 'Google Business Messages' },
|
123
|
+
{ 'id' => 85, 'name' => 'KakaoTalk messenger' },
|
124
|
+
{ 'id' => 86, 'name' => 'Instagram Direct Messenger' },
|
125
|
+
{ 'id' => 87, 'name' => 'Sunshine Conversations API' },
|
126
|
+
{ 'id' => 88, 'name' => 'Sunshine Conversations X DM' },
|
127
|
+
{ 'id' => 89, 'name' => 'Offline Chat Message' },
|
128
|
+
{ 'id' => 90, 'name' => 'Chat transcript' },
|
129
|
+
{ 'id' => 91, 'name' => 'Slack Connect Business Messaging' }
|
130
|
+
].map { |v| ViaTypes.new(v) }
|
131
|
+
end
|
132
|
+
|
133
|
+
##
|
134
|
+
# Locates a via type within Zendesk by name
|
135
|
+
#
|
136
|
+
# @author Jason Colyer
|
137
|
+
# @since 1.0.107
|
138
|
+
# @param name [String] The via type name to look for
|
139
|
+
# @return [Object] An instance of {Readiness::Zendesk::ViaTypes}
|
140
|
+
# @example
|
141
|
+
# require 'support_readiness'
|
142
|
+
# type = Readiness::Zendesk::ViaTypes.find_by_name('Web form')
|
143
|
+
# pp type.id
|
144
|
+
# # => 0
|
145
|
+
def self.find_by_name(name)
|
146
|
+
ViaTypes.list.detect { |v| v.name == name }
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
@@ -23,21 +23,26 @@ module Readiness
|
|
23
23
|
require "#{__dir__}/zendesk/organization_fields"
|
24
24
|
require "#{__dir__}/zendesk/organization_memberships"
|
25
25
|
require "#{__dir__}/zendesk/organizations"
|
26
|
+
require "#{__dir__}/zendesk/requester_roles"
|
26
27
|
require "#{__dir__}/zendesk/roles"
|
28
|
+
require "#{__dir__}/zendesk/satisfaction_reasons"
|
27
29
|
require "#{__dir__}/zendesk/search"
|
28
30
|
require "#{__dir__}/zendesk/schedules"
|
29
31
|
require "#{__dir__}/zendesk/sla_policies"
|
32
|
+
require "#{__dir__}/zendesk/targets"
|
30
33
|
require "#{__dir__}/zendesk/theme_job_statuses"
|
31
34
|
require "#{__dir__}/zendesk/themes"
|
32
35
|
require "#{__dir__}/zendesk/ticket_fields"
|
33
36
|
require "#{__dir__}/zendesk/ticket_field_options"
|
34
37
|
require "#{__dir__}/zendesk/ticket_forms"
|
38
|
+
require "#{__dir__}/zendesk/ticket_user_types"
|
35
39
|
require "#{__dir__}/zendesk/tickets"
|
36
40
|
require "#{__dir__}/zendesk/triggers"
|
37
41
|
require "#{__dir__}/zendesk/trigger_categories"
|
38
42
|
require "#{__dir__}/zendesk/user_field_options"
|
39
43
|
require "#{__dir__}/zendesk/user_fields"
|
40
44
|
require "#{__dir__}/zendesk/users"
|
45
|
+
require "#{__dir__}/zendesk/via_types"
|
41
46
|
require "#{__dir__}/zendesk/views"
|
42
47
|
require "#{__dir__}/zendesk/webhooks"
|
43
48
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab_support_readiness
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.107
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Colyer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-01-
|
11
|
+
date: 2025-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -417,21 +417,26 @@ files:
|
|
417
417
|
- lib/support_readiness/zendesk/organization_fields.rb
|
418
418
|
- lib/support_readiness/zendesk/organization_memberships.rb
|
419
419
|
- lib/support_readiness/zendesk/organizations.rb
|
420
|
+
- lib/support_readiness/zendesk/requester_roles.rb
|
420
421
|
- lib/support_readiness/zendesk/roles.rb
|
422
|
+
- lib/support_readiness/zendesk/satisfaction_reasons.rb
|
421
423
|
- lib/support_readiness/zendesk/schedules.rb
|
422
424
|
- lib/support_readiness/zendesk/search.rb
|
423
425
|
- lib/support_readiness/zendesk/sla_policies.rb
|
426
|
+
- lib/support_readiness/zendesk/targets.rb
|
424
427
|
- lib/support_readiness/zendesk/theme_job_statuses.rb
|
425
428
|
- lib/support_readiness/zendesk/themes.rb
|
426
429
|
- lib/support_readiness/zendesk/ticket_field_options.rb
|
427
430
|
- lib/support_readiness/zendesk/ticket_fields.rb
|
428
431
|
- lib/support_readiness/zendesk/ticket_forms.rb
|
432
|
+
- lib/support_readiness/zendesk/ticket_user_types.rb
|
429
433
|
- lib/support_readiness/zendesk/tickets.rb
|
430
434
|
- lib/support_readiness/zendesk/trigger_categories.rb
|
431
435
|
- lib/support_readiness/zendesk/triggers.rb
|
432
436
|
- lib/support_readiness/zendesk/user_field_options.rb
|
433
437
|
- lib/support_readiness/zendesk/user_fields.rb
|
434
438
|
- lib/support_readiness/zendesk/users.rb
|
439
|
+
- lib/support_readiness/zendesk/via_types.rb
|
435
440
|
- lib/support_readiness/zendesk/views.rb
|
436
441
|
- lib/support_readiness/zendesk/webhooks.rb
|
437
442
|
homepage: https://gitlab.com/gitlab-support-readiness/gitlab_support_readiness_gem
|