@dawntech/blip-tools 0.5.0 → 0.6.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.
package/dist/index.cjs CHANGED
@@ -633,6 +633,59 @@ class BlipMonitoring {
633
633
  }
634
634
  }
635
635
 
636
+ class BlipAnalytics {
637
+ api;
638
+ constructor(context) {
639
+ this.api = context.api;
640
+ }
641
+ /**
642
+ * Returns a list of reports by day with tickets status. Ommiting dates will return only the last report. Dates are expected to be in yyyy-mm-dd format.
643
+ */
644
+ async getTicketReports({ beginDate, endDate } = {}) {
645
+ try {
646
+ const params = {
647
+ beginDate,
648
+ endDate,
649
+ };
650
+ const body = {
651
+ id: crypto.randomUUID(),
652
+ to: 'postmaster@desk.msging.net',
653
+ method: 'get',
654
+ uri: `/analytics/reports/tickets?${encodeBlipParams(params)}`,
655
+ };
656
+ const response = await this.api.post('/commands', body);
657
+ validateResponse(response);
658
+ return response.data.resource.items;
659
+ }
660
+ catch (error) {
661
+ throw handleError(error);
662
+ }
663
+ }
664
+ /**
665
+ * Returns ticket timings metrics. Dates are expected to be in yyyy-mm-dd format.
666
+ */
667
+ async getTicketTimings({ beginDate, endDate } = {}) {
668
+ try {
669
+ const params = {
670
+ beginDate,
671
+ endDate,
672
+ };
673
+ const body = {
674
+ id: crypto.randomUUID(),
675
+ to: 'postmaster@desk.msging.net',
676
+ method: 'get',
677
+ uri: ['/analytics/reports/timings', encodeBlipParams(params)].filter((p) => p).join('?'),
678
+ };
679
+ const response = await this.api.post('/commands', body);
680
+ validateResponse(response);
681
+ return response.data.resource;
682
+ }
683
+ catch (error) {
684
+ throw handleError(error);
685
+ }
686
+ }
687
+ }
688
+
636
689
  class Blip {
637
690
  api;
638
691
  bucket;
@@ -646,6 +699,7 @@ class Blip {
646
699
  ticket;
647
700
  whatsapp;
648
701
  monitoring;
702
+ analytics;
649
703
  constructor(params) {
650
704
  validateInstance(params);
651
705
  this.api = axios.create({
@@ -666,6 +720,7 @@ class Blip {
666
720
  this.ticket = new BlipTicket({ api: this.api });
667
721
  this.whatsapp = new BlipWhatsapp({ api: this.api });
668
722
  this.monitoring = new BlipMonitoring({ api: this.api });
723
+ this.analytics = new BlipAnalytics({ api: this.api });
669
724
  }
670
725
  }
671
726
 
package/dist/index.mjs CHANGED
@@ -631,6 +631,59 @@ class BlipMonitoring {
631
631
  }
632
632
  }
633
633
 
634
+ class BlipAnalytics {
635
+ api;
636
+ constructor(context) {
637
+ this.api = context.api;
638
+ }
639
+ /**
640
+ * Returns a list of reports by day with tickets status. Ommiting dates will return only the last report. Dates are expected to be in yyyy-mm-dd format.
641
+ */
642
+ async getTicketReports({ beginDate, endDate } = {}) {
643
+ try {
644
+ const params = {
645
+ beginDate,
646
+ endDate,
647
+ };
648
+ const body = {
649
+ id: randomUUID(),
650
+ to: 'postmaster@desk.msging.net',
651
+ method: 'get',
652
+ uri: `/analytics/reports/tickets?${encodeBlipParams(params)}`,
653
+ };
654
+ const response = await this.api.post('/commands', body);
655
+ validateResponse(response);
656
+ return response.data.resource.items;
657
+ }
658
+ catch (error) {
659
+ throw handleError(error);
660
+ }
661
+ }
662
+ /**
663
+ * Returns ticket timings metrics. Dates are expected to be in yyyy-mm-dd format.
664
+ */
665
+ async getTicketTimings({ beginDate, endDate } = {}) {
666
+ try {
667
+ const params = {
668
+ beginDate,
669
+ endDate,
670
+ };
671
+ const body = {
672
+ id: randomUUID(),
673
+ to: 'postmaster@desk.msging.net',
674
+ method: 'get',
675
+ uri: ['/analytics/reports/timings', encodeBlipParams(params)].filter((p) => p).join('?'),
676
+ };
677
+ const response = await this.api.post('/commands', body);
678
+ validateResponse(response);
679
+ return response.data.resource;
680
+ }
681
+ catch (error) {
682
+ throw handleError(error);
683
+ }
684
+ }
685
+ }
686
+
634
687
  class Blip {
635
688
  api;
636
689
  bucket;
@@ -644,6 +697,7 @@ class Blip {
644
697
  ticket;
645
698
  whatsapp;
646
699
  monitoring;
700
+ analytics;
647
701
  constructor(params) {
648
702
  validateInstance(params);
649
703
  this.api = axios.create({
@@ -664,6 +718,7 @@ class Blip {
664
718
  this.ticket = new BlipTicket({ api: this.api });
665
719
  this.whatsapp = new BlipWhatsapp({ api: this.api });
666
720
  this.monitoring = new BlipMonitoring({ api: this.api });
721
+ this.analytics = new BlipAnalytics({ api: this.api });
667
722
  }
668
723
  }
669
724
 
@@ -0,0 +1,22 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { TicketAnalyticsReport, TicketAnalyticsTimings } from '../types/analytics';
3
+ export default class BlipAnalytics {
4
+ private api;
5
+ constructor(context: {
6
+ api: AxiosInstance;
7
+ });
8
+ /**
9
+ * Returns a list of reports by day with tickets status. Ommiting dates will return only the last report. Dates are expected to be in yyyy-mm-dd format.
10
+ */
11
+ getTicketReports({ beginDate, endDate }?: {
12
+ beginDate?: string;
13
+ endDate?: string;
14
+ }): Promise<TicketAnalyticsReport[]>;
15
+ /**
16
+ * Returns ticket timings metrics. Dates are expected to be in yyyy-mm-dd format.
17
+ */
18
+ getTicketTimings({ beginDate, endDate }?: {
19
+ beginDate?: string;
20
+ endDate?: string;
21
+ }): Promise<TicketAnalyticsTimings>;
22
+ }
@@ -10,6 +10,7 @@ import BlipTicket from './blip-ticket';
10
10
  import BlipWhatsapp from './blip-whatsapp';
11
11
  import BlipContact from './blip-contact';
12
12
  import BlipMonitoring from './blip-monitoring';
13
+ import BlipAnalytics from './blip-analytics';
13
14
  export declare class Blip {
14
15
  private api;
15
16
  bucket: BlipBucket;
@@ -23,5 +24,6 @@ export declare class Blip {
23
24
  ticket: BlipTicket;
24
25
  whatsapp: BlipWhatsapp;
25
26
  monitoring: BlipMonitoring;
27
+ analytics: BlipAnalytics;
26
28
  constructor(params: BlipConstructor);
27
29
  }
@@ -5,7 +5,7 @@ export default class BlipMonitoring {
5
5
  constructor(context: {
6
6
  api: AxiosInstance;
7
7
  });
8
- getTickets(): Promise<MonitoredTickets[]>;
9
- getTicketMetrics(): Promise<MonitoredTicketMetrics[]>;
10
- getAttendantStatusMetrics(): Promise<MonitoredAttendantStatusMetrics[]>;
8
+ getTickets(): Promise<MonitoredTickets>;
9
+ getTicketMetrics(): Promise<MonitoredTicketMetrics>;
10
+ getAttendantStatusMetrics(): Promise<MonitoredAttendantStatusMetrics>;
11
11
  }
@@ -0,0 +1,21 @@
1
+ export interface TicketAnalyticsReport {
2
+ date: string;
3
+ waiting: number;
4
+ open: number;
5
+ closed: number;
6
+ closedAttendant: number;
7
+ closedClient: number;
8
+ transferred: number;
9
+ missed: number;
10
+ inAttendance: number;
11
+ }
12
+ export interface TicketAnalyticsTimings {
13
+ maxQueueTime: string;
14
+ maxFirstResponseTime: string;
15
+ maxWithoutFirstResponseTime: string;
16
+ avgQueueTime: string;
17
+ avgFirstResponseTime: string;
18
+ avgWaitTime: string;
19
+ avgResponseTime: string;
20
+ avgAttendanceTime: string;
21
+ }
@@ -4,4 +4,6 @@ import { BlipRequestBody, BlipResponse, BlipArrayBody } from './blip';
4
4
  import { Parameter, Component, Template } from './template';
5
5
  import { TicketSearchResult } from './ticket-search-result';
6
6
  import { Ticket } from './ticket';
7
- export { AttendanceHourContainer, BlipConstructor, BlipRequestBody, BlipResponse, BlipArrayBody, Parameter, Component, Template, TicketSearchResult, Ticket, };
7
+ import { MonitoredTickets, MonitoredTicketMetrics, MonitoredAttendantStatusMetrics } from './monitoring';
8
+ import { TicketAnalyticsReport, TicketAnalyticsTimings } from './analytics';
9
+ export { AttendanceHourContainer, BlipConstructor, BlipRequestBody, BlipResponse, BlipArrayBody, Parameter, Component, Template, TicketAnalyticsReport, MonitoredTickets, MonitoredTicketMetrics, MonitoredAttendantStatusMetrics, TicketSearchResult, TicketAnalyticsTimings, Ticket, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dawntech/blip-tools",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Node package for Blip API",
5
5
  "exports": {
6
6
  ".": {