@telia-ace/knowledge-widget-bot-provider 0.0.1-alpha.4 → 0.0.1-alpha.40
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/client/chat.client.d.ts +3 -2
- package/lib/client/chat.client.js +98 -33
- package/lib/client/contact-method.client.d.ts +9 -1
- package/lib/client/contact-method.client.js +48 -32
- package/lib/client/http.client.d.ts +11 -7
- package/lib/client/http.client.js +138 -41
- package/lib/client/middleware.client.d.ts +4 -3
- package/lib/client/middleware.client.js +100 -35
- package/lib/contract/custom-component/contact-method-item.js +12 -34
- package/lib/contract/custom-component/contact-method-list.js +6 -34
- package/lib/contract/custom-component/contact-method.js +12 -17
- package/lib/contract/enum/server-entry-type.enum.d.ts +3 -2
- package/lib/contract/enum/server-entry-type.enum.js +5 -7
- package/lib/contract/model/conversation-api-model/list.model.js +1 -2
- package/lib/contract/model/conversation-api-model/message.model.js +1 -2
- package/lib/contract/model/http/action.model.js +1 -2
- package/lib/contract/model/http/client-action.model.js +1 -2
- package/lib/contract/model/http/client-envelope.model.js +1 -2
- package/lib/contract/model/http/connect-options.model.js +1 -2
- package/lib/contract/model/http/global-state.model.js +1 -2
- package/lib/contract/model/http/http-client-options.model.js +1 -2
- package/lib/contract/model/http/server-entry.model.js +1 -2
- package/lib/contract/model/http/server-envelope.model.js +1 -2
- package/lib/contract/model/middleware/aggregator-state.model.js +1 -2
- package/lib/contract/model/shared/loose-object.model.js +1 -2
- package/lib/helper/chat.helper.js +1 -4
- package/lib/helper/http.helper.d.ts +1 -1
- package/lib/helper/http.helper.js +8 -13
- package/lib/helper/middleware.helper.d.ts +1 -1
- package/lib/helper/middleware.helper.js +7 -11
- package/lib/helper/store.helper.d.ts +4 -3
- package/lib/helper/store.helper.js +105 -16
- package/lib/index.js +2 -8
- package/lib/interface/entry.interface.d.ts +6 -3
- package/lib/interface/entry.interface.js +176 -57
- package/lib/interface/middleware/paging.interface.js +3 -5
- package/lib/interface/middleware/processor.interface.js +1 -3
- package/lib/plugin.d.ts +2 -2
- package/lib/plugin.js +73 -90
- package/lib/utils.d.ts +1 -0
- package/lib/utils.js +5 -0
- package/lib-esm/client/chat.client.d.ts +3 -2
- package/lib-esm/client/chat.client.js +81 -11
- package/lib-esm/client/contact-method.client.d.ts +9 -1
- package/lib-esm/client/contact-method.client.js +28 -6
- package/lib-esm/client/http.client.d.ts +11 -7
- package/lib-esm/client/http.client.js +125 -22
- package/lib-esm/client/middleware.client.d.ts +4 -3
- package/lib-esm/client/middleware.client.js +89 -19
- package/lib-esm/contract/custom-component/contact-method-item.js +4 -1
- package/lib-esm/contract/enum/server-entry-type.enum.d.ts +3 -2
- package/lib-esm/contract/enum/server-entry-type.enum.js +3 -2
- package/lib-esm/helper/http.helper.d.ts +1 -1
- package/lib-esm/helper/http.helper.js +7 -9
- package/lib-esm/helper/middleware.helper.d.ts +1 -1
- package/lib-esm/helper/middleware.helper.js +5 -6
- package/lib-esm/helper/store.helper.d.ts +4 -3
- package/lib-esm/helper/store.helper.js +103 -11
- package/lib-esm/interface/entry.interface.d.ts +6 -3
- package/lib-esm/interface/entry.interface.js +160 -39
- package/lib-esm/plugin.d.ts +2 -2
- package/lib-esm/plugin.js +66 -55
- package/lib-esm/utils.d.ts +1 -0
- package/lib-esm/utils.js +5 -0
- package/package.json +45 -45
- package/lib/interface/middleware/contact-expanded.interface.d.ts +0 -0
- package/lib/interface/middleware/contact-expanded.interface.js +0 -50
- package/lib/interface/middleware/legacy-contact-methods.interface.d.ts +0 -0
- package/lib/interface/middleware/legacy-contact-methods.interface.js +0 -394
|
@@ -1,28 +1,97 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (_) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var __values = (this && this.__values) || function(o) {
|
|
38
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
39
|
+
if (m) return m.call(o);
|
|
40
|
+
if (o && typeof o.length === "number") return {
|
|
41
|
+
next: function () {
|
|
42
|
+
if (o && i >= o.length) o = void 0;
|
|
43
|
+
return { value: o && o[i++], done: !o };
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
47
|
+
};
|
|
1
48
|
import { v4 as newGuid } from 'uuid';
|
|
2
49
|
import { ServerEntryTypeEnum } from '../contract/enum/server-entry-type.enum';
|
|
3
50
|
import { ChatHelper } from '../helper/chat.helper';
|
|
4
51
|
import { StoreHelper } from '../helper/store.helper';
|
|
5
52
|
import EntryInterface from '../interface/entry.interface';
|
|
6
53
|
var ChatClient = /** @class */ (function () {
|
|
7
|
-
function ChatClient() {
|
|
8
|
-
this.entryInterface = new EntryInterface();
|
|
54
|
+
function ChatClient(container) {
|
|
55
|
+
this.entryInterface = new EntryInterface(container);
|
|
9
56
|
}
|
|
57
|
+
// Initialize from setting the user and agent for the Helper
|
|
10
58
|
ChatClient.initialize = function (user, agent) {
|
|
11
59
|
ChatHelper.setUser(user);
|
|
12
60
|
ChatHelper.setAgent(agent);
|
|
13
61
|
};
|
|
62
|
+
// function for posting the messages
|
|
14
63
|
ChatClient.prototype.processMessageArrayAndStoreIt = function (messages) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
64
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
65
|
+
var _a, _b, message;
|
|
66
|
+
var e_1, _c;
|
|
67
|
+
return __generator(this, function (_d) {
|
|
68
|
+
switch (_d.label) {
|
|
69
|
+
case 0:
|
|
70
|
+
try {
|
|
71
|
+
for (_a = __values(messages.filter(function (o) { return o && o != null; })), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
72
|
+
message = _b.value;
|
|
73
|
+
if (message.isUser)
|
|
74
|
+
this.postUserMessage(message);
|
|
75
|
+
else
|
|
76
|
+
this.postAgentMessage(message);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
80
|
+
finally {
|
|
81
|
+
try {
|
|
82
|
+
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
83
|
+
}
|
|
84
|
+
finally { if (e_1) throw e_1.error; }
|
|
85
|
+
}
|
|
86
|
+
return [4 /*yield*/, StoreHelper.insertOrUpdateMessageArrayStore(messages)];
|
|
87
|
+
case 1:
|
|
88
|
+
_d.sent();
|
|
89
|
+
return [2 /*return*/];
|
|
90
|
+
}
|
|
91
|
+
});
|
|
23
92
|
});
|
|
24
|
-
StoreHelper.insertOrUpdateMessageArrayStore(messages);
|
|
25
93
|
};
|
|
94
|
+
// function for updating current messages
|
|
26
95
|
ChatClient.prototype.updateMessageArrayAndStoreIt = function (messages) {
|
|
27
96
|
var conversationEntry = undefined;
|
|
28
97
|
messages.forEach(function (o) {
|
|
@@ -32,6 +101,7 @@ var ChatClient = /** @class */ (function () {
|
|
|
32
101
|
});
|
|
33
102
|
StoreHelper.insertOrUpdateMessageArrayStore(messages, conversationEntry);
|
|
34
103
|
};
|
|
104
|
+
// function for posting a message for the user actions, such as button clicks
|
|
35
105
|
ChatClient.prototype.printUserMessageAndStoreIt = function (action) {
|
|
36
106
|
if (action == 'next' || action == 'help')
|
|
37
107
|
return;
|
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import { ContactMethodPlatform } from '@telia-ace/knowledge-widget-adapters';
|
|
2
2
|
import { DataClient } from '@telia-ace/knowledge-widget-types-grid';
|
|
3
|
+
import { Container } from '@webprovisions/platform';
|
|
3
4
|
export declare class ContactMethodClient {
|
|
4
5
|
private static dataClient;
|
|
5
6
|
private static contactMethodPlatform;
|
|
6
7
|
private static contactMessageEntryArray;
|
|
7
8
|
private static agent;
|
|
8
9
|
private chatClient;
|
|
9
|
-
static
|
|
10
|
+
private static container;
|
|
11
|
+
constructor(container: Container);
|
|
12
|
+
static initialize(container: any, dataClient: DataClient, contactMethodPlatform: ContactMethodPlatform, agent: any): void;
|
|
10
13
|
handleNewForm: (errors: any, entry: any) => Promise<void>;
|
|
11
14
|
handleContactMethod: (input?: string) => Promise<void>;
|
|
12
15
|
validate(form: any): void;
|
|
13
16
|
private handleContactCategoryList;
|
|
14
17
|
private handleForm;
|
|
18
|
+
addContactMethod(contactMethod: any): {
|
|
19
|
+
contactMethods: any;
|
|
20
|
+
type: string;
|
|
21
|
+
noPadding: boolean;
|
|
22
|
+
};
|
|
15
23
|
private handleContactMethodList;
|
|
16
24
|
private handleSingleContactMethod;
|
|
17
25
|
private submit;
|
|
@@ -51,9 +51,9 @@ import { v4 as uuidv4 } from 'uuid';
|
|
|
51
51
|
import { StoreHelper } from '../helper/store.helper';
|
|
52
52
|
import ChatClient from './chat.client';
|
|
53
53
|
var ContactMethodClient = /** @class */ (function () {
|
|
54
|
-
function ContactMethodClient() {
|
|
54
|
+
function ContactMethodClient(container) {
|
|
55
55
|
var _this = this;
|
|
56
|
-
|
|
56
|
+
// function for handling forms as contact methods
|
|
57
57
|
this.handleNewForm = function (errors, entry) { return __awaiter(_this, void 0, void 0, function () {
|
|
58
58
|
return __generator(this, function (_a) {
|
|
59
59
|
this.updateForm(entry.contactMethods, {
|
|
@@ -68,6 +68,7 @@ var ContactMethodClient = /** @class */ (function () {
|
|
|
68
68
|
return [2 /*return*/];
|
|
69
69
|
});
|
|
70
70
|
}); };
|
|
71
|
+
// function for receiving the contact method based on the input
|
|
71
72
|
this.handleContactMethod = function (input) {
|
|
72
73
|
if (input === void 0) { input = ''; }
|
|
73
74
|
return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -132,12 +133,15 @@ var ContactMethodClient = /** @class */ (function () {
|
|
|
132
133
|
}
|
|
133
134
|
return (contactMethod === null || contactMethod === void 0 ? void 0 : contactMethod.body) || {};
|
|
134
135
|
};
|
|
136
|
+
this.chatClient = new ChatClient(container);
|
|
135
137
|
}
|
|
136
|
-
ContactMethodClient.initialize = function (dataClient, contactMethodPlatform, agent) {
|
|
138
|
+
ContactMethodClient.initialize = function (container, dataClient, contactMethodPlatform, agent) {
|
|
137
139
|
this.dataClient = dataClient;
|
|
138
140
|
this.contactMethodPlatform = contactMethodPlatform;
|
|
139
141
|
this.agent = agent;
|
|
142
|
+
this.container = container;
|
|
140
143
|
};
|
|
144
|
+
// validation of the form provided
|
|
141
145
|
ContactMethodClient.prototype.validate = function (form) {
|
|
142
146
|
var _this = this;
|
|
143
147
|
var entry = ContactMethodClient.contactMessageEntryArray.find(function (o) { return o.id == form.schema.id; });
|
|
@@ -158,6 +162,14 @@ var ContactMethodClient = /** @class */ (function () {
|
|
|
158
162
|
});
|
|
159
163
|
this.printMessage(contactMethods.id, contactMethods, title);
|
|
160
164
|
};
|
|
165
|
+
ContactMethodClient.prototype.addContactMethod = function (contactMethod) {
|
|
166
|
+
contactMethod.expanded = true;
|
|
167
|
+
this.updateForm(contactMethod, {
|
|
168
|
+
submit: 'Submit',
|
|
169
|
+
errors: undefined,
|
|
170
|
+
});
|
|
171
|
+
return this.printMessage(contactMethod.id, contactMethod);
|
|
172
|
+
};
|
|
161
173
|
ContactMethodClient.prototype.handleContactMethodList = function (input, contactMethods) {
|
|
162
174
|
var title = input.split('/')[2];
|
|
163
175
|
var newGuid = uuidv4();
|
|
@@ -210,6 +222,7 @@ var ContactMethodClient = /** @class */ (function () {
|
|
|
210
222
|
isUser: false,
|
|
211
223
|
},
|
|
212
224
|
]);
|
|
225
|
+
return message;
|
|
213
226
|
}
|
|
214
227
|
else {
|
|
215
228
|
if (title)
|
|
@@ -232,15 +245,24 @@ var ContactMethodClient = /** @class */ (function () {
|
|
|
232
245
|
contactMethods: contactMethods,
|
|
233
246
|
entry: entry,
|
|
234
247
|
});
|
|
248
|
+
return message;
|
|
235
249
|
}
|
|
236
250
|
};
|
|
237
251
|
ContactMethodClient.prototype.loadContactMethods = function (dataType, id) {
|
|
238
252
|
if (id === void 0) { id = undefined; }
|
|
239
253
|
switch (dataType) {
|
|
240
254
|
case DataType.ContactMethodCategories: {
|
|
241
|
-
return ContactMethodClient.
|
|
242
|
-
.
|
|
243
|
-
.then(function (
|
|
255
|
+
return ContactMethodClient.container
|
|
256
|
+
.getAsync('matchingClient')
|
|
257
|
+
.then(function (matchingClient) {
|
|
258
|
+
return matchingClient.customRequest('/contactmethods', 'GET', {});
|
|
259
|
+
})
|
|
260
|
+
.then(function (contactMethods) {
|
|
261
|
+
return contactMethods;
|
|
262
|
+
});
|
|
263
|
+
// return ContactMethodClient.dataClient
|
|
264
|
+
// .fetch(DataType.ContactMethods, { contactMethodCategoryId: id })
|
|
265
|
+
// .then((contactMethods) => contactMethods);
|
|
244
266
|
}
|
|
245
267
|
case DataType.ContactMethods: {
|
|
246
268
|
if (!!id) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Container } from '@webprovisions/platform';
|
|
2
2
|
export declare class HttpClient {
|
|
3
3
|
private endpointUrl;
|
|
4
4
|
private clientId;
|
|
@@ -7,16 +7,20 @@ export declare class HttpClient {
|
|
|
7
7
|
private options;
|
|
8
8
|
private middlewareClient;
|
|
9
9
|
private chatClient;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
private container;
|
|
11
|
+
constructor(endpoint: string, clientId: string, container: Container);
|
|
12
|
+
firstHit(): Promise<void>;
|
|
13
|
+
handleUpdate(action: string): Promise<any>;
|
|
14
|
+
handleInput(action: string): Promise<void>;
|
|
15
|
+
handleCategories(): Promise<void>;
|
|
16
|
+
handlePhrase(phrase: string): Promise<void>;
|
|
15
17
|
private postAndHandleTheData;
|
|
16
|
-
private
|
|
18
|
+
private postAndHandleTheUpdateData;
|
|
17
19
|
private getHttpOptions;
|
|
18
20
|
private constructInputEnvelope;
|
|
21
|
+
private constructCategoriesEnvelope;
|
|
19
22
|
private constructPhraseEnvelope;
|
|
20
23
|
private constructFirstHitEnvelope;
|
|
21
24
|
private handleResponseData;
|
|
25
|
+
private handleUpdateResponseData;
|
|
22
26
|
}
|
|
@@ -1,50 +1,137 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (_) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { readStorage } from '@telia-ace/widget-services';
|
|
38
|
+
import { v4 as newGuid } from 'uuid';
|
|
39
|
+
import { ChatHelper } from '../helper/chat.helper';
|
|
1
40
|
import { HttpHelper } from '../helper/http.helper';
|
|
2
41
|
import { MiddlewareHelper } from '../helper/middleware.helper';
|
|
3
42
|
import { StoreHelper } from '../helper/store.helper';
|
|
4
43
|
import ChatClient from './chat.client';
|
|
5
44
|
import MiddlewareClient from './middleware.client';
|
|
6
45
|
var HttpClient = /** @class */ (function () {
|
|
7
|
-
function HttpClient(endpoint) {
|
|
46
|
+
function HttpClient(endpoint, clientId, container) {
|
|
8
47
|
this.options = {
|
|
9
48
|
credentials: HttpHelper.getCredentials(),
|
|
10
|
-
clientId:
|
|
49
|
+
clientId: clientId,
|
|
11
50
|
};
|
|
12
51
|
this.apiEndpoint = endpoint;
|
|
13
52
|
this.projectionPath = window.location.href;
|
|
14
53
|
this.endpointUrl = HttpHelper.combineUrl(this.projectionPath, 'conversations');
|
|
15
54
|
this.clientId = this.options.clientId;
|
|
16
|
-
this.middlewareClient = new MiddlewareClient();
|
|
17
|
-
this.chatClient = new ChatClient();
|
|
55
|
+
this.middlewareClient = new MiddlewareClient(container);
|
|
56
|
+
this.chatClient = new ChatClient(container);
|
|
57
|
+
this.container = container;
|
|
18
58
|
}
|
|
19
59
|
HttpClient.prototype.firstHit = function () {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
60
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
61
|
+
var entries, meta, agent, envelope;
|
|
62
|
+
return __generator(this, function (_a) {
|
|
63
|
+
switch (_a.label) {
|
|
64
|
+
case 0: return [4 /*yield*/, MiddlewareHelper.getEntrySessionStorage()];
|
|
65
|
+
case 1:
|
|
66
|
+
entries = (_a.sent());
|
|
67
|
+
if (!(entries && entries.length > 0)) return [3 /*break*/, 5];
|
|
68
|
+
return [4 /*yield*/, StoreHelper.rehydrateState()];
|
|
69
|
+
case 2:
|
|
70
|
+
_a.sent();
|
|
71
|
+
return [4 /*yield*/, readStorage(this.container, 'bot-provider-conversation-meta')];
|
|
72
|
+
case 3:
|
|
73
|
+
meta = _a.sent();
|
|
74
|
+
if (meta === null || meta === void 0 ? void 0 : meta.agent) {
|
|
75
|
+
agent = ChatHelper.getAgent();
|
|
76
|
+
agent.update({
|
|
77
|
+
name: meta.agent.name,
|
|
78
|
+
avatar: meta.agent.avatar,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return [4 /*yield*/, this.chatClient.processMessageArrayAndStoreIt(entries)];
|
|
82
|
+
case 4:
|
|
83
|
+
_a.sent();
|
|
84
|
+
return [3 /*break*/, 7];
|
|
85
|
+
case 5:
|
|
86
|
+
envelope = this.constructFirstHitEnvelope();
|
|
87
|
+
return [4 /*yield*/, this.postAndHandleTheData(envelope)];
|
|
88
|
+
case 6:
|
|
89
|
+
_a.sent();
|
|
90
|
+
_a.label = 7;
|
|
91
|
+
case 7: return [2 /*return*/];
|
|
92
|
+
}
|
|
93
|
+
});
|
|
30
94
|
});
|
|
31
95
|
};
|
|
32
96
|
// for updates, such as paging changes
|
|
33
97
|
HttpClient.prototype.handleUpdate = function (action) {
|
|
34
98
|
var envelope = this.constructInputEnvelope(action);
|
|
35
|
-
return this.
|
|
36
|
-
return o.entries;
|
|
37
|
-
});
|
|
99
|
+
return this.postAndHandleTheUpdateData(envelope, action);
|
|
38
100
|
};
|
|
39
101
|
// for action clicks
|
|
40
102
|
HttpClient.prototype.handleInput = function (action) {
|
|
41
103
|
var envelope = this.constructInputEnvelope(action);
|
|
42
|
-
this.postAndHandleTheData(envelope, action);
|
|
104
|
+
return this.postAndHandleTheData(envelope, action);
|
|
105
|
+
};
|
|
106
|
+
// for category burger
|
|
107
|
+
HttpClient.prototype.handleCategories = function () {
|
|
108
|
+
var envelope = this.constructCategoriesEnvelope();
|
|
109
|
+
return this.postAndHandleTheData(envelope);
|
|
43
110
|
};
|
|
44
111
|
// for text entries by user
|
|
45
112
|
HttpClient.prototype.handlePhrase = function (phrase) {
|
|
46
113
|
var envelope = this.constructPhraseEnvelope(phrase);
|
|
47
|
-
|
|
114
|
+
var id = newGuid();
|
|
115
|
+
var entry = {
|
|
116
|
+
id: id,
|
|
117
|
+
type: 'Text',
|
|
118
|
+
timestamp: new Date(),
|
|
119
|
+
content: {
|
|
120
|
+
$type: 'Humany.Matching.Bots.Conversations.Content.Text, Humany.Matching',
|
|
121
|
+
html: "".concat(phrase),
|
|
122
|
+
},
|
|
123
|
+
actions: {},
|
|
124
|
+
tags: {},
|
|
125
|
+
};
|
|
126
|
+
var message = {
|
|
127
|
+
id: id,
|
|
128
|
+
message: ['html', { body: "<p>".concat(phrase, "</p>") }],
|
|
129
|
+
entry: entry,
|
|
130
|
+
isUser: true,
|
|
131
|
+
conversationEntry: {},
|
|
132
|
+
};
|
|
133
|
+
StoreHelper.insertMessageToStore(message);
|
|
134
|
+
return this.postAndHandleTheData(envelope);
|
|
48
135
|
};
|
|
49
136
|
HttpClient.prototype.postAndHandleTheData = function (envelope, action) {
|
|
50
137
|
var _this = this;
|
|
@@ -59,7 +146,8 @@ var HttpClient = /** @class */ (function () {
|
|
|
59
146
|
})
|
|
60
147
|
.catch(function (err) { return console.log(err); });
|
|
61
148
|
};
|
|
62
|
-
HttpClient.prototype.
|
|
149
|
+
HttpClient.prototype.postAndHandleTheUpdateData = function (envelope, action) {
|
|
150
|
+
var _this = this;
|
|
63
151
|
return fetch(this.apiEndpoint, this.getHttpOptions(envelope))
|
|
64
152
|
.then(function (response) {
|
|
65
153
|
if (response.ok)
|
|
@@ -67,7 +155,7 @@ var HttpClient = /** @class */ (function () {
|
|
|
67
155
|
throw response;
|
|
68
156
|
})
|
|
69
157
|
.then(function (data) {
|
|
70
|
-
|
|
158
|
+
_this.handleUpdateResponseData(data, action);
|
|
71
159
|
})
|
|
72
160
|
.catch(function (err) { return console.log(err); });
|
|
73
161
|
};
|
|
@@ -85,6 +173,18 @@ var HttpClient = /** @class */ (function () {
|
|
|
85
173
|
clientId: this.clientId,
|
|
86
174
|
};
|
|
87
175
|
};
|
|
176
|
+
HttpClient.prototype.constructCategoriesEnvelope = function () {
|
|
177
|
+
return {
|
|
178
|
+
action: {
|
|
179
|
+
content: {
|
|
180
|
+
$type: 'Humany.Matching.Bots.Conversations.Actions.BrowseCategories, Humany.Matching',
|
|
181
|
+
},
|
|
182
|
+
key: 'browseCategories',
|
|
183
|
+
},
|
|
184
|
+
globalState: StoreHelper.getGlobalState(),
|
|
185
|
+
clientId: this.clientId,
|
|
186
|
+
};
|
|
187
|
+
};
|
|
88
188
|
HttpClient.prototype.constructPhraseEnvelope = function (phrase) {
|
|
89
189
|
return {
|
|
90
190
|
command: { phrase: phrase },
|
|
@@ -101,7 +201,10 @@ var HttpClient = /** @class */ (function () {
|
|
|
101
201
|
};
|
|
102
202
|
HttpClient.prototype.handleResponseData = function (envelope, action) {
|
|
103
203
|
StoreHelper.setGlobalState(envelope.globalState);
|
|
104
|
-
this.middlewareClient.handleEntries(envelope.entries, action);
|
|
204
|
+
return this.middlewareClient.handleEntries(envelope.entries, action);
|
|
205
|
+
};
|
|
206
|
+
HttpClient.prototype.handleUpdateResponseData = function (envelope, action) {
|
|
207
|
+
return this.middlewareClient.handleUpdate(envelope.entries, action);
|
|
105
208
|
};
|
|
106
209
|
return HttpClient;
|
|
107
210
|
}());
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import { Container } from '@webprovisions/platform';
|
|
1
2
|
import { ServerEntry } from '../contract/model/http/server-entry.model';
|
|
2
3
|
export default class MiddlewareClient {
|
|
3
4
|
private paging;
|
|
4
5
|
private processor;
|
|
5
6
|
private entryInterface;
|
|
6
7
|
private chatClient;
|
|
7
|
-
constructor();
|
|
8
|
+
constructor(container: Container);
|
|
8
9
|
static initialize(container: any, widget: any): void;
|
|
9
|
-
handleEntries(entries: ServerEntry[], action?: string): void
|
|
10
|
-
handleUpdate(
|
|
10
|
+
handleEntries(entries: ServerEntry[], action?: string): Promise<void>;
|
|
11
|
+
handleUpdate(entries: ServerEntry[], action?: string): Promise<void>;
|
|
11
12
|
checkForUpdate(input: string): boolean;
|
|
12
13
|
private executeMiddlewares;
|
|
13
14
|
}
|
|
@@ -1,40 +1,110 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (_) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { createStorageWriter, StorageCategory } from '@telia-ace/widget-services';
|
|
38
|
+
import { ChatHelper } from '../helper/chat.helper';
|
|
1
39
|
import { MiddlewareHelper } from '../helper/middleware.helper';
|
|
2
40
|
import { StoreHelper } from '../helper/store.helper';
|
|
3
41
|
import EntryInterface from '../interface/entry.interface';
|
|
4
|
-
// import ContactExpandedInterface from "../interface/middleware/contact-expanded.interface";
|
|
5
|
-
// import ContactInterface from "../interface/middleware/legacy-contact-methods.interface";
|
|
6
42
|
import PagingInterface from '../interface/middleware/paging.interface';
|
|
7
43
|
import ProcessorInterface from '../interface/middleware/processor.interface';
|
|
8
44
|
import ChatClient from './chat.client';
|
|
9
|
-
import { HttpClient } from './http.client';
|
|
10
45
|
var MiddlewareClient = /** @class */ (function () {
|
|
11
|
-
function MiddlewareClient() {
|
|
12
|
-
// this.contactExpanded = new ContactExpandedInterface();
|
|
13
|
-
// this.legacyContact = new ContactInterface();
|
|
46
|
+
function MiddlewareClient(container) {
|
|
14
47
|
this.paging = new PagingInterface();
|
|
15
48
|
this.processor = new ProcessorInterface();
|
|
16
|
-
this.entryInterface = new EntryInterface();
|
|
17
|
-
this.chatClient = new ChatClient();
|
|
49
|
+
this.entryInterface = new EntryInterface(container);
|
|
50
|
+
this.chatClient = new ChatClient(container);
|
|
18
51
|
}
|
|
19
52
|
MiddlewareClient.initialize = function (container, widget) {
|
|
20
53
|
MiddlewareHelper.setContainer(container);
|
|
21
54
|
MiddlewareHelper.setWidget(widget);
|
|
22
55
|
};
|
|
23
|
-
// called on all
|
|
56
|
+
// called on all standard scenarios like actions and user messages
|
|
24
57
|
MiddlewareClient.prototype.handleEntries = function (entries, action) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
58
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
59
|
+
var widgetEntry, agent, write, o, messageArray;
|
|
60
|
+
return __generator(this, function (_a) {
|
|
61
|
+
switch (_a.label) {
|
|
62
|
+
case 0:
|
|
63
|
+
widgetEntry = (entries || []).find(function (e) { return e.type === 'Widget'; });
|
|
64
|
+
if (!widgetEntry) return [3 /*break*/, 2];
|
|
65
|
+
agent = ChatHelper.getAgent();
|
|
66
|
+
if (!agent) return [3 /*break*/, 2];
|
|
67
|
+
agent.update({
|
|
68
|
+
name: widgetEntry.content.agent.name,
|
|
69
|
+
avatar: widgetEntry.content.agent.avatar,
|
|
70
|
+
});
|
|
71
|
+
return [4 /*yield*/, createStorageWriter(MiddlewareHelper.getContainer(), 'bot-provider-conversation-meta', StorageCategory.Necessary)];
|
|
72
|
+
case 1:
|
|
73
|
+
write = _a.sent();
|
|
74
|
+
write({
|
|
75
|
+
agent: {
|
|
76
|
+
name: widgetEntry.content.agent.name,
|
|
77
|
+
avatar: widgetEntry.content.agent.avatar,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
_a.label = 2;
|
|
81
|
+
case 2:
|
|
82
|
+
o = this.executeMiddlewares(entries, false, action);
|
|
83
|
+
return [4 /*yield*/, this.entryInterface.transformArray(o)];
|
|
84
|
+
case 3:
|
|
85
|
+
messageArray = _a.sent();
|
|
86
|
+
this.chatClient.processMessageArrayAndStoreIt(messageArray);
|
|
87
|
+
return [2 /*return*/];
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
});
|
|
28
91
|
};
|
|
29
92
|
// called on situations such as paging changes
|
|
30
93
|
// when no new entries will be printed
|
|
31
|
-
MiddlewareClient.prototype.handleUpdate = function (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
94
|
+
MiddlewareClient.prototype.handleUpdate = function (entries, action) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
96
|
+
var o, messageArray;
|
|
97
|
+
return __generator(this, function (_a) {
|
|
98
|
+
switch (_a.label) {
|
|
99
|
+
case 0:
|
|
100
|
+
o = this.executeMiddlewares(entries, true, action);
|
|
101
|
+
return [4 /*yield*/, this.entryInterface.transformArray(o)];
|
|
102
|
+
case 1:
|
|
103
|
+
messageArray = _a.sent();
|
|
104
|
+
this.chatClient.updateMessageArrayAndStoreIt(messageArray);
|
|
105
|
+
return [2 /*return*/];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
38
108
|
});
|
|
39
109
|
};
|
|
40
110
|
// checks whether the action was of an update type
|
|
@@ -26,13 +26,16 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
26
26
|
return ar;
|
|
27
27
|
};
|
|
28
28
|
import { ContactMethod as GenericContactMethod } from '@telia-ace/knowledge-widget-adapters';
|
|
29
|
-
import { useContainer, useDispatch } from '@telia-ace/widget-ui';
|
|
29
|
+
import { useContainer, useDispatch } from '@telia-ace/knowledge-widget-ui';
|
|
30
30
|
import React, { useEffect, useState } from 'react';
|
|
31
31
|
var ContactMethodItem = function (props) {
|
|
32
32
|
var dispatch = useDispatch();
|
|
33
33
|
var container = useContainer();
|
|
34
34
|
var _a = __read(useState(props.contactMethod.body), 2), body = _a[0], setBody = _a[1];
|
|
35
35
|
useEffect(function () {
|
|
36
|
+
if (!container || !container.get('$widget')) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
36
39
|
var events = container.get('$widget').events;
|
|
37
40
|
events.subscribe('form:validated', function (_event, _data) {
|
|
38
41
|
// TODO: this is a due to props not being updated when props.contactMethod.body changes
|