@telia-ace/knowledge-widget-bot-provider 0.0.1-alpha.1 → 0.0.1-alpha.12

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 (119) hide show
  1. package/LICENSE.txt +5 -5
  2. package/README.md +12 -12
  3. package/lib/client/chat.client.d.ts +15 -0
  4. package/lib/client/chat.client.js +79 -0
  5. package/lib/client/contact-method.client.d.ts +22 -0
  6. package/lib/client/contact-method.client.js +273 -0
  7. package/lib/client/http.client.d.ts +22 -0
  8. package/lib/client/http.client.js +113 -0
  9. package/lib/client/middleware.client.d.ts +13 -0
  10. package/lib/client/middleware.client.js +46 -0
  11. package/lib/contract/custom-component/contact-method-item.d.ts +8 -0
  12. package/lib/contract/custom-component/contact-method-item.js +51 -0
  13. package/lib/contract/custom-component/contact-method-list.d.ts +7 -0
  14. package/lib/contract/custom-component/contact-method-list.js +13 -0
  15. package/lib/contract/custom-component/contact-method.d.ts +3 -0
  16. package/lib/contract/custom-component/contact-method.js +33 -0
  17. package/lib/contract/enum/server-entry-type.enum.d.ts +6 -0
  18. package/lib/contract/enum/server-entry-type.enum.js +7 -0
  19. package/lib/contract/model/conversation-api-model/list.model.d.ts +5 -0
  20. package/lib/contract/model/conversation-api-model/list.model.js +0 -0
  21. package/lib/contract/model/conversation-api-model/message.model.d.ts +7 -0
  22. package/lib/contract/model/conversation-api-model/message.model.js +0 -0
  23. package/lib/contract/model/http/action.model.d.ts +3 -0
  24. package/lib/contract/model/http/action.model.js +0 -0
  25. package/lib/contract/model/http/client-action.model.d.ts +4 -0
  26. package/lib/contract/model/http/client-action.model.js +1 -0
  27. package/lib/contract/model/http/client-envelope.model.d.ts +9 -0
  28. package/lib/contract/model/http/client-envelope.model.js +0 -0
  29. package/lib/contract/model/http/connect-options.model.d.ts +5 -0
  30. package/lib/contract/model/http/connect-options.model.js +0 -0
  31. package/lib/contract/model/http/global-state.model.d.ts +8 -0
  32. package/lib/contract/model/http/global-state.model.js +0 -0
  33. package/lib/contract/model/http/http-client-options.model.d.ts +5 -0
  34. package/lib/contract/model/http/http-client-options.model.js +0 -0
  35. package/lib/contract/model/http/server-entry.model.d.ts +11 -0
  36. package/lib/contract/model/http/server-entry.model.js +0 -0
  37. package/lib/contract/model/http/server-envelope.model.d.ts +10 -0
  38. package/lib/contract/model/http/server-envelope.model.js +0 -0
  39. package/lib/contract/model/middleware/aggregator-state.model.d.ts +4 -0
  40. package/lib/contract/model/middleware/aggregator-state.model.js +1 -0
  41. package/lib/contract/model/shared/loose-object.model.d.ts +3 -0
  42. package/lib/contract/model/shared/loose-object.model.js +0 -0
  43. package/lib/helper/chat.helper.d.ts +8 -0
  44. package/lib/helper/chat.helper.js +18 -0
  45. package/lib/helper/http.helper.d.ts +13 -0
  46. package/lib/helper/http.helper.js +28 -0
  47. package/lib/helper/middleware.helper.d.ts +12 -0
  48. package/lib/helper/middleware.helper.js +67 -0
  49. package/lib/helper/store.helper.d.ts +22 -0
  50. package/lib/helper/store.helper.js +77 -0
  51. package/lib/index.d.ts +2 -0
  52. package/lib/index.js +2 -0
  53. package/lib/interface/entry.interface.d.ts +17 -0
  54. package/lib/interface/entry.interface.js +133 -0
  55. package/lib/interface/middleware/paging.interface.d.ts +4 -0
  56. package/lib/interface/middleware/paging.interface.js +53 -0
  57. package/lib/interface/middleware/processor.interface.d.ts +10 -0
  58. package/lib/interface/middleware/processor.interface.js +118 -0
  59. package/lib/plugin.d.ts +3 -0
  60. package/lib/plugin.js +145 -0
  61. package/lib-esm/client/chat.client.d.ts +15 -0
  62. package/lib-esm/client/chat.client.js +79 -0
  63. package/lib-esm/client/contact-method.client.d.ts +22 -0
  64. package/lib-esm/client/contact-method.client.js +273 -0
  65. package/lib-esm/client/http.client.d.ts +22 -0
  66. package/lib-esm/client/http.client.js +113 -0
  67. package/lib-esm/client/middleware.client.d.ts +13 -0
  68. package/lib-esm/client/middleware.client.js +46 -0
  69. package/lib-esm/contract/custom-component/contact-method-item.d.ts +8 -0
  70. package/lib-esm/contract/custom-component/contact-method-item.js +51 -0
  71. package/lib-esm/contract/custom-component/contact-method-list.d.ts +7 -0
  72. package/lib-esm/contract/custom-component/contact-method-list.js +13 -0
  73. package/lib-esm/contract/custom-component/contact-method.d.ts +3 -0
  74. package/lib-esm/contract/custom-component/contact-method.js +33 -0
  75. package/lib-esm/contract/enum/server-entry-type.enum.d.ts +6 -0
  76. package/lib-esm/contract/enum/server-entry-type.enum.js +7 -0
  77. package/lib-esm/contract/model/conversation-api-model/list.model.d.ts +5 -0
  78. package/lib-esm/contract/model/conversation-api-model/list.model.js +0 -0
  79. package/lib-esm/contract/model/conversation-api-model/message.model.d.ts +7 -0
  80. package/lib-esm/contract/model/conversation-api-model/message.model.js +0 -0
  81. package/lib-esm/contract/model/http/action.model.d.ts +3 -0
  82. package/lib-esm/contract/model/http/action.model.js +0 -0
  83. package/lib-esm/contract/model/http/client-action.model.d.ts +4 -0
  84. package/lib-esm/contract/model/http/client-action.model.js +1 -0
  85. package/lib-esm/contract/model/http/client-envelope.model.d.ts +9 -0
  86. package/lib-esm/contract/model/http/client-envelope.model.js +0 -0
  87. package/lib-esm/contract/model/http/connect-options.model.d.ts +5 -0
  88. package/lib-esm/contract/model/http/connect-options.model.js +0 -0
  89. package/lib-esm/contract/model/http/global-state.model.d.ts +8 -0
  90. package/lib-esm/contract/model/http/global-state.model.js +0 -0
  91. package/lib-esm/contract/model/http/http-client-options.model.d.ts +5 -0
  92. package/lib-esm/contract/model/http/http-client-options.model.js +0 -0
  93. package/lib-esm/contract/model/http/server-entry.model.d.ts +11 -0
  94. package/lib-esm/contract/model/http/server-entry.model.js +0 -0
  95. package/lib-esm/contract/model/http/server-envelope.model.d.ts +10 -0
  96. package/lib-esm/contract/model/http/server-envelope.model.js +0 -0
  97. package/lib-esm/contract/model/middleware/aggregator-state.model.d.ts +4 -0
  98. package/lib-esm/contract/model/middleware/aggregator-state.model.js +1 -0
  99. package/lib-esm/contract/model/shared/loose-object.model.d.ts +3 -0
  100. package/lib-esm/contract/model/shared/loose-object.model.js +0 -0
  101. package/lib-esm/helper/chat.helper.d.ts +8 -0
  102. package/lib-esm/helper/chat.helper.js +18 -0
  103. package/lib-esm/helper/http.helper.d.ts +13 -0
  104. package/lib-esm/helper/http.helper.js +28 -0
  105. package/lib-esm/helper/middleware.helper.d.ts +12 -0
  106. package/lib-esm/helper/middleware.helper.js +67 -0
  107. package/lib-esm/helper/store.helper.d.ts +22 -0
  108. package/lib-esm/helper/store.helper.js +77 -0
  109. package/lib-esm/index.d.ts +2 -0
  110. package/lib-esm/index.js +2 -0
  111. package/lib-esm/interface/entry.interface.d.ts +17 -0
  112. package/lib-esm/interface/entry.interface.js +133 -0
  113. package/lib-esm/interface/middleware/paging.interface.d.ts +4 -0
  114. package/lib-esm/interface/middleware/paging.interface.js +53 -0
  115. package/lib-esm/interface/middleware/processor.interface.d.ts +10 -0
  116. package/lib-esm/interface/middleware/processor.interface.js +118 -0
  117. package/lib-esm/plugin.d.ts +3 -0
  118. package/lib-esm/plugin.js +145 -0
  119. package/package.json +52 -45
