@botonic/plugin-flow-builder 0.24.2 → 0.24.3-alpha.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/lib/cjs/content-fields/hubtype-fields/function.d.ts +3 -1
- package/lib/cjs/content-fields/hubtype-fields/function.js +1 -0
- package/lib/cjs/content-fields/hubtype-fields/function.js.map +1 -1
- package/lib/cjs/functions/conditional-queue-status.d.ts +8 -2
- package/lib/cjs/functions/conditional-queue-status.js +14 -6
- package/lib/cjs/functions/conditional-queue-status.js.map +1 -1
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.js +18 -3
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/content-fields/hubtype-fields/function.d.ts +3 -1
- package/lib/esm/content-fields/hubtype-fields/function.js +1 -0
- package/lib/esm/content-fields/hubtype-fields/function.js.map +1 -1
- package/lib/esm/functions/conditional-queue-status.d.ts +8 -2
- package/lib/esm/functions/conditional-queue-status.js +14 -6
- package/lib/esm/functions/conditional-queue-status.js.map +1 -1
- package/lib/esm/index.d.ts +1 -0
- package/lib/esm/index.js +18 -3
- package/lib/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/src/content-fields/hubtype-fields/function.ts +4 -1
- package/src/functions/conditional-queue-status.ts +17 -6
- package/src/index.ts +29 -4
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HtBaseNode, HtNodeLink } from './common';
|
|
2
2
|
import { HtNodeWithContentType } from './node-types';
|
|
3
3
|
export declare enum HtArgumentType {
|
|
4
|
+
BOOLEAN = "boolean",
|
|
4
5
|
NUMBER = "number",
|
|
5
6
|
STRING = "string",
|
|
6
7
|
JSON = "json"
|
|
@@ -18,11 +19,12 @@ export interface HtFunctionResult {
|
|
|
18
19
|
result: string;
|
|
19
20
|
target?: HtNodeLink;
|
|
20
21
|
}
|
|
22
|
+
export type HtFunctionArguments = HtFunctionArgumentLocale | HtFunctionArgument;
|
|
21
23
|
export interface HtFunctionNode extends HtBaseNode {
|
|
22
24
|
type: HtNodeWithContentType.FUNCTION;
|
|
23
25
|
content: {
|
|
24
26
|
action: string;
|
|
25
|
-
arguments:
|
|
27
|
+
arguments: HtFunctionArguments[];
|
|
26
28
|
result_mapping: HtFunctionResult[];
|
|
27
29
|
};
|
|
28
30
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.HtArgumentType = void 0;
|
|
4
4
|
var HtArgumentType;
|
|
5
5
|
(function (HtArgumentType) {
|
|
6
|
+
HtArgumentType["BOOLEAN"] = "boolean";
|
|
6
7
|
HtArgumentType["NUMBER"] = "number";
|
|
7
8
|
HtArgumentType["STRING"] = "string";
|
|
8
9
|
HtArgumentType["JSON"] = "json";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/function.ts"],"names":[],"mappings":";;;AAGA,IAAY,
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/function.ts"],"names":[],"mappings":";;;AAGA,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,+BAAa,CAAA;AACf,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB"}
|
|
@@ -3,8 +3,14 @@ type ConditionalQueueStatusArgs = {
|
|
|
3
3
|
request: ActionRequest;
|
|
4
4
|
queue_id: string;
|
|
5
5
|
queue_name: string;
|
|
6
|
+
check_available_agents: boolean;
|
|
6
7
|
};
|
|
7
|
-
|
|
8
|
+
declare enum QueueStatusResult {
|
|
9
|
+
open = "open",
|
|
10
|
+
closed = "closed",
|
|
11
|
+
openWithoutAgents = "open-without-agents"
|
|
12
|
+
}
|
|
13
|
+
export declare function conditionalQueueStatus({ queue_id, check_available_agents, }: ConditionalQueueStatusArgs): Promise<QueueStatusResult>;
|
|
8
14
|
interface AvailabilityData {
|
|
9
15
|
available: boolean;
|
|
10
16
|
waiting_cases: number;
|
|
@@ -13,5 +19,5 @@ interface AvailabilityData {
|
|
|
13
19
|
name: string;
|
|
14
20
|
available_agents: number;
|
|
15
21
|
}
|
|
16
|
-
export declare function getQueueAvailability(queueId: string): Promise<AvailabilityData>;
|
|
22
|
+
export declare function getQueueAvailability(queueId: string, check_available_agents?: boolean): Promise<AvailabilityData>;
|
|
17
23
|
export {};
|
|
@@ -4,20 +4,28 @@ exports.getQueueAvailability = exports.conditionalQueueStatus = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const axios_1 = tslib_1.__importDefault(require("axios"));
|
|
6
6
|
const HUBTYPE_API_URL = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
var QueueStatusResult;
|
|
8
|
+
(function (QueueStatusResult) {
|
|
9
|
+
QueueStatusResult["open"] = "open";
|
|
10
|
+
QueueStatusResult["closed"] = "closed";
|
|
11
|
+
QueueStatusResult["openWithoutAgents"] = "open-without-agents";
|
|
12
|
+
})(QueueStatusResult || (QueueStatusResult = {}));
|
|
13
|
+
async function conditionalQueueStatus({ queue_id, check_available_agents, }) {
|
|
14
|
+
const data = await getQueueAvailability(queue_id, check_available_agents);
|
|
15
|
+
if (check_available_agents && data.open && data.available_agents === 0) {
|
|
16
|
+
return QueueStatusResult.openWithoutAgents;
|
|
17
|
+
}
|
|
18
|
+
return data.open ? QueueStatusResult.open : QueueStatusResult.closed;
|
|
11
19
|
}
|
|
12
20
|
exports.conditionalQueueStatus = conditionalQueueStatus;
|
|
13
|
-
async function getQueueAvailability(queueId) {
|
|
21
|
+
async function getQueueAvailability(queueId, check_available_agents = false) {
|
|
14
22
|
const response = await axios_1.default.get(`${HUBTYPE_API_URL}/public/v1/queues/${queueId}/availability/`,
|
|
15
23
|
// TODO: Make it configurable in the future
|
|
16
24
|
{
|
|
17
25
|
params: {
|
|
18
26
|
check_queue_schedule: true,
|
|
19
27
|
check_waiting_cases: false,
|
|
20
|
-
check_available_agents:
|
|
28
|
+
check_available_agents: check_available_agents,
|
|
21
29
|
},
|
|
22
30
|
});
|
|
23
31
|
return response.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":";;;;AACA,0DAAyB;AAEzB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":";;;;AACA,0DAAyB;AAEzB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;AAShF,IAAK,iBAIJ;AAJD,WAAK,iBAAiB;IACpB,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,8DAAyC,CAAA;AAC3C,CAAC,EAJI,iBAAiB,KAAjB,iBAAiB,QAIrB;AAEM,KAAK,UAAU,sBAAsB,CAAC,EAC3C,QAAQ,EACR,sBAAsB,GACK;IAC3B,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;IACzE,IAAI,sBAAsB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE;QACtE,OAAO,iBAAiB,CAAC,iBAAiB,CAAA;KAC3C;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAA;AACtE,CAAC;AATD,wDASC;AAWM,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,sBAAsB,GAAG,KAAK;IAE9B,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,GAAG,eAAe,qBAAqB,OAAO,gBAAgB;IAC9D,2CAA2C;IAC3C;QACE,MAAM,EAAE;YACN,oBAAoB,EAAE,IAAI;YAC1B,mBAAmB,EAAE,KAAK;YAC1B,sBAAsB,EAAE,sBAAsB;SAC/C;KACF,CACF,CAAA;IACD,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAhBD,oDAgBC"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
23
23
|
getContentsByNode(node: HtNodeWithContent, locale: string, prevContents?: FlowContent[]): Promise<FlowContent[]>;
|
|
24
24
|
private getFlowContent;
|
|
25
25
|
callFunction(functionNode: HtFunctionNode, locale: string): Promise<string>;
|
|
26
|
+
private getArgumentsByLocale;
|
|
26
27
|
getPayloadParams<T extends PayloadParamsBase>(payload: string): T;
|
|
27
28
|
}
|
|
28
29
|
export * from './action';
|
package/lib/cjs/index.js
CHANGED
|
@@ -87,10 +87,12 @@ class BotonicPluginFlowBuilder {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
async callFunction(functionNode, locale) {
|
|
90
|
-
var _a;
|
|
91
90
|
const functionNodeId = functionNode.id;
|
|
92
|
-
const
|
|
93
|
-
|
|
91
|
+
const functionArguments = this.getArgumentsByLocale(functionNode.content.arguments, locale);
|
|
92
|
+
const nameValues = functionArguments.map(arg => {
|
|
93
|
+
return { [arg.name]: arg.value };
|
|
94
|
+
});
|
|
95
|
+
console.log('callFunction', { functionArguments, nameValues });
|
|
94
96
|
const args = Object.assign({
|
|
95
97
|
request: this.currentRequest,
|
|
96
98
|
results: functionNode.content.result_mapping.map(r => r.result),
|
|
@@ -103,6 +105,19 @@ class BotonicPluginFlowBuilder {
|
|
|
103
105
|
}
|
|
104
106
|
return result.target.id;
|
|
105
107
|
}
|
|
108
|
+
getArgumentsByLocale(args, locale) {
|
|
109
|
+
console.log('getArgumentsByLocale', args);
|
|
110
|
+
let resultArguments = [];
|
|
111
|
+
for (const arg of args) {
|
|
112
|
+
if ('locale' in arg && arg.locale === locale) {
|
|
113
|
+
resultArguments = [...resultArguments, ...arg.values];
|
|
114
|
+
}
|
|
115
|
+
if ('type' in arg) {
|
|
116
|
+
resultArguments = [...resultArguments, arg];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return resultArguments;
|
|
120
|
+
}
|
|
106
121
|
getPayloadParams(payload) {
|
|
107
122
|
const payloadParams = JSON.parse(payload.split(constants_1.SEPARATOR)[1] || '{}');
|
|
108
123
|
return payloadParams;
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAGA,oDAAwD;AACxD,+BAAsC;AACtC,2CAA8D;AAC9D,qDAQyB;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HtBaseNode, HtNodeLink } from './common';
|
|
2
2
|
import { HtNodeWithContentType } from './node-types';
|
|
3
3
|
export declare enum HtArgumentType {
|
|
4
|
+
BOOLEAN = "boolean",
|
|
4
5
|
NUMBER = "number",
|
|
5
6
|
STRING = "string",
|
|
6
7
|
JSON = "json"
|
|
@@ -18,11 +19,12 @@ export interface HtFunctionResult {
|
|
|
18
19
|
result: string;
|
|
19
20
|
target?: HtNodeLink;
|
|
20
21
|
}
|
|
22
|
+
export type HtFunctionArguments = HtFunctionArgumentLocale | HtFunctionArgument;
|
|
21
23
|
export interface HtFunctionNode extends HtBaseNode {
|
|
22
24
|
type: HtNodeWithContentType.FUNCTION;
|
|
23
25
|
content: {
|
|
24
26
|
action: string;
|
|
25
|
-
arguments:
|
|
27
|
+
arguments: HtFunctionArguments[];
|
|
26
28
|
result_mapping: HtFunctionResult[];
|
|
27
29
|
};
|
|
28
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/function.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../../../src/content-fields/hubtype-fields/function.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,+BAAa,CAAA;AACf,CAAC,EALW,cAAc,KAAd,cAAc,QAKzB"}
|
|
@@ -3,8 +3,14 @@ type ConditionalQueueStatusArgs = {
|
|
|
3
3
|
request: ActionRequest;
|
|
4
4
|
queue_id: string;
|
|
5
5
|
queue_name: string;
|
|
6
|
+
check_available_agents: boolean;
|
|
6
7
|
};
|
|
7
|
-
|
|
8
|
+
declare enum QueueStatusResult {
|
|
9
|
+
open = "open",
|
|
10
|
+
closed = "closed",
|
|
11
|
+
openWithoutAgents = "open-without-agents"
|
|
12
|
+
}
|
|
13
|
+
export declare function conditionalQueueStatus({ queue_id, check_available_agents, }: ConditionalQueueStatusArgs): Promise<QueueStatusResult>;
|
|
8
14
|
interface AvailabilityData {
|
|
9
15
|
available: boolean;
|
|
10
16
|
waiting_cases: number;
|
|
@@ -13,5 +19,5 @@ interface AvailabilityData {
|
|
|
13
19
|
name: string;
|
|
14
20
|
available_agents: number;
|
|
15
21
|
}
|
|
16
|
-
export declare function getQueueAvailability(queueId: string): Promise<AvailabilityData>;
|
|
22
|
+
export declare function getQueueAvailability(queueId: string, check_available_agents?: boolean): Promise<AvailabilityData>;
|
|
17
23
|
export {};
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
const HUBTYPE_API_URL = process.env.HUBTYPE_API_URL || 'https://api.hubtype.com';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
var QueueStatusResult;
|
|
4
|
+
(function (QueueStatusResult) {
|
|
5
|
+
QueueStatusResult["open"] = "open";
|
|
6
|
+
QueueStatusResult["closed"] = "closed";
|
|
7
|
+
QueueStatusResult["openWithoutAgents"] = "open-without-agents";
|
|
8
|
+
})(QueueStatusResult || (QueueStatusResult = {}));
|
|
9
|
+
export async function conditionalQueueStatus({ queue_id, check_available_agents, }) {
|
|
10
|
+
const data = await getQueueAvailability(queue_id, check_available_agents);
|
|
11
|
+
if (check_available_agents && data.open && data.available_agents === 0) {
|
|
12
|
+
return QueueStatusResult.openWithoutAgents;
|
|
13
|
+
}
|
|
14
|
+
return data.open ? QueueStatusResult.open : QueueStatusResult.closed;
|
|
7
15
|
}
|
|
8
|
-
export async function getQueueAvailability(queueId) {
|
|
16
|
+
export async function getQueueAvailability(queueId, check_available_agents = false) {
|
|
9
17
|
const response = await axios.get(`${HUBTYPE_API_URL}/public/v1/queues/${queueId}/availability/`,
|
|
10
18
|
// TODO: Make it configurable in the future
|
|
11
19
|
{
|
|
12
20
|
params: {
|
|
13
21
|
check_queue_schedule: true,
|
|
14
22
|
check_waiting_cases: false,
|
|
15
|
-
check_available_agents:
|
|
23
|
+
check_available_agents: check_available_agents,
|
|
16
24
|
},
|
|
17
25
|
});
|
|
18
26
|
return response.data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"conditional-queue-status.js","sourceRoot":"","sources":["../../../src/functions/conditional-queue-status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,yBAAyB,CAAA;AAShF,IAAK,iBAIJ;AAJD,WAAK,iBAAiB;IACpB,kCAAa,CAAA;IACb,sCAAiB,CAAA;IACjB,8DAAyC,CAAA;AAC3C,CAAC,EAJI,iBAAiB,KAAjB,iBAAiB,QAIrB;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,QAAQ,EACR,sBAAsB,GACK;IAC3B,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;IACzE,IAAI,sBAAsB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE;QACtE,OAAO,iBAAiB,CAAC,iBAAiB,CAAA;KAC3C;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAA;AACtE,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,sBAAsB,GAAG,KAAK;IAE9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,GAAG,eAAe,qBAAqB,OAAO,gBAAgB;IAC9D,2CAA2C;IAC3C;QACE,MAAM,EAAE;YACN,oBAAoB,EAAE,IAAI;YAC1B,mBAAmB,EAAE,KAAK;YAC1B,sBAAsB,EAAE,sBAAsB;SAC/C;KACF,CACF,CAAA;IACD,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC"}
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
23
23
|
getContentsByNode(node: HtNodeWithContent, locale: string, prevContents?: FlowContent[]): Promise<FlowContent[]>;
|
|
24
24
|
private getFlowContent;
|
|
25
25
|
callFunction(functionNode: HtFunctionNode, locale: string): Promise<string>;
|
|
26
|
+
private getArgumentsByLocale;
|
|
26
27
|
getPayloadParams<T extends PayloadParamsBase>(payload: string): T;
|
|
27
28
|
}
|
|
28
29
|
export * from './action';
|
package/lib/esm/index.js
CHANGED
|
@@ -84,10 +84,12 @@ export default class BotonicPluginFlowBuilder {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
async callFunction(functionNode, locale) {
|
|
87
|
-
var _a;
|
|
88
87
|
const functionNodeId = functionNode.id;
|
|
89
|
-
const
|
|
90
|
-
|
|
88
|
+
const functionArguments = this.getArgumentsByLocale(functionNode.content.arguments, locale);
|
|
89
|
+
const nameValues = functionArguments.map(arg => {
|
|
90
|
+
return { [arg.name]: arg.value };
|
|
91
|
+
});
|
|
92
|
+
console.log('callFunction', { functionArguments, nameValues });
|
|
91
93
|
const args = Object.assign({
|
|
92
94
|
request: this.currentRequest,
|
|
93
95
|
results: functionNode.content.result_mapping.map(r => r.result),
|
|
@@ -100,6 +102,19 @@ export default class BotonicPluginFlowBuilder {
|
|
|
100
102
|
}
|
|
101
103
|
return result.target.id;
|
|
102
104
|
}
|
|
105
|
+
getArgumentsByLocale(args, locale) {
|
|
106
|
+
console.log('getArgumentsByLocale', args);
|
|
107
|
+
let resultArguments = [];
|
|
108
|
+
for (const arg of args) {
|
|
109
|
+
if ('locale' in arg && arg.locale === locale) {
|
|
110
|
+
resultArguments = [...resultArguments, ...arg.values];
|
|
111
|
+
}
|
|
112
|
+
if ('type' in arg) {
|
|
113
|
+
resultArguments = [...resultArguments, arg];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return resultArguments;
|
|
117
|
+
}
|
|
103
118
|
getPayloadParams(payload) {
|
|
104
119
|
const payloadParams = JSON.parse(payload.split(SEPARATOR)[1] || '{}');
|
|
105
120
|
return payloadParams;
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EACL,YAAY,EAEZ,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,6 +2,7 @@ import { HtBaseNode, HtNodeLink } from './common'
|
|
|
2
2
|
import { HtNodeWithContentType } from './node-types'
|
|
3
3
|
|
|
4
4
|
export enum HtArgumentType {
|
|
5
|
+
BOOLEAN = 'boolean',
|
|
5
6
|
NUMBER = 'number',
|
|
6
7
|
STRING = 'string',
|
|
7
8
|
JSON = 'json',
|
|
@@ -23,11 +24,13 @@ export interface HtFunctionResult {
|
|
|
23
24
|
target?: HtNodeLink
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
export type HtFunctionArguments = HtFunctionArgumentLocale | HtFunctionArgument
|
|
28
|
+
|
|
26
29
|
export interface HtFunctionNode extends HtBaseNode {
|
|
27
30
|
type: HtNodeWithContentType.FUNCTION
|
|
28
31
|
content: {
|
|
29
32
|
action: string
|
|
30
|
-
arguments:
|
|
33
|
+
arguments: HtFunctionArguments[]
|
|
31
34
|
result_mapping: HtFunctionResult[]
|
|
32
35
|
}
|
|
33
36
|
}
|
|
@@ -7,14 +7,24 @@ type ConditionalQueueStatusArgs = {
|
|
|
7
7
|
request: ActionRequest
|
|
8
8
|
queue_id: string
|
|
9
9
|
queue_name: string
|
|
10
|
+
check_available_agents: boolean
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
enum QueueStatusResult {
|
|
14
|
+
open = 'open',
|
|
15
|
+
closed = 'closed',
|
|
16
|
+
openWithoutAgents = 'open-without-agents',
|
|
10
17
|
}
|
|
11
18
|
|
|
12
19
|
export async function conditionalQueueStatus({
|
|
13
20
|
queue_id,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
21
|
+
check_available_agents,
|
|
22
|
+
}: ConditionalQueueStatusArgs): Promise<QueueStatusResult> {
|
|
23
|
+
const data = await getQueueAvailability(queue_id, check_available_agents)
|
|
24
|
+
if (check_available_agents && data.open && data.available_agents === 0) {
|
|
25
|
+
return QueueStatusResult.openWithoutAgents
|
|
26
|
+
}
|
|
27
|
+
return data.open ? QueueStatusResult.open : QueueStatusResult.closed
|
|
18
28
|
}
|
|
19
29
|
|
|
20
30
|
interface AvailabilityData {
|
|
@@ -27,7 +37,8 @@ interface AvailabilityData {
|
|
|
27
37
|
}
|
|
28
38
|
|
|
29
39
|
export async function getQueueAvailability(
|
|
30
|
-
queueId: string
|
|
40
|
+
queueId: string,
|
|
41
|
+
check_available_agents = false
|
|
31
42
|
): Promise<AvailabilityData> {
|
|
32
43
|
const response = await axios.get(
|
|
33
44
|
`${HUBTYPE_API_URL}/public/v1/queues/${queueId}/availability/`,
|
|
@@ -36,7 +47,7 @@ export async function getQueueAvailability(
|
|
|
36
47
|
params: {
|
|
37
48
|
check_queue_schedule: true,
|
|
38
49
|
check_waiting_cases: false,
|
|
39
|
-
check_available_agents:
|
|
50
|
+
check_available_agents: check_available_agents,
|
|
40
51
|
},
|
|
41
52
|
}
|
|
42
53
|
)
|
package/src/index.ts
CHANGED
|
@@ -15,6 +15,8 @@ import {
|
|
|
15
15
|
} from './content-fields'
|
|
16
16
|
import {
|
|
17
17
|
HtFlowBuilderData,
|
|
18
|
+
HtFunctionArgument,
|
|
19
|
+
HtFunctionArguments,
|
|
18
20
|
HtFunctionNode,
|
|
19
21
|
HtNodeComponent,
|
|
20
22
|
HtNodeWithContent,
|
|
@@ -159,10 +161,15 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
159
161
|
locale: string
|
|
160
162
|
): Promise<string> {
|
|
161
163
|
const functionNodeId = functionNode.id
|
|
162
|
-
const
|
|
163
|
-
functionNode.content.arguments
|
|
164
|
-
|
|
165
|
-
|
|
164
|
+
const functionArguments = this.getArgumentsByLocale(
|
|
165
|
+
functionNode.content.arguments,
|
|
166
|
+
locale
|
|
167
|
+
)
|
|
168
|
+
const nameValues = functionArguments.map(arg => {
|
|
169
|
+
return { [arg.name]: arg.value }
|
|
170
|
+
})
|
|
171
|
+
|
|
172
|
+
console.log('callFunction', { functionArguments, nameValues })
|
|
166
173
|
|
|
167
174
|
const args = Object.assign(
|
|
168
175
|
{
|
|
@@ -186,6 +193,24 @@ export default class BotonicPluginFlowBuilder implements Plugin {
|
|
|
186
193
|
return result.target.id
|
|
187
194
|
}
|
|
188
195
|
|
|
196
|
+
private getArgumentsByLocale(
|
|
197
|
+
args: HtFunctionArguments[],
|
|
198
|
+
locale: string
|
|
199
|
+
): HtFunctionArgument[] {
|
|
200
|
+
console.log('getArgumentsByLocale', args)
|
|
201
|
+
let resultArguments: HtFunctionArgument[] = []
|
|
202
|
+
for (const arg of args) {
|
|
203
|
+
if ('locale' in arg && arg.locale === locale) {
|
|
204
|
+
resultArguments = [...resultArguments, ...arg.values]
|
|
205
|
+
}
|
|
206
|
+
if ('type' in arg) {
|
|
207
|
+
resultArguments = [...resultArguments, arg]
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return resultArguments
|
|
212
|
+
}
|
|
213
|
+
|
|
189
214
|
getPayloadParams<T extends PayloadParamsBase>(payload: string): T {
|
|
190
215
|
const payloadParams = JSON.parse(payload.split(SEPARATOR)[1] || '{}')
|
|
191
216
|
return payloadParams
|