crisp-api 10.10.3 → 10.10.5

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.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## v10.10.5
5
+
6
+ ### Changes
7
+
8
+ * Added typed RTM events, exposing an `EventsMap` of event name to payload type, and typing the `CrispClient.on` event listener accordingly.
9
+
10
+ ## v10.10.4
11
+
12
+ ### Changes
13
+
14
+ * Added `timestampAfter` and `timestampAround` parameters on `CrispClient.website.getMessagesInConversation` method.
15
+
4
16
  ## v10.10.3
5
17
 
6
18
  ### Changes
package/EXAMPLES.md CHANGED
@@ -122,6 +122,8 @@ https://docs.crisp.chat/references/rest-api/v1/#get-messages-in-conversation
122
122
 
123
123
  var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
124
124
  var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
125
+
126
+ // Either 'timestampBefore', 'timestampAfter' or 'timestampAround'
125
127
  var timestampBefore = 1641206011000;
126
128
 
127
129
  CrispClient.website.getMessagesInConversation(websiteID, sessionID, timestampBefore);
package/README.md CHANGED
@@ -356,13 +356,15 @@ All methods that you will most likely need when building a Crisp integration are
356
356
  </details>
357
357
 
358
358
  * **⭐ Get Messages In Conversation**: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-messages-in-conversation)
359
- * `CrispClient.website.getMessagesInConversation(websiteID, sessionID, timestampBefore)`
359
+ * `CrispClient.website.getMessagesInConversation(websiteID, sessionID, timestampBefore, timestampAfter, timestampAround)`
360
360
  * <details>
361
361
  <summary>See Example</summary>
362
362
 