package/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
- Copyright © 2021, Telia Company AB. All rights reserved.
2
-
3
- THIS PACKAGE AND CONTAINING SOFTWARE IS PART OF
4
- THE HUMANY SERVICE. BY USING THIS SOFTWARE YOU
5
- AGREE TO THE FOLLOWING TERMS AND CONDITIONS:
1
+ Copyright © 2021, Telia Company AB. All rights reserved.
2
+
3
+ THIS PACKAGE AND CONTAINING SOFTWARE IS PART OF
4
+ THE HUMANY SERVICE. BY USING THIS SOFTWARE YOU
5
+ AGREE TO THE FOLLOWING TERMS AND CONDITIONS:
6
6
  http://www.humany.com/legal
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
- # `@telia-ace/knowledge-widget-bot-provider`
2
-
3
- Provider for the ACE Knowledge chat bot.
4
-
5
- For this provider to work, the "chat.bot" provider must be registered in the widget config file.
6
-
7
- In addition, these plugins are also required:
8
- WidgetHeaderComponent
9
- AreaComponent
10
- ConversationComponent
11
- DefaultContactMethodsPlugin
12
- ConversationPlugin
1
+ # `@telia-ace/knowledge-widget-bot-provider`
2
+
3
+ Provider for the ACE Knowledge chat bot.
4
+
5
+ For this provider to work, the "chat.bot" provider must be registered in the widget config file.
6
+
7
+ In addition, these plugins are also required:
8
+ WidgetHeaderComponent
9
+ AreaComponent
10
+ ConversationComponent
11
+ DefaultContactMethodsPlugin
12
+ ConversationPlugin
@@ -0,0 +1,15 @@
1
+ import { Message } from '../contract/model/conversation-api-model/message.model';
2
+ import EntryInterface from '../interface/entry.interface';
3
+ export default class ChatClient {
4
+ entryInterface: EntryInterface;
5
+ constructor();
6
+ static initialize(user: any, agent: any): void;
7
+ processMessageArrayAndStoreIt(messages: Message[]): void;
8
+ updateMessageArrayAndStoreIt(messages: Message[]): void;
9
+ printUserMessageAndStoreIt(action: string): void;
10
+ private postUserMessage;
11
+ private postAgentMessage;
12
+ private getTitleFromEntry;
13
+ private getTitleFromText;
14
+ private getTitleFromList;
15
+ }
@@ -0,0 +1,79 @@
1
+ import { v4 as newGuid } from 'uuid';
2
+ import { ServerEntryTypeEnum } from '../contract/enum/server-entry-type.enum';
3
+ import { ChatHelper } from '../helper/chat.helper';
4
+ import { StoreHelper } from '../helper/store.helper';
5
+ import EntryInterface from '../interface/entry.interface';
6
+ var ChatClient = /** @class */ (function () {
7
+ function ChatClient() {
8
+ this.entryInterface = new EntryInterface();
9
+ }
10
+ // Initialize from setting the user and agent for the Helper
11
+ ChatClient.initialize = function (user, agent) {
12
+ ChatHelper.setUser(user);
13
+ ChatHelper.setAgent(agent);
14
+ };
15
+ // function for posting the messages
16
+ ChatClient.prototype.processMessageArrayAndStoreIt = function (messages) {
17
+ var _this = this;
18
+ messages
19
+ .filter(function (o) { return o && o != null; })
20
+ .forEach(function (o) {
21
+ if (o.isUser)
22
+ _this.postUserMessage(o);
23
+ else
24
+ _this.postAgentMessage(o);
25
+ });
26
+ StoreHelper.insertOrUpdateMessageArrayStore(messages);
27
+ };
28
+ // function for updating current messages
29
+ ChatClient.prototype.updateMessageArrayAndStoreIt = function (messages) {
30
+ var conversationEntry = undefined;
31
+ messages.forEach(function (o) {
32
+ var message = StoreHelper.getMessage(o.id);
33
+ message === null || message === void 0 ? void 0 : message.conversationEntry.update(o.message);
34
+ conversationEntry = message === null || message === void 0 ? void 0 : message.conversationEntry;
35
+ });
36
+ StoreHelper.insertOrUpdateMessageArrayStore(messages, conversationEntry);
37
+ };
38
+ // function for posting a message for the user actions, such as button clicks
39
+ ChatClient.prototype.printUserMessageAndStoreIt = function (action) {
40
+ if (action == 'next' || action == 'help')
41
+ return;
42
+ var entry = StoreHelper.getEntry(action);
43
+ var message = {
44
+ id: newGuid(),
45
+ message: !entry ? action : this.getTitleFromEntry(entry, action),
46
+ isUser: true,
47
+ };
48
+ this.postUserMessage(message);
49
+ StoreHelper.insertOrUpdateMessageArrayStore([message]);
50
+ };
51
+ ChatClient.prototype.postUserMessage = function (message) {
52
+ ChatHelper.getUser().print(message.message);
53
+ };
54
+ ChatClient.prototype.postAgentMessage = function (message) {
55
+ message.conversationEntry = ChatHelper.getAgent().print(message.message);
56
+ };
57
+ ChatClient.prototype.getTitleFromEntry = function (entry, action) {
58
+ var entryType = ServerEntryTypeEnum[entry.type];
59
+ switch (entryType) {
60
+ case ServerEntryTypeEnum.List:
61
+ return this.getTitleFromList(entry, action);
62
+ case ServerEntryTypeEnum.Text:
63
+ return this.getTitleFromText(entry, action);
64
+ default:
65
+ return '';
66
+ }
67
+ };
68
+ ChatClient.prototype.getTitleFromText = function (entry, action) {
69
+ if (!!entry.content.items)
70
+ return this.getTitleFromList(entry, action);
71
+ else
72
+ return entry.content.html;
73
+ };
74
+ ChatClient.prototype.getTitleFromList = function (entry, action) {
75
+ return entry.content.items.find(function (o) { return o.actionKey == action; }).title;
76
+ };
77
+ return ChatClient;
78
+ }());
79
+ export default ChatClient;
@@ -0,0 +1,22 @@
1
+ import { ContactMethodPlatform } from '@humany/widget-adapters';
2
+ import { DataClient } from '@humany/widget-types-grid';
3
+ export declare class ContactMethodClient {
4
+ private static dataClient;
5
+ private static contactMethodPlatform;
6
+ private static contactMessageEntryArray;
7
+ private static agent;
8
+ private chatClient;
9
+ static initialize(dataClient: DataClient, contactMethodPlatform: ContactMethodPlatform, agent: any): void;
10
+ handleNewForm: (errors: any, entry: any) => Promise<void>;
11
+ handleContactMethod: (input?: string) => Promise<void>;
12
+ validate(form: any): void;
13
+ private handleContactCategoryList;
14
+ private handleForm;
15
+ private handleContactMethodList;
16
+ private handleSingleContactMethod;
17
+ private submit;
18
+ private removeForm;
19
+ private printMessage;
20
+ private loadContactMethods;
21
+ private updateForm;
22
+ }
@@ -0,0 +1,273 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (_) try {
28
+ 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;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { FormBuilder, submitButton } from '@humany/widget-forms';
49
+ import { DataType } from '@humany/widget-types-grid';
50
+ import { v4 as uuidv4 } from 'uuid';
51
+ import { StoreHelper } from '../helper/store.helper';
52
+ import ChatClient from './chat.client';
53
+ var ContactMethodClient = /** @class */ (function () {
54
+ function ContactMethodClient() {
55
+ var _this = this;
56
+ this.chatClient = new ChatClient();
57
+ // function for handling forms as contact methods
58
+ this.handleNewForm = function (errors, entry) { return __awaiter(_this, void 0, void 0, function () {
59
+ return __generator(this, function (_a) {
60
+ this.updateForm(entry.contactMethods, {
61
+ submit: 'Submit',
62
+ errors: errors,
63
+ });
64
+ entry.entry.update({
65
+ contactMethods: entry.contactMethods,
66
+ type: 'ace-knowledge-contact-method',
67
+ noPadding: true,
68
+ });
69
+ return [2 /*return*/];
70
+ });
71
+ }); };
72
+ // function for receiving the contact method based on the input
73
+ this.handleContactMethod = function (input) {
74
+ if (input === void 0) { input = ''; }
75
+ return __awaiter(_this, void 0, void 0, function () {
76
+ var contactMethods;
77
+ var _a;
78
+ return __generator(this, function (_b) {
79
+ switch (_b.label) {
80
+ case 0:
81
+ if (!(input == 'contact')) return [3 /*break*/, 2];
82
+ return [4 /*yield*/, this.handleContactCategoryList(input)];
83
+ case 1:
84
+ _b.sent();
85
+ return [3 /*break*/, 4];
86
+ case 2: return [4 /*yield*/, this.loadContactMethods(input.split('/')[1], // type
87
+ input.split('/')[0] // id
88
+ )];
89
+ case 3:
90
+ contactMethods = _b.sent();
91
+ if (!!((_a = contactMethods.body) === null || _a === void 0 ? void 0 : _a.form)) {
92
+ this.handleForm(input, contactMethods);
93
+ }
94
+ else if (!contactMethods.expanded && contactMethods.inline) {
95
+ this.handleSingleContactMethod(contactMethods);
96
+ }
97
+ else if (!!contactMethods.contactMethods) {
98
+ this.handleContactMethodList(input, contactMethods);
99
+ }
100
+ _b.label = 4;
101
+ case 4: return [2 /*return*/];
102
+ }
103
+ });
104
+ });
105
+ };
106
+ this.handleContactCategoryList = function (input) { return __awaiter(_this, void 0, void 0, function () {
107
+ var newGuid, type, contactMethods;
108
+ return __generator(this, function (_a) {
109
+ switch (_a.label) {
110
+ case 0:
111
+ newGuid = uuidv4();
112
+ type = DataType.ContactMethodCategories;
113
+ return [4 /*yield*/, this.loadContactMethods(type)];
114
+ case 1:
115
+ contactMethods = _a.sent();
116
+ this.chatClient.printUserMessageAndStoreIt(input);
117
+ this.printMessage(newGuid, contactMethods);
118
+ return [2 /*return*/];
119
+ }
120
+ });
121
+ }); };
122
+ this.updateForm = function (contactMethod, properties) {
123
+ var _a;
124
+ if ((_a = contactMethod === null || contactMethod === void 0 ? void 0 : contactMethod.body) === null || _a === void 0 ? void 0 : _a.form) {
125
+ var body = contactMethod.body;
126
+ var builder = new FormBuilder(body.form);
127
+ if (!body.form.layout || !body.form.layout.submit) {
128
+ builder.createComponent(submitButton(properties.submit, 'submit'));
129
+ }
130
+ if (properties.errors) {
131
+ builder.setValidationErrors(properties.errors);
132
+ }
133
+ return __assign(__assign({}, body), { form: builder.get() });
134
+ }
135
+ return (contactMethod === null || contactMethod === void 0 ? void 0 : contactMethod.body) || {};
136
+ };
137
+ }
138
+ ContactMethodClient.initialize = function (dataClient, contactMethodPlatform, agent) {
139
+ this.dataClient = dataClient;
140
+ this.contactMethodPlatform = contactMethodPlatform;
141
+ this.agent = agent;
142
+ };
143
+ // validation of the form provided
144
+ ContactMethodClient.prototype.validate = function (form) {
145
+ var _this = this;
146
+ var entry = ContactMethodClient.contactMessageEntryArray.find(function (o) { return o.id == form.schema.id; });
147
+ ContactMethodClient.contactMethodPlatform.validate(entry.contactMethods).then(function (result) {
148
+ _this.handleNewForm(result.errors, entry);
149
+ if (result.valid) {
150
+ _this.submit(entry);
151
+ _this.removeForm(entry);
152
+ }
153
+ });
154
+ };
155
+ ContactMethodClient.prototype.handleForm = function (input, contactMethods) {
156
+ var title = input.split('/')[2];
157
+ contactMethods.expanded = true;
158
+ this.updateForm(contactMethods, {
159
+ submit: 'Submit',
160
+ errors: undefined,
161
+ });
162
+ this.printMessage(contactMethods.id, contactMethods, title);
163
+ };
164
+ ContactMethodClient.prototype.handleContactMethodList = function (input, contactMethods) {
165
+ var title = input.split('/')[2];
166
+ var newGuid = uuidv4();
167
+ this.printMessage(newGuid, contactMethods, title);
168
+ };
169
+ ContactMethodClient.prototype.handleSingleContactMethod = function (contactMethods) {
170
+ var entry = ContactMethodClient.contactMessageEntryArray.find(function (o) {
171
+ return o.contactMethods.contactMethods.find(function (t) { return t.id == contactMethods.id; });
172
+ });
173
+ var curCM = entry.contactMethods.contactMethods.find(function (t) { return t.id == contactMethods.id; });
174
+ curCM.expanded = true;
175
+ var message = {
176
+ contactMethods: entry.contactMethods,
177
+ type: 'ace-knowledge-contact-method',
178
+ noPadding: true,
179
+ };
180
+ StoreHelper.insertOrUpdateMessageArrayStore([
181
+ {
182
+ id: entry.id,
183
+ message: message,
184
+ isUser: false,
185
+ },
186
+ ]);
187
+ entry.entry.update(message);
188
+ };
189
+ ContactMethodClient.prototype.submit = function (entry) {
190
+ ContactMethodClient.contactMethodPlatform.submit(entry.contactMethods).then(function (result) {
191
+ if (!!result)
192
+ ContactMethodClient.agent.print(result);
193
+ });
194
+ };
195
+ ContactMethodClient.prototype.removeForm = function (entry) {
196
+ entry.entry.remove();
197
+ ContactMethodClient.contactMessageEntryArray.splice(ContactMethodClient.contactMessageEntryArray.indexOf(entry), 1);
198
+ };
199
+ ContactMethodClient.prototype.printMessage = function (newGuid, contactMethods, title) {
200
+ if (title === void 0) { title = undefined; }
201
+ if (ContactMethodClient.contactMessageEntryArray.find(function (o) { return o.id == contactMethods.id; })) {
202
+ var entry = ContactMethodClient.contactMessageEntryArray.find(function (o) { return o.id == contactMethods.id; });
203
+ var message = {
204
+ contactMethods: contactMethods,
205
+ type: 'ace-knowledge-contact-method',
206
+ noPadding: true,
207
+ };
208
+ entry.entry.update(message);
209
+ StoreHelper.insertOrUpdateMessageArrayStore([
210
+ {
211
+ id: entry.guid,
212
+ message: message,
213
+ isUser: false,
214
+ },
215
+ ]);
216
+ }
217
+ else {
218
+ if (title)
219
+ this.chatClient.printUserMessageAndStoreIt(title);
220
+ var message = {
221
+ contactMethods: contactMethods,
222
+ type: 'ace-knowledge-contact-method',
223
+ noPadding: true,
224
+ };
225
+ var entry = ContactMethodClient.agent.print(message);
226
+ StoreHelper.insertOrUpdateMessageArrayStore([
227
+ {
228
+ id: newGuid,
229
+ message: message,
230
+ isUser: false,
231
+ },
232
+ ]);
233
+ ContactMethodClient.contactMessageEntryArray.push({
234
+ id: newGuid,
235
+ contactMethods: contactMethods,
236
+ entry: entry,
237
+ });
238
+ }
239
+ };
240
+ ContactMethodClient.prototype.loadContactMethods = function (dataType, id) {
241
+ if (id === void 0) { id = undefined; }
242
+ switch (dataType) {
243
+ case DataType.ContactMethodCategories: {
244
+ return ContactMethodClient.dataClient
245
+ .fetch(DataType.ContactMethods, { contactMethodCategoryId: id })
246
+ .then(function (contactMethods) { return contactMethods; });
247
+ }
248
+ case DataType.ContactMethods: {
249
+ if (!!id) {
250
+ return ContactMethodClient.dataClient
251
+ .fetch(DataType.ContactMethod, { contactMethodId: id })
252
+ .then(function (contactMethods) { return contactMethods; });
253
+ }
254
+ else {
255
+ return ContactMethodClient.dataClient
256
+ .fetch(DataType.ContactMethods, {})
257
+ .then(function (contactMethods) { return contactMethods; });
258
+ }
259
+ }
260
+ case DataType.ContactMethodCategories: {
261
+ return ContactMethodClient.dataClient
262
+ .fetch(DataType.ContactMethods, { contactMethodCategoryId: id })
263
+ .then(function (contactMethods) { return contactMethods; });
264
+ }
265
+ default: {
266
+ return Promise.resolve(undefined);
267
+ }
268
+ }
269
+ };
270
+ ContactMethodClient.contactMessageEntryArray = [];
271
+ return ContactMethodClient;
272
+ }());
273
+ export { ContactMethodClient };
@@ -0,0 +1,22 @@
1
+ export declare class HttpClient {
2
+ private endpointUrl;
3
+ private clientId;
4
+ private projectionPath;
5
+ private apiEndpoint;
6
+ private options;
7
+ private middlewareClient;
8
+ private chatClient;
9
+ constructor(endpoint: string, clientId: string);
10
+ firstHit(): void;
11
+ handleUpdate(action: string): void;
12
+ handleInput(action: string): void;
13
+ handlePhrase(phrase: string): void;
14
+ private postAndHandleTheData;
15
+ private postAndHandleTheUpdateData;
16
+ private getHttpOptions;
17
+ private constructInputEnvelope;
18
+ private constructPhraseEnvelope;
19
+ private constructFirstHitEnvelope;
20
+ private handleResponseData;
21
+ private handleUpdateResponseData;
22
+ }
@@ -0,0 +1,113 @@
1
+ import { HttpHelper } from '../helper/http.helper';
2
+ import { MiddlewareHelper } from '../helper/middleware.helper';
3
+ import { StoreHelper } from '../helper/store.helper';
4
+ import ChatClient from './chat.client';
5
+ import MiddlewareClient from './middleware.client';
6
+ var HttpClient = /** @class */ (function () {
7
+ function HttpClient(endpoint, clientId) {
8
+ this.options = {
9
+ credentials: HttpHelper.getCredentials(),
10
+ clientId: clientId,
11
+ };
12
+ this.apiEndpoint = endpoint;
13
+ this.projectionPath = window.location.href;
14
+ this.endpointUrl = HttpHelper.combineUrl(this.projectionPath, 'conversations');
15
+ this.clientId = this.options.clientId;
16
+ this.middlewareClient = new MiddlewareClient();
17
+ this.chatClient = new ChatClient();
18
+ }
19
+ HttpClient.prototype.firstHit = function () {
20
+ var _this = this;
21
+ // On first hit if there are entries stored in the storage, use them
22
+ // Otherwise start a new session
23
+ MiddlewareHelper.getEntrySessionStorage().then(function (o) {
24
+ if (o && o.length > 0)
25
+ _this.chatClient.processMessageArrayAndStoreIt(o);
26
+ else {
27
+ var envelope = _this.constructFirstHitEnvelope();
28
+ _this.postAndHandleTheData(envelope);
29
+ }
30
+ });
31
+ };
32
+ // for updates, such as paging changes
33
+ HttpClient.prototype.handleUpdate = function (action) {
34
+ var envelope = this.constructInputEnvelope(action);
35
+ this.postAndHandleTheUpdateData(envelope, action);
36
+ // return this.postAndReturnTheData(envelope, action).then((o) => {
37
+ // return o.entries;
38
+ // });
39
+ };
40
+ // for action clicks
41
+ HttpClient.prototype.handleInput = function (action) {
42
+ var envelope = this.constructInputEnvelope(action);
43
+ this.postAndHandleTheData(envelope, action);
44
+ };
45
+ // for text entries by user
46
+ HttpClient.prototype.handlePhrase = function (phrase) {
47
+ var envelope = this.constructPhraseEnvelope(phrase);
48
+ this.postAndHandleTheData(envelope);
49
+ };
50
+ HttpClient.prototype.postAndHandleTheData = function (envelope, action) {
51
+ var _this = this;
52
+ return fetch(this.apiEndpoint, this.getHttpOptions(envelope))
53
+ .then(function (response) {
54
+ if (response.ok)
55
+ return response.json();
56
+ throw response;
57
+ })
58
+ .then(function (data) {
59
+ _this.handleResponseData(data, action);
60
+ })
61
+ .catch(function (err) { return console.log(err); });
62
+ };
63
+ HttpClient.prototype.postAndHandleTheUpdateData = function (envelope, action) {
64
+ var _this = this;
65
+ return fetch(this.apiEndpoint, this.getHttpOptions(envelope))
66
+ .then(function (response) {
67
+ if (response.ok)
68
+ return response.json();
69
+ throw response;
70
+ })
71
+ .then(function (data) {
72
+ _this.handleUpdateResponseData(data, action);
73
+ })
74
+ .catch(function (err) { return console.log(err); });
75
+ };
76
+ HttpClient.prototype.getHttpOptions = function (envelope) {
77
+ return Object.assign({}, HttpHelper.fetchOptions, {
78
+ body: JSON.stringify(envelope),
79
+ credentials: this.options.credentials,
80
+ });
81
+ };
82
+ HttpClient.prototype.constructInputEnvelope = function (action) {
83
+ return {
84
+ action: StoreHelper.getAction(action),
85
+ localState: StoreHelper.getLocalState(action),
86
+ globalState: StoreHelper.getGlobalState(),
87
+ clientId: this.clientId,
88
+ };
89
+ };
90
+ HttpClient.prototype.constructPhraseEnvelope = function (phrase) {
91
+ return {
92
+ command: { phrase: phrase },
93
+ globalState: StoreHelper.getGlobalState(),
94
+ clientId: this.clientId,
95
+ };
96
+ };
97
+ HttpClient.prototype.constructFirstHitEnvelope = function () {
98
+ return {
99
+ command: { site: this.endpointUrl },
100
+ clientId: this.clientId,
101
+ globalState: {},
102
+ };
103
+ };
104
+ HttpClient.prototype.handleResponseData = function (envelope, action) {
105
+ StoreHelper.setGlobalState(envelope.globalState);
106
+ this.middlewareClient.handleEntries(envelope.entries, action);
107
+ };
108
+ HttpClient.prototype.handleUpdateResponseData = function (envelope, action) {
109
+ this.middlewareClient.handleUpdate(envelope.entries, action);
110
+ };
111
+ return HttpClient;
112
+ }());
113
+ export { HttpClient };
@@ -0,0 +1,13 @@
1
+ import { ServerEntry } from '../contract/model/http/server-entry.model';
2
+ export default class MiddlewareClient {
3
+ private paging;
4
+ private processor;
5
+ private entryInterface;
6
+ private chatClient;
7
+ constructor();
8
+ static initialize(container: any, widget: any): void;
9
+ handleEntries(entries: ServerEntry[], action?: string): void;
10
+ handleUpdate(entries: ServerEntry[], action?: string): void;
11
+ checkForUpdate(input: string): boolean;
12
+ private executeMiddlewares;
13
+ }
@@ -0,0 +1,46 @@
1
+ import { MiddlewareHelper } from '../helper/middleware.helper';
2
+ import { StoreHelper } from '../helper/store.helper';
3
+ import EntryInterface from '../interface/entry.interface';
4
+ import PagingInterface from '../interface/middleware/paging.interface';
5
+ import ProcessorInterface from '../interface/middleware/processor.interface';
6
+ import ChatClient from './chat.client';
7
+ var MiddlewareClient = /** @class */ (function () {
8
+ function MiddlewareClient() {
9
+ this.paging = new PagingInterface();
10
+ this.processor = new ProcessorInterface();
11
+ this.entryInterface = new EntryInterface();
12
+ this.chatClient = new ChatClient();
13
+ }
14
+ MiddlewareClient.initialize = function (container, widget) {
15
+ MiddlewareHelper.setContainer(container);
16
+ MiddlewareHelper.setWidget(widget);
17
+ };
18
+ // called on all standart scenarios like actions and user messages
19
+ MiddlewareClient.prototype.handleEntries = function (entries, action) {
20
+ var o = this.executeMiddlewares(entries, false, action);
21
+ var messageArray = this.entryInterface.transformArray(o);
22
+ this.chatClient.processMessageArrayAndStoreIt(messageArray);
23
+ };
24
+ // called on situations such as paging changes
25
+ // when no new entries will be printed
26
+ MiddlewareClient.prototype.handleUpdate = function (entries, action) {
27
+ var o = this.executeMiddlewares(entries, true, action);
28
+ var messageArray = this.entryInterface.transformArray(o);
29
+ this.chatClient.updateMessageArrayAndStoreIt(messageArray);
30
+ };
31
+ // checks whether the action was of an update type
32
+ MiddlewareClient.prototype.checkForUpdate = function (input) {
33
+ return input === 'next';
34
+ };
35
+ MiddlewareClient.prototype.executeMiddlewares = function (entries, isUpdate, action) {
36
+ if (isUpdate && action)
37
+ entries = this.processor.processUpdate(StoreHelper.getEntry(action), entries);
38
+ else {
39
+ entries = this.processor.process(entries);
40
+ }
41
+ entries = this.paging.process(entries);
42
+ return entries;
43
+ };
44
+ return MiddlewareClient;
45
+ }());
46
+ export default MiddlewareClient;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface PropsType {
3
+ contactMethod: any;
4
+ type: any;
5
+ className?: any;
6
+ }
7
+ declare const ContactMethodItem: React.FC<PropsType>;
8
+ export default ContactMethodItem;