@dawntech/blip-tools 0.6.0 → 0.6.1

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.
@@ -0,0 +1 @@
1
+ export default function createUri(url: string, params: Record<string, unknown>): string;
package/dist/index.cjs CHANGED
@@ -493,12 +493,20 @@ class BlipInteraction {
493
493
  }
494
494
  }
495
495
 
496
+ function createUri(url, params) {
497
+ const encodedParams = encodeBlipParams(params);
498
+ if (encodedParams) {
499
+ return `${url}?${encodedParams}`;
500
+ }
501
+ return url;
502
+ }
503
+
496
504
  class BlipTicket {
497
505
  api;
498
506
  constructor(context) {
499
507
  this.api = context.api;
500
508
  }
501
- async search({ filter, skip, take }) {
509
+ async search({ filter, skip, take } = {}) {
502
510
  try {
503
511
  const params = {
504
512
  $filter: filter,
@@ -509,7 +517,7 @@ class BlipTicket {
509
517
  id: crypto.randomUUID(),
510
518
  to: 'postmaster@desk.msging.net',
511
519
  method: 'get',
512
- uri: `/tickets?${encodeBlipParams(params)}`,
520
+ uri: createUri('/tickets', params),
513
521
  };
514
522
  const response = await this.api.post('/commands', body);
515
523
  validateResponse(response);
@@ -519,6 +527,22 @@ class BlipTicket {
519
527
  throw handleError(error);
520
528
  }
521
529
  }
530
+ async getTicket(ticketId) {
531
+ try {
532
+ const body = {
533
+ id: crypto.randomUUID(),
534
+ to: 'postmaster@desk.msging.net',
535
+ method: 'get',
536
+ uri: `/ticket/${ticketId}`,
537
+ };
538
+ const response = await this.api.post('/commands', body);
539
+ validateResponse(response);
540
+ return response.data.resource;
541
+ }
542
+ catch (error) {
543
+ throw handleError(error);
544
+ }
545
+ }
522
546
  }
523
547
 
524
548
  class BlipWhatsapp {
@@ -631,6 +655,21 @@ class BlipMonitoring {
631
655
  throw handleError(error);
632
656
  }
633
657
  }
658
+ async getWaitingTicketsMetrics() {
659
+ try {
660
+ const response = await this.api.post('/commands', {
661
+ id: crypto.randomUUID(),
662
+ to: 'postmaster@desk.msging.net',
663
+ method: 'get',
664
+ uri: '/monitoring/waiting-tickets',
665
+ });
666
+ validateResponse(response);
667
+ return response.data.resource.items;
668
+ }
669
+ catch (error) {
670
+ throw handleError(error);
671
+ }
672
+ }
634
673
  }
635
674
 
636
675
  class BlipAnalytics {
package/dist/index.mjs CHANGED
@@ -491,12 +491,20 @@ class BlipInteraction {
491
491
  }
492
492
  }
493
493
 
494
+ function createUri(url, params) {
495
+ const encodedParams = encodeBlipParams(params);
496
+ if (encodedParams) {
497
+ return `${url}?${encodedParams}`;
498
+ }
499
+ return url;
500
+ }
501
+
494
502
  class BlipTicket {
495
503
  api;
496
504
  constructor(context) {
497
505
  this.api = context.api;
498
506
  }
499
- async search({ filter, skip, take }) {
507
+ async search({ filter, skip, take } = {}) {
500
508
  try {
501
509
  const params = {
502
510
  $filter: filter,
@@ -507,7 +515,7 @@ class BlipTicket {
507
515
  id: randomUUID(),
508
516
  to: 'postmaster@desk.msging.net',
509
517
  method: 'get',
510
- uri: `/tickets?${encodeBlipParams(params)}`,
518
+ uri: createUri('/tickets', params),
511
519
  };
512
520
  const response = await this.api.post('/commands', body);
513
521
  validateResponse(response);
@@ -517,6 +525,22 @@ class BlipTicket {
517
525
  throw handleError(error);
518
526
  }
519
527
  }
528
+ async getTicket(ticketId) {
529
+ try {
530
+ const body = {
531
+ id: randomUUID(),
532
+ to: 'postmaster@desk.msging.net',
533
+ method: 'get',
534
+ uri: `/ticket/${ticketId}`,
535
+ };
536
+ const response = await this.api.post('/commands', body);
537
+ validateResponse(response);
538
+ return response.data.resource;
539
+ }
540
+ catch (error) {
541
+ throw handleError(error);
542
+ }
543
+ }
520
544
  }
521
545
 
522
546
  class BlipWhatsapp {
@@ -629,6 +653,21 @@ class BlipMonitoring {
629
653
  throw handleError(error);
630
654
  }
631
655
  }
656
+ async getWaitingTicketsMetrics() {
657
+ try {
658
+ const response = await this.api.post('/commands', {
659
+ id: randomUUID(),
660
+ to: 'postmaster@desk.msging.net',
661
+ method: 'get',
662
+ uri: '/monitoring/waiting-tickets',
663
+ });
664
+ validateResponse(response);
665
+ return response.data.resource.items;
666
+ }
667
+ catch (error) {
668
+ throw handleError(error);
669
+ }
670
+ }
632
671
  }
633
672
 
634
673
  class BlipAnalytics {
@@ -1,5 +1,5 @@
1
1
  import { AxiosInstance } from 'axios';
2
- import { MonitoredAttendantStatusMetrics, MonitoredTicketMetrics, MonitoredTickets } from '../types/monitoring';
2
+ import { MonitoredAttendantStatusMetrics, MonitoredTicketMetrics, MonitoredTickets, MonitoredWaitingTicketsMetrics } from '../types/monitoring';
3
3
  export default class BlipMonitoring {
4
4
  private api;
5
5
  constructor(context: {
@@ -8,4 +8,5 @@ export default class BlipMonitoring {
8
8
  getTickets(): Promise<MonitoredTickets>;
9
9
  getTicketMetrics(): Promise<MonitoredTicketMetrics>;
10
10
  getAttendantStatusMetrics(): Promise<MonitoredAttendantStatusMetrics>;
11
+ getWaitingTicketsMetrics(): Promise<MonitoredWaitingTicketsMetrics[]>;
11
12
  }
@@ -1,12 +1,14 @@
1
1
  import { AxiosInstance } from 'axios';
2
+ import { TicketSearchResult } from '../types/ticket-search-result';
2
3
  export default class BlipTicket {
3
4
  private api;
4
5
  constructor(context: {
5
6
  api: AxiosInstance;
6
7
  });
7
- search({ filter, skip, take }: {
8
+ search({ filter, skip, take }?: {
8
9
  filter?: string;
9
10
  skip?: number;
10
11
  take?: number;
11
- }): Promise<import("../types").Ticket[]>;
12
+ }): Promise<import("../types/ticket-search-result").Ticket[]>;
13
+ getTicket(ticketId: string): Promise<TicketSearchResult>;
12
14
  }
@@ -25,3 +25,12 @@ export interface MonitoredAttendantStatusMetrics {
25
25
  invisible: number;
26
26
  offline: number;
27
27
  }
28
+ export interface MonitoredWaitingTicketsMetrics {
29
+ id: string;
30
+ sequentialId: number;
31
+ customerIdentity: string;
32
+ customerName: string;
33
+ team: string;
34
+ queueTime: string;
35
+ priority: number;
36
+ }
@@ -1,6 +1,21 @@
1
- import { Ticket } from './ticket';
2
1
  export interface TicketSearchResult {
3
2
  total: number;
4
3
  itemType: string;
5
4
  items: Ticket[];
6
5
  }
6
+ export interface Ticket {
7
+ closed: boolean;
8
+ customerDomain: string;
9
+ customerIdentity: string;
10
+ externalId: string;
11
+ id: string;
12
+ ownerIdentity: string;
13
+ priority: number;
14
+ provider: string;
15
+ rating: number;
16
+ sequentialId: number;
17
+ status: string;
18
+ storageDate: string;
19
+ team: string;
20
+ unreadMessages: number;
21
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dawntech/blip-tools",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Node package for Blip API",
5
5
  "exports": {
6
6
  ".": {