@botonic/core 0.55.1 → 0.57.0-rslib-esm.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.
Files changed (131) hide show
  1. package/lib/esm/constants.js +7 -7
  2. package/lib/esm/constants.js.map +1 -1
  3. package/lib/esm/core-bot.d.ts +3 -3
  4. package/lib/esm/core-bot.js +87 -50
  5. package/lib/esm/core-bot.js.map +1 -1
  6. package/lib/esm/debug/index.d.ts +1 -1
  7. package/lib/esm/debug/index.js +5 -4
  8. package/lib/esm/debug/index.js.map +1 -1
  9. package/lib/esm/debug/inspector.d.ts +1 -1
  10. package/lib/esm/debug/inspector.js +27 -21
  11. package/lib/esm/debug/inspector.js.map +1 -1
  12. package/lib/esm/handoff.d.ts +1 -1
  13. package/lib/esm/handoff.js +82 -53
  14. package/lib/esm/handoff.js.map +1 -1
  15. package/lib/esm/hubtype-service.d.ts +3 -3
  16. package/lib/esm/hubtype-service.js +100 -64
  17. package/lib/esm/hubtype-service.js.map +1 -1
  18. package/lib/esm/index.d.ts +9 -9
  19. package/lib/esm/index.js +21 -12
  20. package/lib/esm/index.js.map +1 -1
  21. package/lib/esm/models/ai-agents.js +15 -15
  22. package/lib/esm/models/ai-agents.js.map +1 -1
  23. package/lib/esm/models/bot-config.js +6 -6
  24. package/lib/esm/models/bot-config.js.map +1 -1
  25. package/lib/esm/models/hubtype-analytics.d.ts +1 -1
  26. package/lib/esm/models/hubtype-analytics.js +10 -10
  27. package/lib/esm/models/hubtype-analytics.js.map +1 -1
  28. package/lib/esm/models/index.d.ts +4 -4
  29. package/lib/esm/models/index.js +11 -7
  30. package/lib/esm/models/index.js.map +1 -1
  31. package/lib/esm/models/legacy-types.d.ts +3 -1
  32. package/lib/esm/models/legacy-types.js +25 -24
  33. package/lib/esm/models/legacy-types.js.map +1 -1
  34. package/lib/esm/package.json +3 -0
  35. package/lib/esm/plugins.d.ts +1 -1
  36. package/lib/esm/plugins.js +7 -8
  37. package/lib/esm/plugins.js.map +1 -1
  38. package/lib/esm/pusher-utils.js +15 -10
  39. package/lib/esm/pusher-utils.js.map +1 -1
  40. package/lib/esm/routing/index.d.ts +2 -2
  41. package/lib/esm/routing/index.js +7 -5
  42. package/lib/esm/routing/index.js.map +1 -1
  43. package/lib/esm/routing/router-utils.d.ts +1 -1
  44. package/lib/esm/routing/router-utils.js +37 -30
  45. package/lib/esm/routing/router-utils.js.map +1 -1
  46. package/lib/esm/routing/router.d.ts +2 -2
  47. package/lib/esm/routing/router.js +152 -149
  48. package/lib/esm/routing/router.js.map +1 -1
  49. package/lib/esm/testing/index.d.ts +1 -1
  50. package/lib/esm/testing/index.js +60 -94
  51. package/lib/esm/testing/index.js.map +1 -1
  52. package/lib/esm/utils/bot-config.d.ts +1 -1
  53. package/lib/esm/utils/bot-config.js +57 -28
  54. package/lib/esm/utils/bot-config.js.map +1 -1
  55. package/lib/esm/utils/check-providers.d.ts +1 -1
  56. package/lib/esm/utils/check-providers.js +14 -17
  57. package/lib/esm/utils/check-providers.js.map +1 -1
  58. package/lib/esm/utils/functional.js +19 -38
  59. package/lib/esm/utils/functional.js.map +1 -1
  60. package/lib/esm/utils/index.d.ts +3 -3
  61. package/lib/esm/utils/index.js +9 -6
  62. package/lib/esm/utils/index.js.map +1 -1
  63. package/package.json +12 -11
  64. package/src/hubtype-service.ts +4 -2
  65. package/src/models/legacy-types.ts +3 -0
  66. package/lib/cjs/constants.d.ts +0 -4
  67. package/lib/cjs/constants.js +0 -8
  68. package/lib/cjs/constants.js.map +0 -1
  69. package/lib/cjs/core-bot.d.ts +0 -43
  70. package/lib/cjs/core-bot.js +0 -205
  71. package/lib/cjs/core-bot.js.map +0 -1
  72. package/lib/cjs/debug/index.d.ts +0 -1
  73. package/lib/cjs/debug/index.js +0 -5
  74. package/lib/cjs/debug/index.js.map +0 -1
  75. package/lib/cjs/debug/inspector.d.ts +0 -24
  76. package/lib/cjs/debug/inspector.js +0 -70
  77. package/lib/cjs/debug/inspector.js.map +0 -1
  78. package/lib/cjs/handoff.d.ts +0 -110
  79. package/lib/cjs/handoff.js +0 -238
  80. package/lib/cjs/handoff.js.map +0 -1
  81. package/lib/cjs/hubtype-service.d.ts +0 -58
  82. package/lib/cjs/hubtype-service.js +0 -205
  83. package/lib/cjs/hubtype-service.js.map +0 -1
  84. package/lib/cjs/index.d.ts +0 -9
  85. package/lib/cjs/index.js +0 -13
  86. package/lib/cjs/index.js.map +0 -1
  87. package/lib/cjs/models/ai-agents.d.ts +0 -140
  88. package/lib/cjs/models/ai-agents.js +0 -30
  89. package/lib/cjs/models/ai-agents.js.map +0 -1
  90. package/lib/cjs/models/bot-config.d.ts +0 -24
  91. package/lib/cjs/models/bot-config.js +0 -10
  92. package/lib/cjs/models/bot-config.js.map +0 -1
  93. package/lib/cjs/models/hubtype-analytics.d.ts +0 -210
  94. package/lib/cjs/models/hubtype-analytics.js +0 -38
  95. package/lib/cjs/models/hubtype-analytics.js.map +0 -1
  96. package/lib/cjs/models/index.d.ts +0 -4
  97. package/lib/cjs/models/index.js +0 -8
  98. package/lib/cjs/models/index.js.map +0 -1
  99. package/lib/cjs/models/legacy-types.d.ts +0 -330
  100. package/lib/cjs/models/legacy-types.js +0 -83
  101. package/lib/cjs/models/legacy-types.js.map +0 -1
  102. package/lib/cjs/plugins.d.ts +0 -9
  103. package/lib/cjs/plugins.js +0 -24
  104. package/lib/cjs/plugins.js.map +0 -1
  105. package/lib/cjs/pusher-utils.d.ts +0 -7
  106. package/lib/cjs/pusher-utils.js +0 -18
  107. package/lib/cjs/pusher-utils.js.map +0 -1
  108. package/lib/cjs/routing/index.d.ts +0 -2
  109. package/lib/cjs/routing/index.js +0 -6
  110. package/lib/cjs/routing/index.js.map +0 -1
  111. package/lib/cjs/routing/router-utils.d.ts +0 -11
  112. package/lib/cjs/routing/router-utils.js +0 -96
  113. package/lib/cjs/routing/router-utils.js.map +0 -1
  114. package/lib/cjs/routing/router.d.ts +0 -54
  115. package/lib/cjs/routing/router.js +0 -330
  116. package/lib/cjs/routing/router.js.map +0 -1
  117. package/lib/cjs/testing/index.d.ts +0 -91
  118. package/lib/cjs/testing/index.js +0 -196
  119. package/lib/cjs/testing/index.js.map +0 -1
  120. package/lib/cjs/utils/bot-config.d.ts +0 -4
  121. package/lib/cjs/utils/bot-config.js +0 -94
  122. package/lib/cjs/utils/bot-config.js.map +0 -1
  123. package/lib/cjs/utils/check-providers.d.ts +0 -8
  124. package/lib/cjs/utils/check-providers.js +0 -34
  125. package/lib/cjs/utils/check-providers.js.map +0 -1
  126. package/lib/cjs/utils/functional.d.ts +0 -10
  127. package/lib/cjs/utils/functional.js +0 -88
  128. package/lib/cjs/utils/functional.js.map +0 -1
  129. package/lib/cjs/utils/index.d.ts +0 -3
  130. package/lib/cjs/utils/index.js +0 -7
  131. package/lib/cjs/utils/index.js.map +0 -1
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Inspector = exports.LogRouteInspector = exports.FocusRouteInspector = exports.RouteInspector = void 0;
4
- class RouteInspector {
5
- routeMatched(_route, _routeKey, _routeValue, _input) { }
6
- routeNotMatched(_route, _routeKey, _routeValue, _input) { }
7
- }
8
- exports.RouteInspector = RouteInspector;
9
- class FocusRouteInspector extends RouteInspector {
10
- constructor() {
11
- super();
12
- this.focusRoutePaths = null;
13
- this.focusOnMatches = false;
14
- }
15
- focusOnlyOnRoutes(focusRoutePaths) {
16
- this.focusRoutePaths = focusRoutePaths;
17
- return this;
18
- }
19
- focusOnlyOnMatches() {
20
- this.focusOnMatches = true;
21
- return this;
22
- }
23
- _isOnFocus(route) {
24
- if (this.focusRoutePaths === null) {
25
- return true;
26
- }
27
- return this.focusRoutePaths.includes(route.path);
28
- }
29
- }
30
- exports.FocusRouteInspector = FocusRouteInspector;
31
- class LogRouteInspector extends FocusRouteInspector {
32
- routeMatched(route, routeKey, routeValue, inputValue) {
33
- if (!this._isOnFocus(route)) {
34
- return;
35
- }
36
- this._log(`Route ${this._routeName(route)} selected ` +
37
- `because Input.${routeKey} (${inputValue}) matched '${routeValue}'`);
38
- }
39
- routeNotMatched(route, routeKey, routeValue, inputValue) {
40
- if (!this._isOnFocus(route) || this.focusOnMatches) {
41
- return;
42
- }
43
- this._log(`Route ${this._routeName(route)} not selected ` +
44
- `because Input.${routeKey} (${inputValue}) did not match '${routeValue}'`);
45
- }
46
- _routeName(obj) {
47
- let name = obj.path || '<<no path defined>>';
48
- if (obj.action) {
49
- name = `'${name}' (to action '${obj.action.name}')`;
50
- }
51
- if (obj.redirect) {
52
- name = `'${name}' (with redirect to '${obj.redirect}')`;
53
- }
54
- return name;
55
- }
56
- _log(message, ...optionalParams) {
57
- console.log(message, ...optionalParams);
58
- }
59
- }
60
- exports.LogRouteInspector = LogRouteInspector;
61
- class Inspector {
62
- constructor(routeInspector = undefined) {
63
- this.routeInspector = routeInspector || new RouteInspector();
64
- }
65
- getRouteInspector() {
66
- return this.routeInspector;
67
- }
68
- }
69
- exports.Inspector = Inspector;
70
- //# sourceMappingURL=inspector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../../src/debug/inspector.ts"],"names":[],"mappings":";;;AACA,MAAa,cAAc;IACzB,YAAY,CACV,MAAa,EACb,SAAiB,EACjB,WAAyB,EACzB,MAAW,IACJ,CAAC;IACV,eAAe,CACb,MAAa,EACb,SAAiB,EACjB,WAAyB,EACzB,MAAW,IACJ,CAAC;CACX;AAbD,wCAaC;AAED,MAAa,mBAAoB,SAAQ,cAAc;IAGrD;QACE,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;IAC7B,CAAC;IAED,iBAAiB,CAAC,eAAyB;QACzC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,KAAY;QACrB,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAClC,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAc,CAAC,CAAA;IAC5D,CAAC;CACF;AAzBD,kDAyBC;AAED,MAAa,iBAAkB,SAAQ,mBAAmB;IAC/C,YAAY,CACnB,KAAY,EACZ,QAAgB,EAChB,UAAwB,EACxB,UAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAM;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CACP,SAAS,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY;YACzC,iBAAiB,QAAQ,KAAK,UAAU,cAAc,UAAU,GAAG,CACtE,CAAA;IACH,CAAC;IAEQ,eAAe,CACtB,KAAY,EACZ,QAAgB,EAChB,UAAwB,EACxB,UAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACnD,OAAM;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CACP,SAAS,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB;YAC7C,iBAAiB,QAAQ,KAAK,UAAU,oBAAoB,UAAU,GAAG,CAC5E,CAAA;IACH,CAAC;IAED,UAAU,CAAC,GAAU;QACnB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,qBAAqB,CAAA;QAC5C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,GAAG,IAAI,IAAI,iBAAiB,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA;QACrD,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,GAAG,IAAI,IAAI,wBAAwB,GAAG,CAAC,QAAQ,IAAI,CAAA;QACzD,CAAC;QACD,OAAO,IAAc,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,cAAwB;QAC/C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAA;IACzC,CAAC;CACF;AA7CD,8CA6CC;AAED,MAAa,SAAS;IAEpB,YAAY,iBAA6C,SAAS;QAChE,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,cAAc,EAAE,CAAA;IAC9D,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;CACF;AATD,8BASC"}
@@ -1,110 +0,0 @@
1
- import { type Session } from './models';
2
- export interface HubtypeAgentsInfo {
3
- attending_count: number;
4
- email: string;
5
- idle_count: number;
6
- last_message_sent: string;
7
- status: string;
8
- }
9
- export interface BackendContext {
10
- timeoutMs: number;
11
- }
12
- export interface VacationRange {
13
- end_date: number;
14
- id: number;
15
- start_date: number;
16
- }
17
- export type HandoffExtraData = {
18
- language?: string;
19
- url?: string;
20
- location?: string;
21
- };
22
- export interface BotEventData {
23
- flowId: string;
24
- flowName: string;
25
- flowNodeId: string;
26
- flowNodeContentId: string;
27
- }
28
- export interface FormattedBotEventData {
29
- format_version: number;
30
- flow_id: string;
31
- flow_name: string;
32
- flow_node_id: string;
33
- flow_node_content_id: string;
34
- }
35
- export declare enum HelpdeskEvent {
36
- StatusChanged = "status_changed",
37
- AgentMessageCreated = "agent_message_created",
38
- QueuePositionChanged = "queue_position_changed"
39
- }
40
- export declare function getOpenQueues(session: Session, context?: {}): Promise<{
41
- queues: string[];
42
- }>;
43
- export declare class HandOffBuilder {
44
- _session: Session;
45
- _queue: string;
46
- _onFinish: string;
47
- _email: string;
48
- _agentId: string;
49
- _forceAssignIfNotAvailable: boolean;
50
- _autoAssignOnWaiting: boolean;
51
- _note: string;
52
- _caseInfo: string;
53
- _autoIdleMessage: string;
54
- _shadowing: boolean;
55
- _extraData: HandoffExtraData;
56
- _bot_event: FormattedBotEventData;
57
- _subscribeHelpdeskEvents: HelpdeskEvent[];
58
- constructor(session: Session);
59
- withQueue(queueNameOrId: string): this;
60
- withOnFinishPayload(payload: string): this;
61
- withOnFinishPath(path: string): this;
62
- withAgentEmail(email: string): this;
63
- withAgentId(agentId: string): this;
64
- withForceAssignIfNotAvailable(forceAssign: boolean): this;
65
- withAutoAssignOnWaiting(autoAssignOnWaiting: boolean): this;
66
- withNote(note: string): this;
67
- withCaseInfo(caseInfo: string): this;
68
- withAutoIdleMessage(message: string): this;
69
- withShadowing(shadowing?: boolean): this;
70
- withExtraData(extraData: HandoffExtraData): this;
71
- withBotEvent(botEvent: BotEventData): this;
72
- withSubscribeHelpdeskEvents(events: HelpdeskEvent[]): this;
73
- handOff(): Promise<void>;
74
- }
75
- /**
76
- * @deprecated use {@link HandOffBuilder} class instead
77
- */
78
- export declare function humanHandOff(session: any, queueNameOrId: string | undefined, onFinish: any): Promise<void>;
79
- export interface HubtypeHandoffParams {
80
- queue?: string;
81
- agent_email?: string;
82
- agent_id?: string;
83
- force_assign_if_not_available?: boolean;
84
- auto_assign_on_waiting?: boolean;
85
- case_info?: string;
86
- note?: string;
87
- auto_idle_message?: string;
88
- shadowing?: boolean;
89
- on_finish?: string;
90
- case_extra_data?: HandoffExtraData;
91
- bot_event?: FormattedBotEventData;
92
- subscribe_helpdesk_events?: HelpdeskEvent[];
93
- }
94
- export declare function storeCaseRating(session: Session, rating: number, context?: any): Promise<{
95
- status: string;
96
- }>;
97
- export declare function getAvailableAgentsByQueue(session: Session, queueId: string): Promise<{
98
- agents: string[];
99
- }>;
100
- export declare function getAvailableAgents(session: Session): Promise<{
101
- agents: HubtypeAgentsInfo[];
102
- }>;
103
- export declare function getAgentVacationRanges(session: Session, { agentId, agentEmail }: {
104
- agentId?: string;
105
- agentEmail?: string;
106
- }): Promise<{
107
- vacation_ranges: VacationRange[];
108
- }>;
109
- export declare function cancelHandoff(session: Session, typification?: string | null): void;
110
- export declare function deleteUser(session: Session): void;
@@ -1,238 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HandOffBuilder = exports.HelpdeskEvent = void 0;
4
- exports.getOpenQueues = getOpenQueues;
5
- exports.humanHandOff = humanHandOff;
6
- exports.storeCaseRating = storeCaseRating;
7
- exports.getAvailableAgentsByQueue = getAvailableAgentsByQueue;
8
- exports.getAvailableAgents = getAvailableAgents;
9
- exports.getAgentVacationRanges = getAgentVacationRanges;
10
- exports.cancelHandoff = cancelHandoff;
11
- exports.deleteUser = deleteUser;
12
- const tslib_1 = require("tslib");
13
- const axios_1 = tslib_1.__importDefault(require("axios"));
14
- const constants_1 = require("./constants");
15
- const models_1 = require("./models");
16
- const HUBTYPE_API_URL = 'https://api.hubtype.com';
17
- var HelpdeskEvent;
18
- (function (HelpdeskEvent) {
19
- HelpdeskEvent["StatusChanged"] = "status_changed";
20
- HelpdeskEvent["AgentMessageCreated"] = "agent_message_created";
21
- HelpdeskEvent["QueuePositionChanged"] = "queue_position_changed";
22
- })(HelpdeskEvent || (exports.HelpdeskEvent = HelpdeskEvent = {}));
23
- function contextDefaults(context) {
24
- return {
25
- timeoutMs: context.timeoutMs || 10000,
26
- };
27
- }
28
- async function getOpenQueues(session, context = {}) {
29
- //be aware of https://github.com/axios/axios/issues/1543
30
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
31
- const endpointUrl = `${baseUrl}/v1/queues/get_open_queues/`;
32
- context = contextDefaults(context);
33
- const resp = await (0, axios_1.default)({
34
- headers: {
35
- Authorization: `Bearer ${session._access_token}`,
36
- },
37
- method: 'post',
38
- url: endpointUrl,
39
- data: { bot_id: session.bot.id },
40
- timeout: context.timeoutMs,
41
- });
42
- return resp.data;
43
- }
44
- class HandOffBuilder {
45
- constructor(session) {
46
- this._session = session;
47
- }
48
- withQueue(queueNameOrId) {
49
- this._queue = queueNameOrId;
50
- return this;
51
- }
52
- withOnFinishPayload(payload) {
53
- this._onFinish = payload;
54
- return this;
55
- }
56
- withOnFinishPath(path) {
57
- this._onFinish = `${constants_1.PATH_PAYLOAD_IDENTIFIER}${path}`;
58
- return this;
59
- }
60
- withAgentEmail(email) {
61
- this._email = email;
62
- return this;
63
- }
64
- withAgentId(agentId) {
65
- this._agentId = agentId;
66
- return this;
67
- }
68
- withForceAssignIfNotAvailable(forceAssign) {
69
- this._forceAssignIfNotAvailable = forceAssign;
70
- return this;
71
- }
72
- withAutoAssignOnWaiting(autoAssignOnWaiting) {
73
- this._autoAssignOnWaiting = autoAssignOnWaiting;
74
- return this;
75
- }
76
- withNote(note) {
77
- this._note = note;
78
- return this;
79
- }
80
- withCaseInfo(caseInfo) {
81
- this._caseInfo = caseInfo;
82
- return this;
83
- }
84
- withAutoIdleMessage(message) {
85
- this._autoIdleMessage = message;
86
- return this;
87
- }
88
- withShadowing(shadowing = true) {
89
- this._shadowing = shadowing;
90
- return this;
91
- }
92
- withExtraData(extraData) {
93
- this._extraData = extraData;
94
- return this;
95
- }
96
- withBotEvent(botEvent) {
97
- this._bot_event = {
98
- format_version: models_1.EVENT_FORMAT_VERSION,
99
- flow_id: botEvent.flowId,
100
- flow_name: botEvent.flowName,
101
- flow_node_id: botEvent.flowNodeId,
102
- flow_node_content_id: botEvent.flowNodeContentId,
103
- };
104
- return this;
105
- }
106
- withSubscribeHelpdeskEvents(events) {
107
- this._subscribeHelpdeskEvents = events;
108
- return this;
109
- }
110
- async handOff() {
111
- return _humanHandOff(this._session, this._queue, this._onFinish, this._email, this._agentId, this._forceAssignIfNotAvailable, this._autoAssignOnWaiting, this._caseInfo, this._note, this._autoIdleMessage, this._shadowing, this._extraData, this._bot_event, this._subscribeHelpdeskEvents);
112
- }
113
- }
114
- exports.HandOffBuilder = HandOffBuilder;
115
- /**
116
- * @deprecated use {@link HandOffBuilder} class instead
117
- */
118
- async function humanHandOff(session, queueNameOrId = '', onFinish) {
119
- const builder = new HandOffBuilder(session);
120
- if (queueNameOrId) {
121
- builder.withQueue(queueNameOrId);
122
- }
123
- if (onFinish) {
124
- if (onFinish.path) {
125
- builder.withOnFinishPath(onFinish.path);
126
- }
127
- else if (onFinish.payload) {
128
- builder.withOnFinishPayload(onFinish.payload);
129
- }
130
- else {
131
- throw new Error('onFinish requires payload or path field');
132
- }
133
- }
134
- return builder.handOff();
135
- }
136
- async function _humanHandOff(session, queueNameOrId = '', onFinish, agentEmail = '', agentId = '', forceAssignIfNotAvailable = true, autoAssignOnWaiting = false, caseInfo = '', note = '', autoIdleMessage = '', shadowing = false, extraData = undefined, botEvent, subscribeHelpdeskEvents = []) {
137
- const params = {};
138
- params.force_assign_if_not_available = forceAssignIfNotAvailable;
139
- if (queueNameOrId) {
140
- params.queue = queueNameOrId;
141
- }
142
- if (agentEmail) {
143
- params.agent_email = agentEmail;
144
- }
145
- if (agentId) {
146
- params.agent_id = agentId;
147
- }
148
- if (autoAssignOnWaiting) {
149
- params.auto_assign_on_waiting = autoAssignOnWaiting;
150
- }
151
- if (caseInfo) {
152
- params.case_info = caseInfo;
153
- }
154
- if (note) {
155
- params.note = note;
156
- }
157
- if (autoIdleMessage) {
158
- params.auto_idle_message = autoIdleMessage;
159
- }
160
- if (shadowing) {
161
- params.shadowing = shadowing;
162
- }
163
- if (onFinish) {
164
- params.on_finish = onFinish;
165
- }
166
- if (extraData) {
167
- params.case_extra_data = extraData;
168
- }
169
- if (botEvent) {
170
- params.bot_event = botEvent;
171
- }
172
- if (subscribeHelpdeskEvents.length > 0) {
173
- params.subscribe_helpdesk_events = subscribeHelpdeskEvents;
174
- }
175
- session._botonic_action = `${models_1.BotonicAction.CreateCase}:${JSON.stringify(params)}`;
176
- }
177
- async function storeCaseRating(session, rating, context = {}) {
178
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
179
- const chatId = session.user.id;
180
- context = contextDefaults(context);
181
- const resp = await (0, axios_1.default)({
182
- headers: {
183
- Authorization: `Bearer ${session._access_token}`,
184
- },
185
- method: 'post',
186
- url: `${baseUrl}/v1/chats/${chatId}/store_case_rating/`,
187
- data: { chat_id: chatId, rating },
188
- timeout: context.timeoutMs,
189
- });
190
- return resp.data;
191
- }
192
- async function getAvailableAgentsByQueue(session, queueId) {
193
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
194
- const resp = await (0, axios_1.default)({
195
- headers: {
196
- Authorization: `Bearer ${session._access_token}`,
197
- },
198
- method: 'post',
199
- url: `${baseUrl}/v1/queues/${queueId}/get_available_agents/`,
200
- });
201
- return resp.data;
202
- }
203
- async function getAvailableAgents(session) {
204
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
205
- const botId = session.bot.id;
206
- const resp = await (0, axios_1.default)({
207
- headers: {
208
- Authorization: `Bearer ${session._access_token}`,
209
- },
210
- method: 'post',
211
- url: `${baseUrl}/v1/bots/${botId}/get_agents/`,
212
- });
213
- return resp.data;
214
- }
215
- async function getAgentVacationRanges(session, { agentId, agentEmail }) {
216
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
217
- const botId = session.bot.id;
218
- const resp = await (0, axios_1.default)({
219
- headers: {
220
- Authorization: `Bearer ${session._access_token}`,
221
- },
222
- method: 'get',
223
- url: `${baseUrl}/v1/bots/${botId}/get_agent_vacation_ranges/`,
224
- params: { agent_id: agentId, agent_email: agentEmail },
225
- });
226
- return resp.data;
227
- }
228
- function cancelHandoff(session, typification = null) {
229
- let action = models_1.BotonicAction.DiscardCase;
230
- if (typification) {
231
- action = `${action}:${JSON.stringify({ typification })}`;
232
- }
233
- session._botonic_action = action;
234
- }
235
- function deleteUser(session) {
236
- session._botonic_action = models_1.BotonicAction.DeleteUser;
237
- }
238
- //# sourceMappingURL=handoff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/handoff.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- import { type AxiosResponse } from 'axios';
2
- import Pusher, { type Channel } from 'pusher-js';
3
- import type { Input, SessionUser } from './models';
4
- interface UnsentInput {
5
- id: string;
6
- ack: number;
7
- unsentInput: Input;
8
- }
9
- interface BotonicHeaders {
10
- 'X-BOTONIC-USER-ID': string;
11
- 'X-BOTONIC-LAST-MESSAGE-ID': string;
12
- 'X-BOTONIC-LAST-MESSAGE-UPDATE-DATE': string;
13
- }
14
- export interface ServerConfig {
15
- activityTimeout?: number;
16
- pongTimeout?: number;
17
- }
18
- interface HubtypeServiceArgs {
19
- appId: string;
20
- user: SessionUser;
21
- lastMessageId?: string;
22
- lastMessageUpdateDate?: string;
23
- onEvent: any;
24
- unsentInputs: () => UnsentInput[];
25
- server?: ServerConfig;
26
- }
27
- /**
28
- * Calls Hubtype APIs from Webchat
29
- */
30
- export declare class HubtypeService {
31
- appId: string;
32
- user: SessionUser;
33
- lastMessageId?: string;
34
- lastMessageUpdateDate?: string;
35
- onEvent: (event: any) => void;
36
- unsentInputs: () => UnsentInput[];
37
- pusher: Pusher | null;
38
- channel: Channel;
39
- server?: ServerConfig;
40
- PUSHER_CONNECT_TIMEOUT_MS: number;
41
- constructor({ appId, user, lastMessageId, lastMessageUpdateDate, onEvent, unsentInputs, server, }: HubtypeServiceArgs);
42
- init(user?: SessionUser, lastMessageId?: string, lastMessageUpdateDate?: string): Promise<void>;
43
- _initPusher(): Promise<void>;
44
- constructHeaders(): BotonicHeaders;
45
- resolveServerConfig(): ServerConfig;
46
- updateAuthHeaders(): void;
47
- handleConnectionChange(online: boolean): void;
48
- onPusherEvent(event: any): void;
49
- get pusherChannel(): string;
50
- handleSentInput(message: any): void;
51
- handleUnsentInput(message: any): void;
52
- postMessage(user: SessionUser, message: any): Promise<void>;
53
- static getWebchatVisibility(appId: string): Promise<AxiosResponse<any>>;
54
- destroyPusher(): void;
55
- onConnectionRegained(): Promise<void>;
56
- resendUnsentInputs(): Promise<void>;
57
- }
58
- export {};