363
363
  ```javascript
364
364
  var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
365
365
  var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
366
+
367
+ // Either 'timestampBefore', 'timestampAfter' or 'timestampAround'
366
368
  var timestampBefore = 1641206011000;
367
369
 
368
370
  CrispClient.website.getMessagesInConversation(websiteID, sessionID, timestampBefore);
package/dist/crisp.d.ts CHANGED
@@ -5,6 +5,7 @@ import { MediaServiceInterface } from "./services/media";
5
5
  import { PluginServiceInterface } from "./services/plugin";
6
6
  import { PlanServiceInterface } from "./services/plan";
7
7
  import { WebsiteServiceInterface } from "./services/website";
8
+ import { EventsMap, EventName } from "./events/Events";
8
9
  /**************************************************************************
9
10
  * TYPES
10
11
  ***************************************************************************/
@@ -113,9 +114,13 @@ declare class Crisp {
113
114
  */
114
115
  delete(resource: string, query?: object | null, body?: object | null): Promise<any>;
115
116
  /**
116
- * Binds RTM event
117
+ * Binds RTM event (typed variant)
117
118
  */
118
- on(event: string, callback: (data: any) => any): Promise<unknown>;
119
+ on<Name extends EventName>(event: Name, callback: (data: EventsMap[Name]) => unknown): Promise<unknown>;
120
+ /**
121
+ * Binds RTM event (loose variant)
122
+ */
123
+ on(event: string, callback: (data: any) => unknown): Promise<unknown>;
119
124
  /**
120
125
  * Receives a raw event and dispatches it to the listener (used for Web Hooks)
121
126
  */
@@ -183,5 +188,6 @@ declare class Crisp {
183
188
  * EXPORTS
184
189
  ***************************************************************************/
185
190
  export * from "./resources";
191
+ export * from "./events/Events";
186
192
  export { Crisp };
187
193
  export default Crisp;
package/dist/crisp.js CHANGED
@@ -46,7 +46,7 @@ const AVAILABLE_RTM_MODES = [
46
46
  "websockets",
47
47
  "webhooks"
48
48
  ];
49
- const VERSION = "10.10.3";
49
+ const VERSION = "10.10.5";
50
50
  // Base configuration
51
51
  const DEFAULT_REQUEST_TIMEOUT = 10000;
52
52
  const DEFAULT_SOCKET_TIMEOUT = 10000;
@@ -326,7 +326,6 @@ class Crisp {
326
326
  this.__request(resource, "delete", (query || {}), (body || null), resolve, reject);
327
327
  });
328
328
  }
329
- /* eslint-enable @typescript-eslint/no-explicit-any */
330
329
  /**
331
330
  * Binds RTM event
332
331
  */
@@ -800,4 +799,5 @@ Crisp.RTM_MODES = {
800
799
  * EXPORTS
801
800
  ***************************************************************************/
802
801
  __exportStar(require("./resources"), exports);
802
+ __exportStar(require("./events/Events"), exports);
803
803
  exports.default = Crisp;
@@ -0,0 +1,597 @@
1
+ /**************************************************************************
2
+ * IMPORTS
3
+ ***************************************************************************/
4
+ import { ConversationMessageType, ConversationMessageUser, ConversationState, ConversationFileMessageContent, ConversationAnimationMessageContent, ConversationAudioMessageContent, ConversationPickerMessageContent, ConversationFieldMessageContent, ConversationCarouselMessageContent, ConversationEventMessageContent, GeolocationInfo, SystemInfo, ConnectionInfo } from "../resources/WebsiteConversation";
5
+ /**************************************************************************
6
+ * TYPES + INTERFACES (COMMON)
7
+ ***************************************************************************/
8
+ /**
9
+ * Common fields shared by every website-scoped event.
10
+ */
11
+ export interface EventsWebsiteGeneric {
12
+ website_id: string;
13
+ }
14
+ /**
15
+ * Common fields shared by every session-scoped event.
16
+ */
17
+ export interface EventsSessionGeneric extends EventsWebsiteGeneric {
18
+ session_id: string;
19
+ inbox_id: string | null;
20
+ }
21
+ export interface EventsOperator {
22
+ user_id: string;
23
+ avatar?: string | null;
24
+ nickname?: string;
25
+ }
26
+ /**************************************************************************
27
+ * TYPES + INTERFACES (SESSION EVENTS)
28
+ ***************************************************************************/
29
+ export type EventsSessionAvailability = "online" | "offline";
30
+ export interface EventsSessionUpdateAvailability extends EventsSessionGeneric {
31
+ availability: EventsSessionAvailability;
32
+ }
33
+ export interface EventsSessionVerification {
34
+ identity: string;
35
+ method: string;
36
+ annotation: string;
37
+ }
38
+ export interface EventsSessionUpdateVerify extends EventsSessionGeneric {
39
+ is_verified: boolean;
40
+ verifications: EventsSessionVerification[];
41
+ }
42
+ export type EventsSessionRequestInitiated = EventsSessionGeneric;
43
+ export interface EventsSessionSetEmail extends EventsSessionGeneric {
44
+ email: string;
45
+ }
46
+ export interface EventsSessionSetPhone extends EventsSessionGeneric {
47
+ phone: string;
48
+ }
49
+ export interface EventsSessionSetAddress extends EventsSessionGeneric {
50
+ address: string;
51
+ }
52
+ export interface EventsSessionSetSubject extends EventsSessionGeneric {
53
+ subject: string;
54
+ }
55
+ export interface EventsSessionSetAvatar extends EventsSessionGeneric {
56
+ avatar: string;
57
+ }
58
+ export interface EventsSessionSetNickname extends EventsSessionGeneric {
59
+ nickname: string;
60
+ }
61
+ export interface EventsSessionSetOrigin extends EventsSessionGeneric {
62
+ origin: string;
63
+ }
64
+ export interface EventsSessionSetData extends EventsSessionGeneric {
65
+ data: Record<string, string | number | boolean>;
66
+ }
67
+ export interface EventsSessionSetSegments extends EventsSessionGeneric {
68
+ segments: string[];
69
+ }
70
+ export interface EventsSessionSetBlock extends EventsSessionGeneric {
71
+ is_blocked: boolean;
72
+ }
73
+ export interface EventsSessionSetOpened extends EventsSessionGeneric {
74
+ operator: EventsOperator;
75
+ }
76
+ export interface EventsSessionSetClosed extends EventsSessionGeneric {
77
+ operator: EventsOperator;
78
+ }
79
+ export interface EventsSessionParticipant {
80
+ target: string;
81
+ type: string;
82
+ }
83
+ export interface EventsSessionSetParticipants extends EventsSessionGeneric {
84
+ participants: EventsSessionParticipant[];
85
+ }
86
+ export interface EventsSessionSetMentions extends EventsSessionGeneric {
87
+ mentions: string[];
88
+ }
89
+ export interface EventsSessionSetRouting extends EventsSessionGeneric {
90
+ routing_id: string | null;
91
+ previous_routing_id: string | null;
92
+ }
93
+ export interface EventsSessionSetInbox extends EventsSessionGeneric {
94
+ previous_inbox_id: string | null;
95
+ }
96
+ export interface EventsSessionSetState extends EventsSessionGeneric {
97
+ state: ConversationState;
98
+ }
99
+ export interface EventsSessionSyncCapabilities extends EventsSessionGeneric {
100
+ capabilities: string[];
101
+ }
102
+ export interface EventsSessionSyncGeolocation extends EventsSessionGeneric {
103
+ geolocation: GeolocationInfo;
104
+ }
105
+ export interface EventsSessionSyncSystem extends EventsSessionGeneric {
106
+ system: SystemInfo;
107
+ }
108
+ export interface EventsSessionSyncNetworkInfo {
109
+ ip: string;
110
+ connection?: ConnectionInfo;
111
+ }
112
+ export interface EventsSessionSyncNetwork extends EventsSessionGeneric {
113
+ network: EventsSessionSyncNetworkInfo;
114
+ }
115
+ export interface EventsSessionSyncTimezone extends EventsSessionGeneric {
116
+ timezone: {
117
+ offset: number;
118
+ };
119
+ }
120
+ export interface EventsSessionSyncLocales extends EventsSessionGeneric {
121
+ locales: {
122
+ locales: string[];
123
+ };
124
+ }
125
+ export interface EventsSessionPage {
126
+ page_url: string;
127
+ page_title: string;
128
+ timestamp: number;
129
+ }
130
+ export interface EventsSessionSyncPages extends EventsSessionGeneric {
131
+ pages: EventsSessionPage[];
132
+ }
133
+ export interface EventsSessionEvent {
134
+ text: string;
135
+ data?: Record<string, string | number | boolean>;
136
+ color?: string;
137
+ timestamp: number;
138
+ }
139
+ export interface EventsSessionSyncEvents extends EventsSessionGeneric {
140
+ events: EventsSessionEvent[];
141
+ }
142
+ export interface EventsSessionRating {
143
+ stars: number;
144
+ comment?: string;
145
+ }
146
+ export interface EventsSessionSyncRating extends EventsSessionGeneric {
147
+ rating: EventsSessionRating;
148
+ }
149
+ export interface EventsSessionSyncTopic extends EventsSessionGeneric {
150
+ topic: string;
151
+ }
152
+ export type EventsSessionRemoved = EventsSessionGeneric;
153
+ export interface EventsSessionError extends EventsSessionGeneric {
154
+ type: string;
155
+ value: string;
156
+ previous_value: string;
157
+ }
158
+ /**************************************************************************
159
+ * TYPES + INTERFACES (MESSAGE EVENTS)
160
+ ***************************************************************************/
161
+ export interface EventsMessageUpdated extends EventsSessionGeneric {
162
+ fingerprint: number;
163
+ content: string | ConversationPickerMessageContent;
164
+ }
165
+ /**
166
+ * Common fields shared by 'message:send' and 'message:received' events.
167
+ */
168
+ export interface EventsMessageGeneric extends EventsSessionGeneric {
169
+ type: ConversationMessageType;
170
+ from: string;
171
+ origin: string;
172
+ fingerprint: number;
173
+ timestamp: number;
174
+ user: ConversationMessageUser;
175
+ mentions?: string[];
176
+ stamped?: boolean;
177
+ }
178
+ export interface EventsMessageSendText extends EventsMessageGeneric {
179
+ type: "text";
180
+ content: string;
181
+ }
182
+ export interface EventsMessageSendFile extends EventsMessageGeneric {
183
+ type: "file";
184
+ content: ConversationFileMessageContent;
185
+ }
186
+ export interface EventsMessageSendAnimation extends EventsMessageGeneric {
187
+ type: "animation";
188
+ content: ConversationAnimationMessageContent;
189
+ }
190
+ export interface EventsMessageSendAudio extends EventsMessageGeneric {
191
+ type: "audio";
192
+ content: ConversationAudioMessageContent;
193
+ }
194
+ export interface EventsMessageSendPicker extends EventsMessageGeneric {
195
+ type: "picker";
196
+ content: ConversationPickerMessageContent;
197
+ }
198
+ export interface EventsMessageSendField extends EventsMessageGeneric {
199
+ type: "field";
200
+ content: ConversationFieldMessageContent;
201
+ }
202
+ export interface EventsMessageSendCarousel extends EventsMessageGeneric {
203
+ type: "carousel";
204
+ content: ConversationCarouselMessageContent;
205
+ }
206
+ /**
207
+ * Payload of a 'message:send' event (message sent by a visitor).
208
+ */
209
+ export type EventsMessageSend = EventsMessageSendText | EventsMessageSendFile | EventsMessageSendAnimation | EventsMessageSendAudio | EventsMessageSendPicker | EventsMessageSendField | EventsMessageSendCarousel;
210
+ export interface EventsMessageReceivedNote extends EventsMessageGeneric {
211
+ type: "note";
212
+ content: string;
213
+ }
214
+ export interface EventsMessageReceivedEvent extends EventsMessageGeneric {
215
+ type: "event";
216
+ content: ConversationEventMessageContent;
217
+ }
218
+ /**
219
+ * Payload of a 'message:received' event (message sent by an operator).
220
+ */
221
+ export type EventsMessageReceived = EventsMessageSendText | EventsMessageReceivedNote | EventsMessageSendFile | EventsMessageSendAnimation | EventsMessageSendAudio | EventsMessageSendPicker | EventsMessageSendField | EventsMessageSendCarousel | EventsMessageReceivedEvent;
222
+ export interface EventsMessageRemoved extends EventsSessionGeneric {
223
+ fingerprint: number;
224
+ }
225
+ export interface EventsMessageComposeSend extends EventsSessionGeneric {
226
+ type: "start" | "stop";
227
+ excerpt?: string;
228
+ timestamp: number;
229
+ }
230
+ export interface EventsMessageComposeReceive extends EventsSessionGeneric {
231
+ type: "start" | "stop";
232
+ excerpt?: string;
233
+ timestamp: number;
234
+ user: ConversationMessageUser;
235
+ }
236
+ export interface EventsMessageAcknowledge extends EventsSessionGeneric {
237
+ origin: string;
238
+ fingerprints: number[];
239
+ }
240
+ export interface EventsMessageAcknowledgeIgnoredDetails {
241
+ type: string;
242
+ reason: string;
243
+ }
244
+ export interface EventsMessageAcknowledgeIgnored extends EventsMessageAcknowledge {
245
+ details?: EventsMessageAcknowledgeIgnoredDetails;
246
+ }
247
+ export type EventsMessageNotifyUnread = EventsSessionGeneric;
248
+ /**************************************************************************
249
+ * TYPES + INTERFACES (SPAM EVENTS)
250
+ ***************************************************************************/
251
+ export interface EventsSpamMessage extends EventsWebsiteGeneric {
252
+ spam_id: string;
253
+ type: string;
254
+ reason: string;
255
+ metadata?: Record<string, unknown>;
256
+ headers?: Record<string, string>;
257
+ timestamp: number;
258
+ }
259
+ export interface EventsSpamDecision extends EventsWebsiteGeneric {
260
+ spam_id: string;
261
+ action: string;
262
+ }
263
+ /**************************************************************************
264
+ * TYPES + INTERFACES (PEOPLE EVENTS)
265
+ ***************************************************************************/
266
+ export interface EventsPeopleProfileCreated extends EventsWebsiteGeneric {
267
+ people_id: string;
268
+ email?: string;
269
+ }
270
+ export interface EventsPeopleEmployment {
271
+ domain?: string;
272
+ name?: string;
273
+ role?: string;
274
+ title?: string;
275
+ }
276
+ export interface EventsPeoplePerson {
277
+ geolocation?: GeolocationInfo;
278
+ locales?: string[];
279
+ nickname?: string;
280
+ timezone?: number;
281
+ phone?: string;
282
+ avatar?: string;
283
+ employment?: EventsPeopleEmployment;
284
+ address?: string;
285
+ website?: string;
286
+ gender?: string;
287
+ }
288
+ export interface EventsPeopleCompany {
289
+ description?: string;
290
+ domain?: string;
291
+ geolocation?: GeolocationInfo;
292
+ legal_name?: string;
293
+ name?: string;
294
+ url?: string;
295
+ }
296
+ export interface EventsPeopleProfileUpdated extends EventsWebsiteGeneric {
297
+ people_id: string;
298
+ email?: string;
299
+ update: {
300
+ updated_at: number;
301
+ person: EventsPeoplePerson;
302
+ };
303
+ }
304
+ export interface EventsPeopleProfileRemoved extends EventsWebsiteGeneric {
305
+ people_id: string;
306
+ }
307
+ export interface EventsPeopleBindSession extends EventsSessionGeneric {
308
+ people_id: string;
309
+ }
310
+ export interface EventsPeopleSyncProfile extends EventsSessionGeneric {
311
+ people_id: string;
312
+ identity: {
313
+ person?: EventsPeoplePerson;
314
+ company?: EventsPeopleCompany;
315
+ };
316
+ }
317
+ export interface EventsPeopleImportProgress extends EventsWebsiteGeneric {
318
+ people_id?: string;
319
+ progress: number;
320
+ count: {
321
+ skipped: number;
322
+ remaining: number;
323
+ };
324
+ items?: {
325
+ skipped?: Array<{
326
+ identifier: string | null;
327
+ reason: string;
328
+ }>;
329
+ };
330
+ }
331
+ export interface EventsPeopleImportDone extends EventsWebsiteGeneric {
332
+ people_id?: string;
333
+ error: boolean;
334
+ }
335
+ /**************************************************************************
336
+ * TYPES + INTERFACES (CAMPAIGN EVENTS)
337
+ ***************************************************************************/
338
+ export interface EventsCampaignProgress extends EventsWebsiteGeneric {
339
+ campaign_id: string;
340
+ progress: number;
341
+ }
342
+ export interface EventsCampaignDispatched extends EventsWebsiteGeneric {
343
+ campaign_id: string;
344
+ }
345
+ export interface EventsCampaignRunning extends EventsWebsiteGeneric {
346
+ campaign_id: string;
347
+ running: boolean;
348
+ }
349
+ /**************************************************************************
350
+ * TYPES + INTERFACES (BROWSING EVENTS)
351
+ ***************************************************************************/
352
+ export interface EventsBrowsingRequestInitiated extends EventsSessionGeneric {
353
+ browsing_id: string;
354
+ browsing_token: string;
355
+ }
356
+ export type EventsBrowsingRequestRejected = EventsSessionGeneric;
357
+ /**************************************************************************
358
+ * TYPES + INTERFACES (CALL EVENTS)
359
+ ***************************************************************************/
360
+ export interface EventsCallRequestInitiated extends EventsSessionGeneric {
361
+ call_id: string;
362
+ }
363
+ export interface EventsCallRequestRejected extends EventsSessionGeneric {
364
+ call_id: string;
365
+ }
366
+ /**************************************************************************
367
+ * TYPES + INTERFACES (IDENTITY EVENTS)
368
+ ***************************************************************************/
369
+ export interface EventsIdentityVerifyRequest extends EventsWebsiteGeneric {
370
+ plugin_id: string;
371
+ session_id: string;
372
+ target: string;
373
+ code: string;
374
+ confirm_url: string;
375
+ }
376
+ /**************************************************************************
377
+ * TYPES + INTERFACES (WIDGET EVENTS)
378
+ ***************************************************************************/
379
+ export interface EventsWidgetActionProcessed extends EventsSessionGeneric {
380
+ plugin_id: string;
381
+ correlation_id: string;
382
+ outcome: "success" | "failure";
383
+ result?: Record<string, unknown>;
384
+ }
385
+ /**************************************************************************
386
+ * TYPES + INTERFACES (STATUS EVENTS)
387
+ ***************************************************************************/
388
+ export type EventsStatusHealth = "healthy" | "sick" | "dead";
389
+ export interface EventsStatusNode {
390
+ label: string;
391
+ replica: string;
392
+ }
393
+ export interface EventsStatusHealthChanged extends EventsWebsiteGeneric {
394
+ health: EventsStatusHealth;
395
+ nodes: EventsStatusNode[];
396
+ }
397
+ /**************************************************************************
398
+ * TYPES + INTERFACES (WEBSITE EVENTS)
399
+ ***************************************************************************/
400
+ export interface EventsWebsiteUpdateVisitorsCount extends EventsWebsiteGeneric {
401
+ visitors_count: number;
402
+ }
403
+ export interface EventsWebsiteUpdateOperatorsAvailability extends EventsWebsiteGeneric {
404
+ user_id: string;
405
+ availability: {
406
+ type: EventsSessionAvailability;
407
+ };
408
+ }
409
+ export interface EventsWebsiteUsersAvailable extends EventsWebsiteGeneric {
410
+ available: boolean;
411
+ }
412
+ /**************************************************************************
413
+ * TYPES + INTERFACES (BUCKET EVENTS)
414
+ ***************************************************************************/
415
+ export interface EventsBucketURLGenerated {
416
+ from: string;
417
+ id: string;
418
+ identifier: string;
419
+ resource: {
420
+ type: string;
421
+ id: string;
422
+ };
423
+ policy: {
424
+ size_limit: number;
425
+ };
426
+ type: string;
427
+ url: {
428
+ resource: string;
429
+ signed: string;
430
+ };
431
+ }
432
+ /**************************************************************************
433
+ * TYPES + INTERFACES (MEDIA EVENTS)
434
+ ***************************************************************************/
435
+ export interface EventsMediaAnimationResult {
436
+ type: string;
437
+ url: string;
438
+ }
439
+ export interface EventsMediaAnimationListed {
440
+ id: number;
441
+ identifier: string;
442
+ results: EventsMediaAnimationResult[];
443
+ }
444
+ /**************************************************************************
445
+ * TYPES + INTERFACES (EMAIL EVENTS)
446
+ ***************************************************************************/
447
+ export interface EventsEmailSubscribe extends EventsWebsiteGeneric {
448
+ email: string;
449
+ subscribed: boolean;
450
+ }
451
+ export interface EventsEmailTrackView extends EventsWebsiteGeneric {
452
+ type: string;
453
+ identifier: string;
454
+ mode: string;
455
+ }
456
+ /**************************************************************************
457
+ * TYPES + INTERFACES (PLUGIN EVENTS)
458
+ ***************************************************************************/
459
+ export interface EventsPluginChannel extends EventsWebsiteGeneric {
460
+ plugin_id: string;
461
+ identifier: string;
462
+ namespace: string;
463
+ payload: unknown;
464
+ }
465
+ export interface EventsPluginEvent extends EventsWebsiteGeneric {
466
+ plugin_id: string;
467
+ urn: string;
468
+ name: string;
469
+ data: Record<string, unknown>;
470
+ }
471
+ export interface EventsPluginSubscriptionUpdated extends EventsWebsiteGeneric {
472
+ plugin_id: string;
473
+ bound: boolean;
474
+ target: string;
475
+ }
476
+ export interface EventsPluginSettingsSaved extends EventsWebsiteGeneric {
477
+ plugin_id: string;
478
+ settings: Record<string, unknown>;
479
+ }
480
+ /**************************************************************************
481
+ * TYPES + INTERFACES (PLAN EVENTS)
482
+ ***************************************************************************/
483
+ export interface EventsPlanSubscriptionUpdated extends EventsWebsiteGeneric {
484
+ plan: {
485
+ id: string;
486
+ name: string;
487
+ price?: number;
488
+ trialing: boolean;
489
+ };
490
+ }
491
+ /**************************************************************************
492
+ * EVENT MAP
493
+ ***************************************************************************/
494
+ /**
495
+ * Maps each event name to the shape of the payload delivered to its listener,
496
+ * whether received over WebSockets or Web Hooks.
497
+ */
498
+ export interface EventsMap {
499
+ "session:update_availability": EventsSessionUpdateAvailability;
500
+ "session:update_verify": EventsSessionUpdateVerify;
501
+ "session:request:initiated": EventsSessionRequestInitiated;
502
+ "session:set_email": EventsSessionSetEmail;
503
+ "session:set_phone": EventsSessionSetPhone;
504
+ "session:set_address": EventsSessionSetAddress;
505
+ "session:set_subject": EventsSessionSetSubject;
506
+ "session:set_avatar": EventsSessionSetAvatar;
507
+ "session:set_nickname": EventsSessionSetNickname;
508
+ "session:set_origin": EventsSessionSetOrigin;
509
+ "session:set_data": EventsSessionSetData;
510
+ "session:set_segments": EventsSessionSetSegments;
511
+ "session:set_block": EventsSessionSetBlock;
512
+ "session:set_opened": EventsSessionSetOpened;
513
+ "session:set_closed": EventsSessionSetClosed;
514
+ "session:set_participants": EventsSessionSetParticipants;
515
+ "session:set_mentions": EventsSessionSetMentions;
516
+ "session:set_routing": EventsSessionSetRouting;
517
+ "session:set_inbox": EventsSessionSetInbox;
518
+ "session:set_state": EventsSessionSetState;
519
+ "session:sync:capabilities": EventsSessionSyncCapabilities;
520
+ "session:sync:geolocation": EventsSessionSyncGeolocation;
521
+ "session:sync:system": EventsSessionSyncSystem;
522
+ "session:sync:network": EventsSessionSyncNetwork;
523
+ "session:sync:timezone": EventsSessionSyncTimezone;
524
+ "session:sync:locales": EventsSessionSyncLocales;
525
+ "session:sync:pages": EventsSessionSyncPages;
526
+ "session:sync:events": EventsSessionSyncEvents;
527
+ "session:sync:rating": EventsSessionSyncRating;
528
+ "session:sync:topic": EventsSessionSyncTopic;
529
+ "session:removed": EventsSessionRemoved;
530
+ "session:error": EventsSessionError;
531
+ "message:updated": EventsMessageUpdated;
532
+ "message:send": EventsMessageSend;
533
+ "message:received": EventsMessageReceived;
534
+ "message:removed": EventsMessageRemoved;
535
+ "message:compose:send": EventsMessageComposeSend;
536
+ "message:compose:receive": EventsMessageComposeReceive;
537
+ "message:acknowledge:read:send": EventsMessageAcknowledge;
538
+ "message:acknowledge:read:received": EventsMessageAcknowledge;
539
+ "message:acknowledge:unread:send": EventsMessageAcknowledge;
540
+ "message:acknowledge:delivered": EventsMessageAcknowledge;
541
+ "message:acknowledge:ignored": EventsMessageAcknowledgeIgnored;
542
+ "message:notify:unread:send": EventsMessageNotifyUnread;
543
+ "message:notify:unread:received": EventsMessageNotifyUnread;
544
+ "spam:message": EventsSpamMessage;
545
+ "spam:decision": EventsSpamDecision;
546
+ "people:profile:created": EventsPeopleProfileCreated;
547
+ "people:profile:updated": EventsPeopleProfileUpdated;
548
+ "people:profile:removed": EventsPeopleProfileRemoved;
549
+ "people:bind:session": EventsPeopleBindSession;
550
+ "people:sync:profile": EventsPeopleSyncProfile;
551
+ "people:import:progress": EventsPeopleImportProgress;
552
+ "people:import:done": EventsPeopleImportDone;
553
+ "campaign:progress": EventsCampaignProgress;
554
+ "campaign:dispatched": EventsCampaignDispatched;
555
+ "campaign:running": EventsCampaignRunning;
556
+ "browsing:request:initiated": EventsBrowsingRequestInitiated;
557
+ "browsing:request:rejected": EventsBrowsingRequestRejected;
558
+ "call:request:initiated": EventsCallRequestInitiated;
559
+ "call:request:rejected": EventsCallRequestRejected;
560
+ "identity:verify:request": EventsIdentityVerifyRequest;
561
+ "widget:action:processed": EventsWidgetActionProcessed;
562
+ "status:health:changed": EventsStatusHealthChanged;
563
+ "website:update_visitors_count": EventsWebsiteUpdateVisitorsCount;
564
+ "website:update_operators_availability": EventsWebsiteUpdateOperatorsAvailability;
565
+ "website:users:available": EventsWebsiteUsersAvailable;
566
+ "bucket:url:upload:generated": EventsBucketURLGenerated;
567
+ "bucket:url:avatar:generated": EventsBucketURLGenerated;
568
+ "bucket:url:website:generated": EventsBucketURLGenerated;
569
+ "bucket:url:campaign:generated": EventsBucketURLGenerated;
570
+ "bucket:url:helpdesk:generated": EventsBucketURLGenerated;
571
+ "bucket:url:status:generated": EventsBucketURLGenerated;
572
+ "bucket:url:processing:generated": EventsBucketURLGenerated;
573
+ "media:animation:listed": EventsMediaAnimationListed;
574
+ "email:subscribe": EventsEmailSubscribe;
575
+ "email:track:view": EventsEmailTrackView;
576
+ "plugin:channel": EventsPluginChannel;
577
+ "plugin:event": EventsPluginEvent;
578
+ "plugin:subscription:updated": EventsPluginSubscriptionUpdated;
579
+ "plugin:settings:saved": EventsPluginSettingsSaved;
580
+ "plan:subscription:updated": EventsPlanSubscriptionUpdated;
581
+ }
582
+ /**
583
+ * Union of all recognized event names.
584
+ */
585
+ export type EventName = keyof EventsMap;
586
+ /**
587
+ * Shape of a Web Hook body, as received on the HTTP endpoint before being
588
+ * dispatched with 'receiveHook'.
589
+ */
590
+ export type EventsWebHookBody<Name extends EventName = EventName> = {
591
+ [K in Name]: {
592
+ event: K;
593
+ data: EventsMap[K];
594
+ timestamp?: number;
595
+ website_id?: string;
596
+ };
597
+ }[Name];