qismo 0.14.0 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/qismo/api.rb +136 -125
- data/lib/qismo/client.rb +5 -4
- data/lib/qismo/collection.rb +2 -0
- data/lib/qismo/object.rb +2 -0
- data/lib/qismo/objectified_hash.rb +5 -0
- data/lib/qismo/objects/agent_service.rb +4 -0
- data/lib/qismo/objects/broadcast_job.rb +4 -0
- data/lib/qismo/objects/broadcast_log.rb +2 -0
- data/lib/qismo/objects/custom_channel.rb +35 -0
- data/lib/qismo/objects/custom_channel_message_response.rb +2 -0
- data/lib/qismo/objects/customer_room.rb +2 -0
- data/lib/qismo/objects/fb_channel.rb +31 -0
- data/lib/qismo/objects/hsm_template.rb +6 -0
- data/lib/qismo/objects/ig_channel.rb +43 -0
- data/lib/qismo/objects/line_channel.rb +27 -0
- data/lib/qismo/objects/list_channels_response.rb +39 -0
- data/lib/qismo/objects/office_hour.rb +4 -0
- data/lib/qismo/objects/qiscus_channel.rb +27 -0
- data/lib/qismo/objects/room_additional_info.rb +2 -0
- data/lib/qismo/objects/tag.rb +4 -2
- data/lib/qismo/objects/telegram_channel.rb +31 -0
- data/lib/qismo/objects/user.rb +6 -0
- data/lib/qismo/objects/wa_channel.rb +111 -0
- data/lib/qismo/objects/wa_credit_info.rb +6 -0
- data/lib/qismo/objects/waca_channel.rb +55 -0
- data/lib/qismo/objects/webhook.rb +2 -0
- data/lib/qismo/types.rb +9 -0
- data/lib/qismo/version.rb +1 -1
- data/lib/qismo/webhook_requests/on_agent_allocation_needed.rb +6 -0
- data/lib/qismo/webhook_requests/on_custom_button_clicked.rb +10 -2
- data/lib/qismo/webhook_requests/on_custom_channel_message_sent.rb +12 -0
- data/lib/qismo/webhook_requests/on_message_for_bot_sent.rb +12 -0
- data/lib/qismo/webhook_requests/on_new_session_initiated.rb +20 -0
- data/lib/qismo/webhook_requests/on_room_resolved.rb +10 -0
- data/lib/qismo.rb +11 -0
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e06efa610df2f136d4775f01ba27d50b6f65576d7cc510024a903eff84547a8b
|
4
|
+
data.tar.gz: 4b3c9685a3c8600a7ea21577648f438fcfa7f76dbd8cf9e6b21a31148f29fd09
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a374d557e090a13205779073e45bf997922d7f7f874a240f11a2eb74aa7cc39a847c3220e4053b032ec2b97aa6329e522238fa444b1e722d63b6ab5e77283ed6
|
7
|
+
data.tar.gz: '07249fcc6d6d69b4693ac7e20ca6f2aa9909bb9fb5049a3d15b171fbaf2a6cf5b267867b75bf199031ef9ff1c872b7d22bb55c26c1e5ac91247e07ac293c21dc'
|
data/lib/qismo/api.rb
CHANGED
@@ -1,39 +1,49 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Qismo
|
4
|
+
# API wrappers
|
5
|
+
#
|
4
6
|
module Api
|
5
7
|
# @!parse include Qismo::Client
|
6
8
|
|
7
9
|
# List customer rooms
|
8
10
|
#
|
9
|
-
# @see https://
|
10
|
-
# @param
|
11
|
-
#
|
12
|
-
# @
|
13
|
-
# Filter by
|
14
|
-
# @
|
15
|
-
# Filter by
|
16
|
-
# @
|
17
|
-
# Filter by
|
18
|
-
# @
|
19
|
-
#
|
20
|
-
# @
|
21
|
-
# Filter by
|
22
|
-
# @
|
23
|
-
#
|
24
|
-
# @
|
25
|
-
# Order data by timestamp.
|
26
|
-
# @
|
11
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#704a0c40-56b2-4a94-9c1d-e1529923cbb6
|
12
|
+
# @param channels [Array<Hash>]
|
13
|
+
# Filter rooms by channels. Example: [{ source: "wa", channel_id: 716171 }]
|
14
|
+
# @param status [String]
|
15
|
+
# Filter rooms by status. Valid values are "resolved", "unresolved", "expired",or "almost_expired"
|
16
|
+
# @param serve_status [String]
|
17
|
+
# Filter rooms by serve status. Valid values are "served" or "unserved". By default, we will retrieve all serve_status
|
18
|
+
# @param name [String]
|
19
|
+
# Filter rooms by customer nam
|
20
|
+
# @param limit [Integer]
|
21
|
+
# Limit the number of rooms returned in one page. By default, it will return 50 rooms data
|
22
|
+
# @param tag_ids [Array<Integer>]
|
23
|
+
# Filter rooms by its tag
|
24
|
+
# @param agent_ids [Array<Integer>]
|
25
|
+
# Filter rooms by the agent who handled the rooms
|
26
|
+
# @param order [String]
|
27
|
+
# Order returned data by the timestamp. By default, we will return the newest rooms first
|
28
|
+
# @param cursor_after [String]
|
27
29
|
# Next page cursor. If you are on last page, the cursor returned will be nil
|
28
|
-
# @
|
30
|
+
# @param cursor_before [String]
|
29
31
|
# Previous page cursor. If you are on first page, the cursor returned will be nil
|
30
|
-
# @option options [Array<Integer>] :tag_ids
|
31
|
-
# Filter by tags
|
32
|
-
# @option options [Array<Integer>] :user_ids
|
33
|
-
# Filter by agent who handled or assigned to the room
|
34
32
|
# @return [Qismo::Collection<Qismo::CustomerRoom>]
|
35
|
-
def rooms(
|
36
|
-
body = post("/api/v2/customer_rooms",
|
33
|
+
def rooms(channels: nil, status: nil, serve_status: nil, name: nil, limit: 50, tag_ids: nil, agent_ids: nil, order: "desc", cursor_after: nil, cursor_before: nil)
|
34
|
+
body = post("/api/v2/customer_rooms", json: {
|
35
|
+
channels: channels,
|
36
|
+
status: status,
|
37
|
+
serve_status: serve_status,
|
38
|
+
name: name,
|
39
|
+
limit: limit,
|
40
|
+
tag_ids: tag_ids,
|
41
|
+
user_ids: agent_ids,
|
42
|
+
order: order,
|
43
|
+
cursor_after: cursor_after,
|
44
|
+
cursor_before: cursor_before
|
45
|
+
}.compact)
|
46
|
+
|
37
47
|
Collection.new(
|
38
48
|
Qismo::Objects::CustomerRoom.from_array(body.data.customer_rooms),
|
39
49
|
next_page: body.meta.cursor_after,
|
@@ -42,10 +52,10 @@ module Qismo
|
|
42
52
|
end
|
43
53
|
|
44
54
|
# Get room by id
|
45
|
-
# @see https://
|
55
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#8c803377-eea2-4879-9d66-8906d9f41275
|
46
56
|
# @param room_id [Integer]
|
47
|
-
# @return [Qismo::
|
48
|
-
def room(room_id)
|
57
|
+
# @return [Qismo::Objects::CustomerRoom]
|
58
|
+
def room(room_id:)
|
49
59
|
body = get("/api/v2/customer_rooms/#{room_id}")
|
50
60
|
if body.data.customer_room.nil?
|
51
61
|
raise Qismo::NotFoundError.new("Room not found", status_code: 404, response_body: body.to_json)
|
@@ -56,10 +66,10 @@ module Qismo
|
|
56
66
|
|
57
67
|
# List tags inside room
|
58
68
|
#
|
59
|
-
# @see https://
|
69
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#d40b54a7-2b37-4afc-b474-62593001274e
|
60
70
|
# @param room_id [Integer]
|
61
71
|
# @return [Qismo::Collection<Qismo::Objects::Tag>]
|
62
|
-
def room_tags(room_id)
|
72
|
+
def room_tags(room_id:)
|
63
73
|
Qismo::Collection.new(
|
64
74
|
Qismo::Objects::Tag.from_array(
|
65
75
|
get("/api/v2/room_tags/#{room_id}").data
|
@@ -69,33 +79,33 @@ module Qismo
|
|
69
79
|
|
70
80
|
# Add room tag
|
71
81
|
#
|
72
|
-
# @see https://
|
82
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#9737d580-d156-4213-85a8-95fb3f1ad964
|
73
83
|
# @param room_id [Integer]
|
74
84
|
# @param tag_name [String]
|
75
85
|
# @return [Qismo::Objects::Tag]
|
76
|
-
def add_room_tag(room_id
|
86
|
+
def add_room_tag(room_id:, tag_name:)
|
77
87
|
Qismo::Objects::Tag.new(
|
78
|
-
post("/api/v2/room_tags/#{room_id}",
|
88
|
+
post("/api/v2/room_tags/#{room_id}", tag_name: tag).data
|
79
89
|
)
|
80
90
|
end
|
81
91
|
|
82
92
|
# Delete room tag
|
83
93
|
#
|
84
|
-
# @see https://
|
94
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#f4d173a1-3fb1-4151-87fd-106982bcc4a2
|
85
95
|
# @param room_id [Integer]
|
86
96
|
# @param tag_id [Integer]
|
87
97
|
# @return [TrueClass]
|
88
|
-
def delete_room_tag(room_id
|
98
|
+
def delete_room_tag(room_id:, tag_id:)
|
89
99
|
delete("/api/v2/room_tags/#{room_id}/#{tag_id}")
|
90
100
|
true
|
91
101
|
end
|
92
102
|
|
93
103
|
# List room additional info
|
94
104
|
#
|
95
|
-
# @see https://
|
105
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#88c2287b-21af-4afd-b495-aaaa2818c381
|
96
106
|
# @param room_id [Integer]
|
97
107
|
# @return [Array<Qismo::Objects::RoomAdditionalInfo>]
|
98
|
-
def room_additional_info(room_id)
|
108
|
+
def room_additional_info(room_id:)
|
99
109
|
Qismo::Objects::RoomAdditionalInfo.from_array(
|
100
110
|
get("/api/v1/qiscus/room/#{room_id}/user_info").data.extras.user_properties
|
101
111
|
)
|
@@ -107,17 +117,17 @@ module Qismo
|
|
107
117
|
|
108
118
|
# Set room additional info
|
109
119
|
#
|
110
|
-
# @see https://
|
120
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#2b968e9e-2a76-4569-8763-f883e11dc5a7
|
111
121
|
# @note This will replace your current room additional info
|
112
122
|
# @param room_id [Integer]
|
113
|
-
# @param
|
123
|
+
# @param info [Array<Hash>]
|
114
124
|
# Key value pair of additional info. Ex: [{ key: "Ticket Link", value: "https://ticket.com" }]
|
115
125
|
# @return [Array<Qismo::Objects::RoomAdditionalInfo>]
|
116
|
-
def set_room_additional_info(room_id
|
126
|
+
def set_room_additional_info(room_id:, info:)
|
117
127
|
Qismo::Objects::RoomAdditionalInfo.from_array(
|
118
128
|
post(
|
119
129
|
"/api/v1/qiscus/room/#{room_id}/user_info",
|
120
|
-
user_properties:
|
130
|
+
user_properties: info
|
121
131
|
).data.extras.user_properties
|
122
132
|
)
|
123
133
|
end
|
@@ -129,31 +139,24 @@ module Qismo
|
|
129
139
|
# Update room additional info
|
130
140
|
#
|
131
141
|
# @param room_id [Integer]
|
132
|
-
# @param
|
142
|
+
# @param info [Array<Hash>]
|
133
143
|
# Key value pair of additional info. Ex: [{ key: "Ticket Link", value: "https://ticket.com" }]
|
134
144
|
# @return [Array<Qismo::Objects::RoomAdditionalInfo>]
|
135
|
-
def update_room_additional_info(room_id
|
136
|
-
|
137
|
-
|
138
|
-
set_room_additional_info(room_id,
|
145
|
+
def update_room_additional_info(room_id:, info:)
|
146
|
+
old_info = room_additional_info(room_id).as_json
|
147
|
+
new_info = (info.as_json + old_info).uniq { |h| h.values_at("key") }
|
148
|
+
set_room_additional_info(room_id: room_id, info: new_info)
|
139
149
|
end
|
140
150
|
|
141
151
|
alias_method :update_room_info, :update_room_additional_info
|
142
152
|
|
143
|
-
# List Whatsapp broadcast history inside room
|
144
|
-
#
|
145
|
-
# @see https://s.id/list-room-broadcast-history
|
146
|
-
# @param room_id [Integer]
|
147
|
-
# @param options [Hash]
|
148
|
-
# @return [Qismo::CollectionObject]
|
149
|
-
|
150
153
|
# List broadcast history inside room
|
151
154
|
#
|
152
155
|
# @param room_id [Integer]
|
153
156
|
# @param page [Integer]
|
154
157
|
# @param limit [Integer]
|
155
158
|
# @return [Qismo::Collection<Qismo::Objects::BroadcastLog>]
|
156
|
-
def room_broadcast_history(room_id
|
159
|
+
def room_broadcast_history(room_id:, page: 1, limit: 25)
|
157
160
|
body = get("/api/v2/customer_rooms/#{room_id}/broadcast_history", {
|
158
161
|
page: page,
|
159
162
|
limit: limit
|
@@ -180,7 +183,7 @@ module Qismo
|
|
180
183
|
# param :relpace_agents to true, this param will be forced
|
181
184
|
# to nil, which no be sent on http request
|
182
185
|
# @return [Qismo::Objects::User]
|
183
|
-
def assign_agent(room_id
|
186
|
+
def assign_agent(room_id:, agent_id:, replace_agents: false, max_agent: nil)
|
184
187
|
Qismo::Objects::User.new(
|
185
188
|
post("/api/v1/admin/service/assign_agent", {
|
186
189
|
room_id: room_id.to_s,
|
@@ -193,11 +196,11 @@ module Qismo
|
|
193
196
|
|
194
197
|
# Remove agent from room
|
195
198
|
#
|
196
|
-
# @see https://
|
199
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#7a67e214-28e5-47c1-b4ee-7246977dfcff
|
197
200
|
# @param room_id [Integer]
|
198
201
|
# @param agent_id [Integer]
|
199
202
|
# @return [TrueClass]
|
200
|
-
def remove_agent(room_id
|
203
|
+
def remove_agent(room_id:, agent_id:)
|
201
204
|
post(
|
202
205
|
"/api/v1/admin/service/remove_agent", {
|
203
206
|
room_id: room_id.to_s,
|
@@ -210,7 +213,7 @@ module Qismo
|
|
210
213
|
|
211
214
|
# Resolve room
|
212
215
|
#
|
213
|
-
# @see https://
|
216
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#a1ff75d0-b637-4b79-a259-fb9d084d1659
|
214
217
|
# @param room_id [Integer]
|
215
218
|
# @param last_comment_id [Integer]
|
216
219
|
# Id of last message in the room. If you dont specify this param,
|
@@ -223,8 +226,8 @@ module Qismo
|
|
223
226
|
# you are using valid email as customer identifier
|
224
227
|
# @param extras [Hash]
|
225
228
|
# Room extras in valid hash
|
226
|
-
# @return [Qismo::
|
227
|
-
def resolve_room(room_id
|
229
|
+
# @return [Qismo::Objects::AgentService]
|
230
|
+
def resolve_room(room_id:, last_comment_id: Time.now.to_i, notes: nil, send_email: false, extras: nil)
|
228
231
|
Qismo::Objects::AgentService.new(
|
229
232
|
post("/api/v1/admin/service/mark_as_resolved", {
|
230
233
|
room_id: room_id.to_s,
|
@@ -240,7 +243,7 @@ module Qismo
|
|
240
243
|
|
241
244
|
# Get agent that can be assigned to room
|
242
245
|
#
|
243
|
-
# @see https://
|
246
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#a62432c6-1aba-4e2b-be9a-2f7151db9119
|
244
247
|
# @param source [String]
|
245
248
|
# Channel source. Available sources are `wa`, `line`, `telegram`,
|
246
249
|
# `qiscus`, `ig`, or `fb`. For custom channel, use that channel's
|
@@ -251,7 +254,7 @@ module Qismo
|
|
251
254
|
# Ignore agent availability. If you set this param to true, agent
|
252
255
|
# that are unavailable will be considered as allocatable too
|
253
256
|
# @return [Qismo::Objects::User]
|
254
|
-
def allocate_agent(source
|
257
|
+
def allocate_agent(source:, channel_id:, ignore_availability: false)
|
255
258
|
Qismo::Objects::User.new(
|
256
259
|
post("/api/v1/admin/service/allocate_agent", {
|
257
260
|
source: source,
|
@@ -263,13 +266,13 @@ module Qismo
|
|
263
266
|
|
264
267
|
# Get agent that can be allocated to room and automatically assign them
|
265
268
|
#
|
266
|
-
# @see https://
|
269
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#f88465ed-379f-4202-a8a4-e0c3bebcfeab
|
267
270
|
# @param room_id [Integer]
|
268
271
|
# @param ignore_availability [TrueClass,FalseClass]
|
269
272
|
# Ignore agent availability. If you set this param to true, agent
|
270
273
|
# that are unavailable will be considered as allocatable too
|
271
|
-
# @return [Qismo::
|
272
|
-
def allocate_and_assign_agent(room_id
|
274
|
+
# @return [Qismo::Objects::User]
|
275
|
+
def allocate_and_assign_agent(room_id:, ignore_availability: false)
|
273
276
|
Qismo::Objects::User.new(
|
274
277
|
post("/api/v1/admin/service/allocate_assign_agent", {
|
275
278
|
room_id: room_id.to_s,
|
@@ -280,14 +283,14 @@ module Qismo
|
|
280
283
|
|
281
284
|
# List agents that are not in room and can be assigned to room
|
282
285
|
#
|
283
|
-
# @see https://
|
286
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#10d75d0c-ebd2-44c6-ab19-a0bafe7ad982
|
284
287
|
# @param room_id [Integer]
|
285
288
|
# @param search [String]
|
286
289
|
# @param limit [Integer]
|
287
290
|
# @param cursor_after [String]
|
288
291
|
# @param cursor_before [String]
|
289
292
|
# @return [Qismo::Collection<Qismo::Objects::User>]
|
290
|
-
def other_agents(room_id
|
293
|
+
def other_agents(room_id:, search: nil, limit: 15, cursor_after: nil, cursor_before: nil)
|
291
294
|
body = get("/api/v2/admin/service/other_agents", {
|
292
295
|
room_id: room_id.to_s,
|
293
296
|
search: search,
|
@@ -305,7 +308,7 @@ module Qismo
|
|
305
308
|
|
306
309
|
# List available agents in room
|
307
310
|
#
|
308
|
-
# @see https://
|
311
|
+
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#0d5db283-c7f8-42e0-ba02-6cbcbc1d2bb3
|
309
312
|
# @param room_id [Integer]
|
310
313
|
# @param available_in_room [TrueClass,FalseClass]
|
311
314
|
# @param search [String]
|
@@ -313,7 +316,7 @@ module Qismo
|
|
313
316
|
# @param cursor_after [String]
|
314
317
|
# @param cursor_before [String]
|
315
318
|
# @return [Qismo::Collection<Qismo::Objects::User>]
|
316
|
-
def available_agents(room_id
|
319
|
+
def available_agents(room_id:, available_in_room: true, search: nil, limit: 15, cursor_after: nil, cursor_before: nil)
|
317
320
|
body = get("/api/v2/admin/service/available_agents", {
|
318
321
|
room_id: room_id.to_s,
|
319
322
|
is_available_in_room: available_in_room,
|
@@ -346,7 +349,7 @@ module Qismo
|
|
346
349
|
# @param url [String]
|
347
350
|
# @param enabled [TrueClass,FalseClass]
|
348
351
|
# @return [Qismo::Objects::Webhook]
|
349
|
-
def set_new_session_webhook(url
|
352
|
+
def set_new_session_webhook(url:, enabled: true)
|
350
353
|
config = post("/api/v2/app/config/new_session_webhook", url: url, enabled: enabled).data.configs
|
351
354
|
Qismo::Objects::Webhook.new(
|
352
355
|
enabled: config.is_new_session_webhook_enabled,
|
@@ -356,7 +359,7 @@ module Qismo
|
|
356
359
|
|
357
360
|
# Get auth webhook config
|
358
361
|
#
|
359
|
-
# @return [Qismo::
|
362
|
+
# @return [Qismo::Objects::Webhook]
|
360
363
|
def auth_webhook
|
361
364
|
config = get("/api/v2/app/config/auth_webhook").data.configs
|
362
365
|
Qismo::Objects::Webhook.new(
|
@@ -369,8 +372,8 @@ module Qismo
|
|
369
372
|
#
|
370
373
|
# @param url [String]
|
371
374
|
# @param enabled [TrueClass, FalseClass]
|
372
|
-
# @return [Qismo::
|
373
|
-
def set_auth_webhook(url
|
375
|
+
# @return [Qismo::Objects::Webhook]
|
376
|
+
def set_auth_webhook(url:, enabled: true)
|
374
377
|
config = post("/api/v2/app/config/auth_webhook", url: url, enabled: enabled).data.configs
|
375
378
|
Qismo::Objects::Webhook.new(
|
376
379
|
enabled: config.is_auth_webhook_enabled,
|
@@ -394,7 +397,7 @@ module Qismo
|
|
394
397
|
# @param url [String]
|
395
398
|
# @param options [Hash]
|
396
399
|
# @return [Qismo::Objects::Webhook]
|
397
|
-
def set_resolve_webhook(url
|
400
|
+
def set_resolve_webhook(url:, enabled: true)
|
398
401
|
config = post("/api/v1/app/webhook/mark_as_resolved", webhook_url: url, is_webhook_enabled: enabled).data
|
399
402
|
Qismo::Objects::Webhook.new(
|
400
403
|
enabled: config.is_mark_as_resolved_webhook_enabled,
|
@@ -429,9 +432,9 @@ module Qismo
|
|
429
432
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#3db6c8c8-8ffe-4a88-b630-41f9d5b62298
|
430
433
|
# @param ids [Array<Integer>]
|
431
434
|
# @return [Qismo::Collection<Qismo::Objects::User>]
|
432
|
-
def agents_by_ids(
|
435
|
+
def agents_by_ids(agent_ids:)
|
433
436
|
Qismo::Collection.new(
|
434
|
-
Qismo::Objects::User.from_array(get("/api/v1/admin/agents/get_by_ids", {"ids[]":
|
437
|
+
Qismo::Objects::User.from_array(get("/api/v1/admin/agents/get_by_ids", {"ids[]": agent_ids}).data)
|
435
438
|
)
|
436
439
|
end
|
437
440
|
|
@@ -462,7 +465,7 @@ module Qismo
|
|
462
465
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#c6184a6b-ba4d-4f3e-a4da-c6d0fa4597af
|
463
466
|
# @param agent_id [Integer]
|
464
467
|
# @return [Qismo::Objects::User]
|
465
|
-
def agent(agent_id)
|
468
|
+
def agent(agent_id:)
|
466
469
|
Qismo::Objects::User.new(get("/api/v2/admin/agent/#{agent_id}").data.agent)
|
467
470
|
end
|
468
471
|
|
@@ -480,7 +483,7 @@ module Qismo
|
|
480
483
|
#
|
481
484
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#e38d2244-9559-4015-99d5-8c707f6c01bd
|
482
485
|
# @param options [Hash]
|
483
|
-
# @return [Qismo::
|
486
|
+
# @return [Qismo::Collection<Qismo::Objects::HsmTemplate>]
|
484
487
|
def wa_broadcast_templates(page: 1, limit: 10, approved: nil)
|
485
488
|
body = get("/api/v3/admin/hsm", {
|
486
489
|
page: page,
|
@@ -559,7 +562,7 @@ module Qismo
|
|
559
562
|
# @param file [HTTP::FormData]
|
560
563
|
# @param template_detail_id [Integer]
|
561
564
|
# @return [Integer]
|
562
|
-
def upload_wa_broadcast_csv(file
|
565
|
+
def upload_wa_broadcast_csv(file:, template_detail_id:, separator: ",")
|
563
566
|
raise ArgumentError, "Invalid file" unless file.is_a?(HTTP::FormData::File)
|
564
567
|
|
565
568
|
body = post_upload("/api/v3/admin/broadcast/upload_csv", {
|
@@ -580,7 +583,7 @@ module Qismo
|
|
580
583
|
# @param separator [String]
|
581
584
|
# @param started_at [Time]
|
582
585
|
# @return [Qismo::Objects::BroadcastJob]
|
583
|
-
def send_wa_broadcast(file
|
586
|
+
def send_wa_broadcast(file:, template_detail_id:, name: nil, separator: ",", started_at: nil)
|
584
587
|
if name.blank?
|
585
588
|
name = default_broadcast_name
|
586
589
|
end
|
@@ -614,12 +617,6 @@ module Qismo
|
|
614
617
|
|
615
618
|
alias_method :create_wa_broadcast, :send_wa_broadcast
|
616
619
|
|
617
|
-
# List wa broadcast jobs
|
618
|
-
#
|
619
|
-
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#3a4caa8b-eef4-427f-adcb-d065989899c9
|
620
|
-
# @param options [Hash]
|
621
|
-
# @return [Qismo::CollectionObject]
|
622
|
-
|
623
620
|
# List WA broadcast jobs
|
624
621
|
#
|
625
622
|
# @param page [Integer]
|
@@ -648,7 +645,7 @@ module Qismo
|
|
648
645
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#ed0806c8-2e4a-4ea4-8acb-45c84c63c2da
|
649
646
|
# @param broadcast_job_id [Integer]
|
650
647
|
# @return [Qismo::Objects::BroadcastJob]
|
651
|
-
def wa_broadcast_job(broadcast_job_id)
|
648
|
+
def wa_broadcast_job(broadcast_job_id:)
|
652
649
|
Qismo::Objects::BroadcastJob.new(
|
653
650
|
get("/api/v2/admin/broadcast_jobs/#{broadcast_job_id}").data.broadcast_job
|
654
651
|
)
|
@@ -659,8 +656,8 @@ module Qismo
|
|
659
656
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#3f2d8ba8-ab14-43b2-af82-74c8b766216f
|
660
657
|
# @param broadcast_job_id [Integer]
|
661
658
|
# @param options [Hash]
|
662
|
-
# @return [Qismo::
|
663
|
-
def wa_broadcast_logs(broadcast_job_id
|
659
|
+
# @return [Qismo::Collection<Qismo::Objects::BroadcastLog>]
|
660
|
+
def wa_broadcast_logs(broadcast_job_id:, page: 1, limit: 10)
|
664
661
|
body = get("/api/v2/admin/broadcast_logs/#{broadcast_job_id}", {
|
665
662
|
page: page,
|
666
663
|
limit: limit
|
@@ -685,7 +682,7 @@ module Qismo
|
|
685
682
|
# @param payload [Hash]
|
686
683
|
# @param extras [Hash]
|
687
684
|
# @return [TrueClass]
|
688
|
-
def send_bot_message(room_id
|
685
|
+
def send_bot_message(room_id:, message:, type: "text", payload: {}, extras: {})
|
689
686
|
body = post("/#{app_id}/bot", {
|
690
687
|
sender_email: admin_email,
|
691
688
|
room_id: room_id.to_s,
|
@@ -707,7 +704,7 @@ module Qismo
|
|
707
704
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#494d825f-a49c-4b18-954e-eaaccb738bcd
|
708
705
|
# @param room_id [Integer]
|
709
706
|
# @return [TrueClass]
|
710
|
-
def enable_bot_in_room(room_id)
|
707
|
+
def enable_bot_in_room(room_id:)
|
711
708
|
post("/bot/#{room_id}/activate", is_active: true)
|
712
709
|
true
|
713
710
|
end
|
@@ -717,7 +714,7 @@ module Qismo
|
|
717
714
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#494d825f-a49c-4b18-954e-eaaccb738bcd
|
718
715
|
# @param room_id [Integer]
|
719
716
|
# @return [TrueClass]
|
720
|
-
def disable_bot_in_room(room_id)
|
717
|
+
def disable_bot_in_room(room_id:)
|
721
718
|
post("/bot/#{room_id}/activate", is_active: false)
|
722
719
|
true
|
723
720
|
end
|
@@ -727,7 +724,7 @@ module Qismo
|
|
727
724
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#40867e85-7412-4e0d-84bd-e2506df23df8
|
728
725
|
# @param room_id [Integer]
|
729
726
|
# @return [TrueClass]
|
730
|
-
def handover_room_from_bot(room_id)
|
727
|
+
def handover_room_from_bot(room_id:)
|
731
728
|
request(:post, "/#{app_id}/bot/#{room_id}/hand_over", headers: {
|
732
729
|
Authorization: secret_key
|
733
730
|
})
|
@@ -735,31 +732,23 @@ module Qismo
|
|
735
732
|
true
|
736
733
|
end
|
737
734
|
|
738
|
-
# Handover room from chatbot to human agent in specific divisions
|
739
|
-
#
|
740
|
-
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#8218db08-9753-4d74-ae5f-0ee62f8579b9
|
741
|
-
# @param room_id [Integer]
|
742
|
-
# @param roles [Array<Integer>]
|
743
|
-
# @param options [Hash]
|
744
|
-
# @return [TrueClass]
|
745
|
-
|
746
735
|
# Handover room from chatbot to human agent in specific divisions
|
747
736
|
#
|
748
737
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#8218db08-9753-4d74-ae5f-0ee62f8579b9# <Description>
|
749
738
|
#
|
750
739
|
# @param room_id [Integer]
|
751
|
-
# @param
|
740
|
+
# @param roles [Integer,Array<Integer>]
|
752
741
|
# @param find_online_agent [TrueClass,FalseClass]
|
753
742
|
# @return [TrueClass,FalseClass]
|
754
|
-
def handover_room_from_bot_to_division(room_id
|
743
|
+
def handover_room_from_bot_to_division(room_id:, roles:, find_online_agent: true)
|
755
744
|
options = {}
|
756
745
|
options[:room_id] = room_id.to_s
|
757
746
|
options[:find_online_agent] = find_online_agent
|
758
747
|
|
759
|
-
if
|
760
|
-
options[:roles] =
|
748
|
+
if roles.is_a?(Array)
|
749
|
+
options[:roles] = roles
|
761
750
|
else
|
762
|
-
options[:role] =
|
751
|
+
options[:role] = roles
|
763
752
|
end
|
764
753
|
|
765
754
|
request(
|
@@ -777,24 +766,44 @@ module Qismo
|
|
777
766
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#d5a555de-59e0-4705-9582-c216d79e9390
|
778
767
|
# @param user_id [String]
|
779
768
|
# @param name [String]
|
780
|
-
# @param
|
781
|
-
# @
|
782
|
-
|
783
|
-
|
769
|
+
# @param nonce [String]
|
770
|
+
# @param channel_id [Integer]
|
771
|
+
# @param extras [Hash]
|
772
|
+
# @param reset_extras [TrueClass,FalseClass]
|
773
|
+
# @param room_badge [String]
|
774
|
+
# @param avatar [String]
|
775
|
+
# @param allocate_agent [TrueClass,FalseClass]
|
776
|
+
# @param user_properties [Hash]
|
777
|
+
# @param sdk_user_extras [Hash]
|
778
|
+
# @param timezone_offset [String]
|
779
|
+
# @param notes [String]
|
780
|
+
# @param phone_number [String]
|
781
|
+
# @param email [String]
|
782
|
+
# @return [Qismo::Objects::CustomerRoom]
|
783
|
+
def initiate_widget_chat(user_id:, name:, nonce: nil, channel_id: nil, extras: nil, reset_extras: false, room_badge: nil, avatar: nil, allocate_agent: nil, user_properties: nil, sdk_user_extras: nil, timezone_offset: nil, notes: nil, phone_number: nil, email: nil)
|
784
|
+
options = {
|
785
|
+
user_id: user_id,
|
786
|
+
name: name,
|
787
|
+
nonce: nonce,
|
788
|
+
channel_id: channel_id,
|
789
|
+
extras: extras,
|
790
|
+
reset_extras: reset_extras,
|
791
|
+
room_badge: room_badge,
|
792
|
+
avatar: avatar,
|
793
|
+
allocate_agent: allocate_agent,
|
794
|
+
user_properties: user_properties,
|
795
|
+
sdk_user_extras: sdk_user_extras,
|
796
|
+
timezone_offset: timezone_offset,
|
797
|
+
notes: notes,
|
798
|
+
phone_number: phone_number,
|
799
|
+
email: email
|
800
|
+
}.compact
|
801
|
+
|
784
802
|
Qismo::Objects::CustomerRoom.new(post("/api/v2/qiscus/initiate_chat", options).data.customer_room)
|
785
803
|
end
|
786
804
|
|
787
805
|
alias_method :initiate_chat, :initiate_widget_chat
|
788
806
|
|
789
|
-
# Send message to custom channel
|
790
|
-
#
|
791
|
-
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#aee54b21-68f1-4d31-9d81-d3c73b3e125b
|
792
|
-
# @param identifier_key [String]
|
793
|
-
# @param user_id [String]
|
794
|
-
# @param name [String]
|
795
|
-
# @param options [Hash]
|
796
|
-
# @return [Qismo::SingleObject]
|
797
|
-
|
798
807
|
# Send messsage to custom channel
|
799
808
|
#
|
800
809
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#aee54b21-68f1-4d31-9d81-d3c73b3e125b
|
@@ -808,10 +817,10 @@ module Qismo
|
|
808
817
|
# @param extras [Hash]
|
809
818
|
# @return [Qismo::Objects::CustomChannelMessageResponse]
|
810
819
|
def send_message_to_custom_channel(
|
811
|
-
identifier_key
|
812
|
-
user_id
|
813
|
-
name
|
814
|
-
message
|
820
|
+
identifier_key:,
|
821
|
+
user_id:,
|
822
|
+
name:,
|
823
|
+
message:,
|
815
824
|
avatar: nil,
|
816
825
|
type: "text",
|
817
826
|
payload: {},
|
@@ -834,9 +843,11 @@ module Qismo
|
|
834
843
|
# List integrated channels
|
835
844
|
#
|
836
845
|
# @see https://documenter.getpostman.com/view/8259884/TVsuCSeT#aee54b21-68f1-4d31-9d81-d3c73b3e125b
|
837
|
-
# @return [Qismo::
|
846
|
+
# @return [Qismo::Objects::ListChannelsResponse]
|
838
847
|
def channels
|
839
|
-
|
848
|
+
Qismo::Objects::ListChannelsResponse.new(
|
849
|
+
get("/api/v2/channels").data
|
850
|
+
)
|
840
851
|
end
|
841
852
|
end
|
842
853
|
end
|
data/lib/qismo/client.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Qismo
|
4
|
+
# Qismo ruby client
|
5
|
+
#
|
4
6
|
class Client
|
5
7
|
include Qismo::Api
|
6
8
|
|
@@ -44,7 +46,6 @@ module Qismo
|
|
44
46
|
# @param body [Hash]
|
45
47
|
# @return [Qismo::ObjectifiedHash]
|
46
48
|
def post(path, body = {})
|
47
|
-
puts body.to_json
|
48
49
|
request(:post, path, json: body.compact)
|
49
50
|
end
|
50
51
|
|
@@ -86,9 +87,6 @@ module Qismo
|
|
86
87
|
def request(method, path, options = {})
|
87
88
|
res = connection.request(method, @url + path, options.compact)
|
88
89
|
|
89
|
-
# require "byebug"
|
90
|
-
# byebug
|
91
|
-
|
92
90
|
if res.status.success?
|
93
91
|
begin
|
94
92
|
return JSON.parse(res.to_s, object_class: Qismo::ObjectifiedHash)
|
@@ -170,6 +168,9 @@ module Qismo
|
|
170
168
|
"#{format[:lib_name]}/#{format[:lib_version]} (#{format[:platform]}; #{format[:lang]}; v#{format[:lang_version]}) app_id:#{@app_id}"
|
171
169
|
end
|
172
170
|
|
171
|
+
# Default broadcast name for using in send broadcast api
|
172
|
+
#
|
173
|
+
# @return [String]
|
173
174
|
def default_broadcast_name
|
174
175
|
Time.current.strftime("%d/%m/%Y, %H:%I %z")
|
175
176
|
end
|
data/lib/qismo/collection.rb
CHANGED