qismo 0.8.8 → 0.10.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -12
- data/Gemfile.lock +1 -1
- data/lib/qismo/api.rb +176 -108
- data/lib/qismo/client.rb +10 -10
- data/lib/qismo/model.rb +9 -9
- data/lib/qismo/util.rb +1 -1
- data/lib/qismo/version.rb +1 -1
- data/lib/qismo.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1b4c93e50732069adea997b37a9377cff4444c8785971e1a194eac896b4e18d
|
4
|
+
data.tar.gz: 2afff6846d7d8e981dbc8242bee37bdfe32d37845029ba11614365c898bd5f89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a12795cfc80d51487a8c5242f11b5796e2292e6fc440f1fab7a05ad32bc616ffb5c129d43679f622397a19001cc56fa4fb229f0f20473c40dec4961593f4d4b
|
7
|
+
data.tar.gz: c6bb012dc5209dd55409c4cdcad760f4bc7a2686ee3265cd758bc9228be0ca0643a9d40cb54932815d9095d3722ee934a5d6ecaea1f9fbba2a5711bbb9f6de45
|
data/.rubocop.yml
CHANGED
@@ -5,15 +5,4 @@ AllCops:
|
|
5
5
|
TargetRubyVersion: 2.6
|
6
6
|
Exclude:
|
7
7
|
- "bin/**/*"
|
8
|
-
- "examples/*"
|
9
|
-
|
10
|
-
Style/StringLiterals:
|
11
|
-
Enabled: true
|
12
|
-
EnforcedStyle: double_quotes
|
13
|
-
|
14
|
-
Style/StringLiteralsInInterpolation:
|
15
|
-
Enabled: true
|
16
|
-
EnforcedStyle: double_quotes
|
17
|
-
|
18
|
-
Layout/LineLength:
|
19
|
-
Max: 120
|
8
|
+
- "examples/*"
|
data/Gemfile.lock
CHANGED
data/lib/qismo/api.rb
CHANGED
@@ -5,10 +5,10 @@ module Qismo
|
|
5
5
|
# List customer rooms
|
6
6
|
#
|
7
7
|
# @param opt [Hash]
|
8
|
-
# @return [Qismo::
|
9
|
-
def rooms(
|
8
|
+
# @return [Qismo::CollectionObject]
|
9
|
+
def rooms(opt = {})
|
10
10
|
body = post("/api/v2/customer_rooms", opt)
|
11
|
-
|
11
|
+
CollectionObject.new(
|
12
12
|
body.data.customer_rooms,
|
13
13
|
prev_page: body.meta&.cursor_before,
|
14
14
|
next_page: body.meta&.cursor_after,
|
@@ -20,7 +20,7 @@ module Qismo
|
|
20
20
|
# Get room by id
|
21
21
|
#
|
22
22
|
# @param room_id [Integer]
|
23
|
-
# @return [Qismo::
|
23
|
+
# @return [Qismo::SingleObject]
|
24
24
|
def room(room_id)
|
25
25
|
body = get("/api/v2/customer_rooms/#{room_id}")
|
26
26
|
if body.data.customer_room.nil?
|
@@ -33,18 +33,18 @@ module Qismo
|
|
33
33
|
# List tags inside room
|
34
34
|
#
|
35
35
|
# @param room_id [Integer]
|
36
|
-
# @return [Qismo::
|
36
|
+
# @return [Qismo::CollectionObject]
|
37
37
|
def room_tags(room_id)
|
38
|
-
get("/api/v2/room_tags/#{room_id}").data
|
38
|
+
CollectionObject.new(get("/api/v2/room_tags/#{room_id}").data)
|
39
39
|
end
|
40
40
|
|
41
41
|
# Add room tag
|
42
42
|
#
|
43
43
|
# @param room_id [Integer]
|
44
|
-
# @param
|
45
|
-
# @return [Qismo::
|
46
|
-
def add_room_tag(room_id,
|
47
|
-
post("/api/v2/room_tags/#{room_id}", tag:
|
44
|
+
# @param tag_name [String]
|
45
|
+
# @return [Qismo::SingleObject]
|
46
|
+
def add_room_tag(room_id, tag_name)
|
47
|
+
post("/api/v2/room_tags/#{room_id}", tag: tag_name).data
|
48
48
|
end
|
49
49
|
|
50
50
|
# Delete room tag
|
@@ -60,46 +60,53 @@ module Qismo
|
|
60
60
|
# List room additional info
|
61
61
|
#
|
62
62
|
# @param room_id [Integer]
|
63
|
-
# @return [Qismo::
|
63
|
+
# @return [Qismo::CollectionObject]
|
64
64
|
def room_additional_info(room_id)
|
65
|
-
|
66
|
-
|
65
|
+
CollectionObject.new(
|
66
|
+
get(
|
67
|
+
"/api/v1/qiscus/room/#{room_id}/user_info",
|
68
|
+
).data&.extras&.user_properties,
|
69
|
+
) || CollectionObject.new
|
67
70
|
end
|
68
71
|
|
69
72
|
# Set room additional info
|
70
73
|
#
|
71
74
|
# @note This will replace your current room additional info
|
72
75
|
# @param room_id [Integer]
|
73
|
-
# @param
|
74
|
-
# @return [Qismo::
|
75
|
-
def set_room_additional_info(room_id,
|
76
|
-
|
77
|
-
|
76
|
+
# @param additional_info [Array<Hash>]
|
77
|
+
# @return [Qismo::CollectionObject]
|
78
|
+
def set_room_additional_info(room_id, additional_info)
|
79
|
+
CollectionObject.new(
|
80
|
+
post(
|
81
|
+
"/api/v1/qiscus/room/#{room_id}/user_info",
|
82
|
+
user_properties: additional_info,
|
83
|
+
).data&.extras&.user_properties,
|
84
|
+
) || CollectionObject.new
|
78
85
|
end
|
79
86
|
|
80
87
|
# Update room additional info
|
81
88
|
#
|
82
89
|
# @param room_id [Integer]
|
83
|
-
# @param
|
84
|
-
# @return [Qismo::
|
85
|
-
def update_room_additional_info(room_id,
|
90
|
+
# @param additional_info [Array]
|
91
|
+
# @return [Qismo::CollectionObject]
|
92
|
+
def update_room_additional_info(room_id, additional_info)
|
86
93
|
old_additional_info = room_additional_info(room_id)
|
87
94
|
new_additional_info = (additional_info + old_additional_info).uniq { |h| h.values_at("key") }
|
88
|
-
set_room_additional_info(room_id,
|
95
|
+
set_room_additional_info(room_id, new_additional_info)
|
89
96
|
end
|
90
97
|
|
91
98
|
# List Whatsapp broadcast history inside room
|
92
99
|
#
|
93
100
|
# @param room_id [Integer]
|
94
|
-
# @param
|
95
|
-
# @return [Qismo::
|
96
|
-
def room_broadcast_history(room_id,
|
101
|
+
# @param opt [Hash]
|
102
|
+
# @return [Qismo::CollectionObject]
|
103
|
+
def room_broadcast_history(room_id, opt = {})
|
97
104
|
body = get("/api/v2/customer_rooms/#{room_id}/broadcast_history", opt)
|
98
105
|
|
99
106
|
next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
|
100
107
|
prev_page = body.meta.page > 1 ? (body.meta.page - 1) : nil
|
101
108
|
|
102
|
-
|
109
|
+
CollectionObject.new(
|
103
110
|
body.data.broadcast_logs,
|
104
111
|
next_page: next_page,
|
105
112
|
prev_page: prev_page,
|
@@ -112,9 +119,9 @@ module Qismo
|
|
112
119
|
#
|
113
120
|
# @param room_id [Integer]
|
114
121
|
# @param agent_id [Integer]
|
115
|
-
# @param
|
116
|
-
# @return [Qismo::
|
117
|
-
def assign_agent(room_id, agent_id,
|
122
|
+
# @param opt [Hash]
|
123
|
+
# @return [Qismo::SingleObject]
|
124
|
+
def assign_agent(room_id, agent_id, opt = {})
|
118
125
|
body = post("/api/v1/admin/service/assign_agent", opt.merge(room_id: room_id.to_s, agent_id: agent_id))
|
119
126
|
body.data.added_agent
|
120
127
|
end
|
@@ -133,9 +140,9 @@ module Qismo
|
|
133
140
|
#
|
134
141
|
# @param room_id [Integer]
|
135
142
|
# @param last_comment_id [Integer]
|
136
|
-
# @param
|
137
|
-
# @return [Qismo::
|
138
|
-
def resolve_room(room_id, last_comment_id,
|
143
|
+
# @param opt [Hash]
|
144
|
+
# @return [Qismo::SingleObject]
|
145
|
+
def resolve_room(room_id, last_comment_id, opt = {})
|
139
146
|
body = post("/api/v1/admin/service/mark_as_resolved",
|
140
147
|
opt.merge(room_id: room_id.to_s, last_comment_id: last_comment_id))
|
141
148
|
body.data.service
|
@@ -146,9 +153,9 @@ module Qismo
|
|
146
153
|
# Get agent that can be assigned to room
|
147
154
|
#
|
148
155
|
# @param source [String]
|
149
|
-
# @param
|
150
|
-
# @return [Qismo::
|
151
|
-
def allocate_agent(source,
|
156
|
+
# @param opt [Hash]
|
157
|
+
# @return [Qismo::SingleObject]
|
158
|
+
def allocate_agent(source, opt = {})
|
152
159
|
body = post("/api/v1/admin/service/allocate_agent", opt.merge(source: source))
|
153
160
|
body.data.agent
|
154
161
|
end
|
@@ -156,9 +163,9 @@ module Qismo
|
|
156
163
|
# Get agent that can be allocated to room and automatically assign them
|
157
164
|
#
|
158
165
|
# @param room_id [Integer]
|
159
|
-
# @param
|
160
|
-
# @return [Qismo::
|
161
|
-
def allocate_and_assign_agent(room_id,
|
166
|
+
# @param opt [Hash]
|
167
|
+
# @return [Qismo::SingleObject]
|
168
|
+
def allocate_and_assign_agent(room_id, opt = {})
|
162
169
|
body = post("/api/v1/admin/service/allocate_assign_agent", opt.merge(room_id: room_id))
|
163
170
|
body.data.agent
|
164
171
|
end
|
@@ -166,11 +173,11 @@ module Qismo
|
|
166
173
|
# List agents that are not in room and can be assigned to room
|
167
174
|
#
|
168
175
|
# @param room_id [Integer]
|
169
|
-
# @param
|
170
|
-
# @return [Qismo::
|
171
|
-
def other_agents(room_id,
|
176
|
+
# @param opt [Hash]
|
177
|
+
# @return [Qismo::CollectionObject]
|
178
|
+
def other_agents(room_id, opt = {})
|
172
179
|
body = get("/api/v2/admin/service/other_agents", opt.merge(room_id: room_id))
|
173
|
-
|
180
|
+
CollectionObject.new(
|
174
181
|
body.data.agents,
|
175
182
|
prev_page: body.meta&.cursor_before,
|
176
183
|
next_page: body.meta&.cursor_after,
|
@@ -182,11 +189,11 @@ module Qismo
|
|
182
189
|
# List available agents in room
|
183
190
|
#
|
184
191
|
# @param room_id [Integer]
|
185
|
-
# @param
|
186
|
-
# @return [Qismo::
|
187
|
-
def available_agents(room_id,
|
192
|
+
# @param opt [Hash]
|
193
|
+
# @return [Qismo::CollectionObject]
|
194
|
+
def available_agents(room_id, opt = {})
|
188
195
|
body = get("/api/v2/admin/service/available_agents", opt.merge(room_id: room_id))
|
189
|
-
|
196
|
+
CollectionObject.new(
|
190
197
|
body.data.agents,
|
191
198
|
prev_page: body.meta&.cursor_before,
|
192
199
|
next_page: body.meta&.cursor_after,
|
@@ -197,7 +204,7 @@ module Qismo
|
|
197
204
|
|
198
205
|
# Get new session webhook config
|
199
206
|
#
|
200
|
-
# @return [Qismo::
|
207
|
+
# @return [Qismo::SingleObject]
|
201
208
|
def new_session_webhook
|
202
209
|
get("/api/v2/app/config/new_session_webhook").data.configs
|
203
210
|
end
|
@@ -205,15 +212,15 @@ module Qismo
|
|
205
212
|
# Set new session webhook
|
206
213
|
#
|
207
214
|
# @param url [String]
|
208
|
-
# @param
|
209
|
-
# @return [Qismo::
|
210
|
-
def set_new_session_webhook(url,
|
215
|
+
# @param opt [Hash]
|
216
|
+
# @return [Qismo::SingleObject]
|
217
|
+
def set_new_session_webhook(url, opt = {})
|
211
218
|
post("/api/v2/app/config/new_session_webhook", opt.merge(url: url)).data.configs
|
212
219
|
end
|
213
220
|
|
214
221
|
# Get auth webhook config
|
215
222
|
#
|
216
|
-
# @return [Qismo::
|
223
|
+
# @return [Qismo::SingleObject]
|
217
224
|
def auth_webhook
|
218
225
|
get("/api/v2/app/config/auth_webhook").data.configs
|
219
226
|
end
|
@@ -221,15 +228,15 @@ module Qismo
|
|
221
228
|
# Set auth webhook
|
222
229
|
#
|
223
230
|
# @param url [String]
|
224
|
-
# @param
|
225
|
-
# @return [Qismo::
|
226
|
-
def set_auth_webhook(url,
|
231
|
+
# @param opt [Hash]
|
232
|
+
# @return [Qismo::SingleObject]
|
233
|
+
def set_auth_webhook(url, opt = {})
|
227
234
|
post("/api/v2/app/config/auth_webhook", opt.merge(url: url)).data.configs
|
228
235
|
end
|
229
236
|
|
230
237
|
# Get resolve webhook config
|
231
238
|
#
|
232
|
-
# @return [Qismo::
|
239
|
+
# @return [Qismo::SingleObject]
|
233
240
|
def resolve_webhook
|
234
241
|
get("/api/v1/app/webhook/mark_as_resolved").data
|
235
242
|
end
|
@@ -237,17 +244,17 @@ module Qismo
|
|
237
244
|
# Set resolve webhook
|
238
245
|
#
|
239
246
|
# @param url [String]
|
240
|
-
# @param
|
241
|
-
# @return [Qismo::
|
242
|
-
def set_resolve_webhook(url,
|
247
|
+
# @param opt [Hash]
|
248
|
+
# @return [Qismo::SingleObject]
|
249
|
+
def set_resolve_webhook(url, opt = {})
|
243
250
|
post("/api/v1/app/webhook/mark_as_resolved", opt.merge(url: url)).data
|
244
251
|
end
|
245
252
|
|
246
253
|
# List agents
|
247
254
|
#
|
248
|
-
# @param
|
249
|
-
# @return [Qismo::
|
250
|
-
def agents(
|
255
|
+
# @param opt [Hash]
|
256
|
+
# @return [Qismo::CollectionObject]
|
257
|
+
def agents(opt = {})
|
251
258
|
if opt[:page].nil? || opt[:page].empty?
|
252
259
|
opt[:page] = 1
|
253
260
|
end
|
@@ -258,7 +265,7 @@ module Qismo
|
|
258
265
|
next_page = opt[:page] < total_page ? (opt[:page] + 1) : nil
|
259
266
|
prev_page = opt[:page] > 1 ? (opt[:page] - 1) : nil
|
260
267
|
|
261
|
-
|
268
|
+
CollectionObject.new(
|
262
269
|
body.data.agents,
|
263
270
|
next_page: next_page,
|
264
271
|
prev_page: prev_page,
|
@@ -269,24 +276,24 @@ module Qismo
|
|
269
276
|
|
270
277
|
# List agents by id
|
271
278
|
#
|
272
|
-
# @param
|
273
|
-
# @return [Qismo::
|
274
|
-
def agents_by_ids(
|
275
|
-
get("/api/v1/admin/agents/get_by_ids",
|
279
|
+
# @param ids [Array<Integer>]
|
280
|
+
# @return [Qismo::CollectionObject]
|
281
|
+
def agents_by_ids(ids)
|
282
|
+
CollectionObject.new(get("/api/v1/admin/agents/get_by_ids", { "ids[]": ids }).data) || CollectionObject.new
|
276
283
|
end
|
277
284
|
|
278
285
|
# List agents by divisions
|
279
286
|
#
|
280
|
-
# @param
|
281
|
-
# @param
|
282
|
-
# @return [Qismo::
|
283
|
-
def agents_by_divisions(
|
287
|
+
# @param division_ids [Array<Integer>]
|
288
|
+
# @param opt [Hash]
|
289
|
+
# @return [Qismo::CollectionObject]
|
290
|
+
def agents_by_divisions(division_ids, opt = {})
|
284
291
|
body = get("/api/v2/admin/agents/by_division", opt.merge({ "division_ids[]": division_ids }))
|
285
292
|
|
286
293
|
next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
|
287
294
|
prev_page = body.meta.page > 1 ? (body.meta.page - 1) : nil
|
288
295
|
|
289
|
-
|
296
|
+
CollectionObject.new(
|
290
297
|
body.data,
|
291
298
|
next_page: next_page,
|
292
299
|
prev_page: prev_page,
|
@@ -298,34 +305,34 @@ module Qismo
|
|
298
305
|
# Get agent by id
|
299
306
|
#
|
300
307
|
# @param agent_id [Integer]
|
301
|
-
# @return [Qismo::
|
308
|
+
# @return [Qismo::SingleObject]
|
302
309
|
def agent(agent_id)
|
303
310
|
get("/api/v2/admin/agent/#{agent_id}").data.agent
|
304
311
|
end
|
305
312
|
|
306
313
|
# Get office hour config
|
307
314
|
#
|
308
|
-
# @return [Qismo::
|
315
|
+
# @return [Qismo::SingleObject]
|
309
316
|
def office_hours
|
310
317
|
data = get("/api/v1/admin/office_hours").data
|
311
318
|
data_hash = data.as_json
|
312
319
|
data_hash["is_in_office_hour"] = Util.in_office_hour?(data)
|
313
320
|
|
314
|
-
|
321
|
+
SingleObject.new(data_hash)
|
315
322
|
end
|
316
323
|
|
317
324
|
# List WA broadcast templates
|
318
325
|
#
|
319
|
-
# @param
|
320
|
-
# @return [Qismo::
|
321
|
-
def wa_broadcast_templates(
|
326
|
+
# @param opt [Hash]
|
327
|
+
# @return [Qismo::CollectionObject]
|
328
|
+
def wa_broadcast_templates(opt = {})
|
322
329
|
body = get("/api/v3/admin/hsm", opt)
|
323
330
|
|
324
331
|
meta = body.meta
|
325
332
|
next_page = meta.page < meta.total_page ? (meta.page + 1) : nil
|
326
333
|
prev_page = meta.page > 1 ? (meta.page - 1) : nil
|
327
334
|
|
328
|
-
|
335
|
+
CollectionObject.new(
|
329
336
|
body.data.hsm_templates,
|
330
337
|
next_page: next_page,
|
331
338
|
prev_page: prev_page,
|
@@ -336,9 +343,9 @@ module Qismo
|
|
336
343
|
|
337
344
|
# Send WA outbound message
|
338
345
|
#
|
339
|
-
# @param
|
340
|
-
# @return [Qismo::
|
341
|
-
def send_wa_outbound(
|
346
|
+
# @param opt [Hash]
|
347
|
+
# @return [Qismo::SingleObject]
|
348
|
+
def send_wa_outbound(opt = {})
|
342
349
|
post("/api/v3/admin/broadcast/client", opt).data
|
343
350
|
end
|
344
351
|
|
@@ -346,7 +353,7 @@ module Qismo
|
|
346
353
|
#
|
347
354
|
# @param file [HTTP::FormData]
|
348
355
|
# @param template_detail_id [Integer]
|
349
|
-
# @return [Qismo::
|
356
|
+
# @return [Qismo::SingleObject]
|
350
357
|
def upload_wa_broadcast_csv(file, template_detail_id)
|
351
358
|
raise ArgumentError, "Invalid file" unless file.is_a?(HTTP::FormData::File)
|
352
359
|
|
@@ -355,23 +362,23 @@ module Qismo
|
|
355
362
|
|
356
363
|
# Send wa broadcast
|
357
364
|
#
|
358
|
-
# @param
|
359
|
-
# @return [Qismo::
|
360
|
-
def send_wa_broadcast(
|
365
|
+
# @param opt [Hash]
|
366
|
+
# @return [Qismo::SingleObject]
|
367
|
+
def send_wa_broadcast(opt = {})
|
361
368
|
post("/api/v3/admin/broadcast/send_broadcast", opt).data.broadcast_job
|
362
369
|
end
|
363
370
|
|
364
371
|
# List wa broadcast jobs
|
365
372
|
#
|
366
|
-
# @param
|
367
|
-
# @return [Qismo::
|
368
|
-
def wa_broadcast_jobs(
|
373
|
+
# @param opt [Hash]
|
374
|
+
# @return [Qismo::CollectionObject]
|
375
|
+
def wa_broadcast_jobs(opt = {})
|
369
376
|
body = get("/api/v2/admin/broadcast_jobs", opt)
|
370
377
|
|
371
378
|
prev_page = body.meta.page > 1 ? (body.meta.meta - 1) : nil
|
372
379
|
next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
|
373
380
|
|
374
|
-
|
381
|
+
CollectionObject.new(
|
375
382
|
body.data.broadcast_jobs,
|
376
383
|
next_page: next_page,
|
377
384
|
prev_page: prev_page,
|
@@ -383,7 +390,7 @@ module Qismo
|
|
383
390
|
# Get wa broadcast job by id
|
384
391
|
#
|
385
392
|
# @param broadcast_job_id [Integer]
|
386
|
-
# @return [Qismo::
|
393
|
+
# @return [Qismo::SingleObject]
|
387
394
|
def wa_broadcast_job(broadcast_job_id)
|
388
395
|
get("/api/v2/admin/broadcast_jobs/#{broadcast_job_id}").data.broadcast_job
|
389
396
|
end
|
@@ -391,15 +398,15 @@ module Qismo
|
|
391
398
|
# List wa broadcast logs
|
392
399
|
#
|
393
400
|
# @param broadcast_job_id [Integer]
|
394
|
-
# @param
|
395
|
-
# @return [Qismo::
|
396
|
-
def wa_broadcast_logs(broadcast_job_id,
|
401
|
+
# @param opt [Hash]
|
402
|
+
# @return [Qismo::CollectionObject]
|
403
|
+
def wa_broadcast_logs(broadcast_job_id, opt = {})
|
397
404
|
body = get("/api/v2/admin/broadcast_logs/#{broadcast_job_id}", opt)
|
398
405
|
|
399
406
|
prev_page = body.meta.page > 1 ? (body.meta.meta - 1) : nil
|
400
407
|
next_page = body.meta.page < body.meta.total_page ? (body.meta.page + 1) : nil
|
401
408
|
|
402
|
-
|
409
|
+
CollectionObject.new(
|
403
410
|
body.data.broadcast_logs,
|
404
411
|
next_page: next_page,
|
405
412
|
prev_page: prev_page,
|
@@ -410,9 +417,9 @@ module Qismo
|
|
410
417
|
|
411
418
|
# Send message as bot
|
412
419
|
#
|
413
|
-
# @param
|
420
|
+
# @param opt [Hash]
|
414
421
|
# @return [TrueClass]
|
415
|
-
def send_bot_message(
|
422
|
+
def send_bot_message(opt = {})
|
416
423
|
post("#{app_id}/bot", opt)
|
417
424
|
true
|
418
425
|
end
|
@@ -421,16 +428,16 @@ module Qismo
|
|
421
428
|
#
|
422
429
|
# @param room_id [Integer]
|
423
430
|
# @return [TrueClass]
|
424
|
-
def
|
431
|
+
def enable_bot_in_room(room_id)
|
425
432
|
post("/bot/#{room_id}/activate", is_active: true)
|
426
433
|
true
|
427
434
|
end
|
428
435
|
|
429
|
-
# Disable
|
436
|
+
# Disable chatbot in room
|
430
437
|
#
|
431
438
|
# @param room_id [Integer]
|
432
439
|
# @return [TrueClass]
|
433
|
-
def
|
440
|
+
def disable_bot_in_room(room_id)
|
434
441
|
post("/bot/#{room_id}/activate", is_active: false)
|
435
442
|
true
|
436
443
|
end
|
@@ -447,10 +454,10 @@ module Qismo
|
|
447
454
|
# Handover room from chatbot to human agent in specific divisions
|
448
455
|
#
|
449
456
|
# @param room_id [Integer]
|
450
|
-
# @param
|
451
|
-
# @param
|
457
|
+
# @param roles [Array<Integer>]
|
458
|
+
# @param opt [Hash]
|
452
459
|
# @return [TrueClass]
|
453
|
-
def handover_room_from_bot_to_division(room_id,
|
460
|
+
def handover_room_from_bot_to_division(room_id, roles, opt = {})
|
454
461
|
post("/#{app_id}/bot/#{room_id}/hand_over_to_role", opt.merge(roles: roles))
|
455
462
|
true
|
456
463
|
end
|
@@ -459,9 +466,9 @@ module Qismo
|
|
459
466
|
#
|
460
467
|
# @param user_id [String]
|
461
468
|
# @param name [String]
|
462
|
-
# @param
|
463
|
-
# @return [Qismo::
|
464
|
-
def initiate_widget_chat(user_id, name,
|
469
|
+
# @param opt [Hash]
|
470
|
+
# @return [Qismo::SingleObject]
|
471
|
+
def initiate_widget_chat(user_id, name, opt = {})
|
465
472
|
opt = opt.merge(app_id: app_id, user_id: user_id, name: name)
|
466
473
|
post("/api/v2/qiscus/initiate_chat", opt).data.customer_room
|
467
474
|
end
|
@@ -471,11 +478,72 @@ module Qismo
|
|
471
478
|
# @param identifier_key [String]
|
472
479
|
# @param user_id [String]
|
473
480
|
# @param name [String]
|
474
|
-
# @param
|
475
|
-
# @return [Qismo::
|
476
|
-
def send_message_to_custom_channel(identifier_key, user_id, name,
|
481
|
+
# @param opt [Hash]
|
482
|
+
# @return [Qismo::SingleObject]
|
483
|
+
def send_message_to_custom_channel(identifier_key, user_id, name, opt = {})
|
477
484
|
post("/#{app_id}/api/v2/custom_channel/send",
|
478
485
|
opt.merge(identifier_key: identifier_key, user_id: user_id, name: name)).data
|
479
486
|
end
|
487
|
+
|
488
|
+
def channels
|
489
|
+
get("/api/v2/channels").data
|
490
|
+
end
|
491
|
+
|
492
|
+
# Create customchannel
|
493
|
+
#
|
494
|
+
# @param identifier_key [String]
|
495
|
+
# @param name [String]
|
496
|
+
# @param webhook_url [String]
|
497
|
+
# @param opt [Hash]
|
498
|
+
# @return [Qismo::SingleObject]
|
499
|
+
def create_custom_channel(identifier_key, name, webhook_url, opt = {})
|
500
|
+
opt = opt.merge(
|
501
|
+
identifier_key: identifier_key,
|
502
|
+
name: name,
|
503
|
+
webhook_url: webhook_url,
|
504
|
+
)
|
505
|
+
|
506
|
+
opt[:is_active] = true unless opt[:is_active].nil?
|
507
|
+
|
508
|
+
post("/api/v1/custom_channel/connect", opt.merge).data
|
509
|
+
end
|
510
|
+
|
511
|
+
# Update custom channel
|
512
|
+
#
|
513
|
+
# @param id [Integer]
|
514
|
+
# @param opt [Hash]
|
515
|
+
# @return [Qismo::SingleObject]
|
516
|
+
def update_custom_channel(id, opt = {})
|
517
|
+
channel = channels.custom_channels.find { |cc| cc.id == id }
|
518
|
+
if channel.nil?
|
519
|
+
raise Qismo::NotFoundError.new("Channel not found", status_code: 404, response_body: nil)
|
520
|
+
end
|
521
|
+
|
522
|
+
channel_hash = JSON.parse(channel.to_json, symbolize_names: true)
|
523
|
+
new_channel_config = channel_hash.merge(opt)
|
524
|
+
|
525
|
+
post("/api/v1/custom_channel/connect/update", new_channel_config).data
|
526
|
+
end
|
527
|
+
|
528
|
+
# Activate custom channel
|
529
|
+
#
|
530
|
+
# @param id [Integer]
|
531
|
+
# @return [Qismo::SingleObject]
|
532
|
+
def activate_custom_channel(id)
|
533
|
+
update_custom_channel(id, is_active: true)
|
534
|
+
end
|
535
|
+
|
536
|
+
# Deactivate custom channel
|
537
|
+
#
|
538
|
+
# @param id [Integer]
|
539
|
+
# @return [Qismo::SingleObject]
|
540
|
+
def deactivate_custom_channel(id)
|
541
|
+
update_custom_channel(id, is_active: false)
|
542
|
+
end
|
543
|
+
|
544
|
+
def delete_custom_channel(id)
|
545
|
+
post("/api/v2/custom_channel/connect/#{id}/delete")
|
546
|
+
true
|
547
|
+
end
|
480
548
|
end
|
481
549
|
end
|
data/lib/qismo/client.rb
CHANGED
@@ -28,8 +28,8 @@ module Qismo
|
|
28
28
|
|
29
29
|
# Initialize client
|
30
30
|
#
|
31
|
-
# @param
|
32
|
-
def initialize(
|
31
|
+
# @param opt [Hash]
|
32
|
+
def initialize(opt = {})
|
33
33
|
DEFAULT_OPTIONS.merge(opt).each do |key, value|
|
34
34
|
instance_variable_set("@#{key}", value)
|
35
35
|
end
|
@@ -39,7 +39,7 @@ module Qismo
|
|
39
39
|
#
|
40
40
|
# @param path [String]
|
41
41
|
# @param body [Hash]
|
42
|
-
# @return [Qismo::
|
42
|
+
# @return [Qismo::SingleObject]
|
43
43
|
def post(path, body = {})
|
44
44
|
request(:post, path, json: body)
|
45
45
|
end
|
@@ -48,7 +48,7 @@ module Qismo
|
|
48
48
|
#
|
49
49
|
# @param path [String]
|
50
50
|
# @param body [Hash]
|
51
|
-
# @return [Qismo::
|
51
|
+
# @return [Qismo::SingleObject]
|
52
52
|
def post_upload(path, body = {})
|
53
53
|
request(:post, form: body)
|
54
54
|
end
|
@@ -57,7 +57,7 @@ module Qismo
|
|
57
57
|
#
|
58
58
|
# @param path [String]
|
59
59
|
# @param params [Hash]
|
60
|
-
# @return [Qismo::
|
60
|
+
# @return [Qismo::SingleObject]
|
61
61
|
def get(path, **params)
|
62
62
|
request(:get, path, params: params)
|
63
63
|
end
|
@@ -71,11 +71,11 @@ module Qismo
|
|
71
71
|
# @param method [Symbol, String]
|
72
72
|
# @param path [String]
|
73
73
|
# @param body [Hash]
|
74
|
-
# @return [Qismo::
|
75
|
-
def request(method, path,
|
74
|
+
# @return [Qismo::SingleObject]
|
75
|
+
def request(method, path, opt = {})
|
76
76
|
res = connection.request(method, @url + path, opt.compact)
|
77
77
|
if res.status.success?
|
78
|
-
return
|
78
|
+
return SingleObject.new(JSON.parse(res.to_s))
|
79
79
|
end
|
80
80
|
|
81
81
|
if res.status.server_error?
|
@@ -83,10 +83,10 @@ module Qismo
|
|
83
83
|
end
|
84
84
|
|
85
85
|
if res.status.client_error?
|
86
|
-
body =
|
86
|
+
body = SingleObject.new(JSON.parse(res.to_s))
|
87
87
|
|
88
88
|
error = body.errors
|
89
|
-
error = error.message if error.is_a?(
|
89
|
+
error = error.message if error.is_a?(SingleObject)
|
90
90
|
|
91
91
|
error_klass_map = {
|
92
92
|
400 => BadRequestError,
|
data/lib/qismo/model.rb
CHANGED
@@ -3,14 +3,14 @@
|
|
3
3
|
module Qismo
|
4
4
|
# Class to handle http response body
|
5
5
|
#
|
6
|
-
class
|
6
|
+
class SingleObject
|
7
7
|
# Initiate data object
|
8
8
|
#
|
9
|
-
# @param
|
10
|
-
def initialize(
|
9
|
+
# @param opt [Hash]
|
10
|
+
def initialize(opt = {})
|
11
11
|
opt.each do |key, value|
|
12
12
|
value = if value.is_a?(Array)
|
13
|
-
handle_array(value)
|
13
|
+
CollectionObject.new(handle_array(value))
|
14
14
|
elsif value.is_a?(Hash)
|
15
15
|
self.class.new(value)
|
16
16
|
elsif value.is_a?(TrueClass) || value.is_a?(FalseClass)
|
@@ -54,15 +54,15 @@ module Qismo
|
|
54
54
|
|
55
55
|
# Class to handle response body that contain pagination
|
56
56
|
#
|
57
|
-
class
|
57
|
+
class CollectionObject < Array
|
58
58
|
# Initiate collection
|
59
59
|
#
|
60
|
-
# @param data [Qismo::
|
60
|
+
# @param data [Qismo::SingleObject]
|
61
61
|
# @param prev_page [String, Integer]
|
62
62
|
# @param next_page [String, Integer]
|
63
63
|
# @param prev_func [Proc, NilClass]
|
64
64
|
# @param next_func [Proc, NilClass]
|
65
|
-
def initialize(data, prev_page: nil, next_page: nil, prev_func: -> { nil }, next_func: -> { nil })
|
65
|
+
def initialize(data = [], prev_page: nil, next_page: nil, prev_func: -> { nil }, next_func: -> { nil })
|
66
66
|
super(data)
|
67
67
|
|
68
68
|
@prev_page = prev_page
|
@@ -87,14 +87,14 @@ module Qismo
|
|
87
87
|
|
88
88
|
# Call api request for next page
|
89
89
|
#
|
90
|
-
# @return [Qismo::
|
90
|
+
# @return [Qismo::SingleObject, Qismo::CollectionObject]
|
91
91
|
def next_page
|
92
92
|
@next_func.call if has_next_page?
|
93
93
|
end
|
94
94
|
|
95
95
|
# Call api request for previous page
|
96
96
|
#
|
97
|
-
# @return [Qismo::
|
97
|
+
# @return [Qismo::SingleObject, Qismo::CollectionObject]
|
98
98
|
def prev_page
|
99
99
|
@prev_func.call if has_prev_page?
|
100
100
|
end
|
data/lib/qismo/util.rb
CHANGED
data/lib/qismo/version.rb
CHANGED
data/lib/qismo.rb
CHANGED