@cognigy/rest-api-client
Version:
Cognigy REST-Client
113 lines • 4.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MATCH_PATTERN = void 0;
const createNodeDescriptor_1 = require("../../createNodeDescriptor");
const patternMatcher_1 = require("./utils/patternMatcher");
exports.MATCH_PATTERN = (0, createNodeDescriptor_1.createNodeDescriptor)({
type: "matchPattern",
defaultLabel: "Match Pattern",
preview: {
key: "patternGroupName",
type: "text"
},
summary: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__SUMMARY",
tags: ["ai", "nlu", "pattern", "patterns"],
fields: [
{
key: "patterns",
label: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__PATTERNS_LABEL",
type: "textArray",
description: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__PATTERNS_DESCRIPTION",
defaultValue: ["@NUMBER>val1 or @NUMBER>val2"]
},
{
key: "patternGroupName",
label: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__PATTERN_GROUP_NAME_LABEL",
description: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__PATTERN_GROUP_NAME_DESCRIPTION",
type: "cognigyText",
defaultValue: "patternGroupName",
params: {
required: true
},
},
{
key: "alternateInput",
label: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__ALTERNATE_INPUT_LABEL",
description: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__ALTERNATE_INPUT_DESCRIPTION",
type: "cognigyText",
},
{
key: "detailedCompoundSlots",
label: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__DETAILED_COMPOUND_SLOTS_LABEL",
description: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__DETAILED_COMPOUND_SLOTS_DESCRIPTION",
type: "toggle",
defaultValue: false
},
{
key: "createNewSlots",
label: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__CREATE_NEW_SLOTS_LABEL",
description: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__CREATE_NEW_SLOTS_DESCRIPTION",
type: "toggle",
defaultValue: false
},
{
key: "tagExistingSlots",
label: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__TAG_EXISTING_SLOTS_LABEL",
description: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__TAG_EXISTING_SLOTS_DESCRIPTION",
type: "toggle",
defaultValue: true
},
{
key: "useFullSystemslotText",
label: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__USE_FULL_SYSTEM_SLOT_TEXT_LABEL",
description: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__FIELDS__USE_FULL_SYSTEM_SLOT_TEXT_DESCRIPTION",
type: "toggle",
defaultValue: true,
}
],
sections: [
{
key: "advanced",
label: "UI__NODE_EDITOR__NLU__MATCH_PATTERN__SECTIONS__ADVANCED__LABEL",
defaultCollapsed: true,
fields: [
"createNewSlots",
"tagExistingSlots",
"detailedCompoundSlots",
"useFullSystemslotText",
"alternateInput",
]
}
],
form: [
{ type: "field", key: "patterns" },
{ type: "field", key: "patternGroupName" },
{ type: "section", key: "advanced" }
],
function: async ({ cognigy, config }) => {
let { input, api } = cognigy;
const { patterns, patternGroupName, alternateInput, detailedCompoundSlots, createNewSlots, tagExistingSlots, useFullSystemslotText } = config;
if (!patterns || !Array.isArray(patterns) || patterns.length === 0) {
throw new Error("No patterns to match specified");
}
if (patterns.length > 20) {
throw new Error("Maximum of 20 patterns allowed");
}
// When using an alternative input, input.slots is empty - we need to call the cognigy nlu again to get the slots
let nluResult = {};
if (alternateInput) {
nluResult = await api.executeCognigyNLU(alternateInput, {}, input.inputId, {});
}
(0, patternMatcher_1.patternMatcher)({
input,
patterns,
patternGroupName,
detailedCompoundSlots,
tagExistingSlots,
createNewSlots,
useFullSystemslotText,
nluResult
});
}
});
//# sourceMappingURL=matchPattern.js.map