@servicetitan/titan-chatbot-api 7.1.2 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/api-client/__mocks__/chatbot-api-client.mock.d.ts +1 -0
  3. package/dist/api-client/__mocks__/chatbot-api-client.mock.d.ts.map +1 -1
  4. package/dist/api-client/__mocks__/chatbot-api-client.mock.js +22 -47
  5. package/dist/api-client/__mocks__/chatbot-api-client.mock.js.map +1 -1
  6. package/dist/api-client/base/chatbot-api-client.d.ts +7 -0
  7. package/dist/api-client/base/chatbot-api-client.d.ts.map +1 -1
  8. package/dist/api-client/base/chatbot-api-client.js +3 -4
  9. package/dist/api-client/base/chatbot-api-client.js.map +1 -1
  10. package/dist/api-client/index.d.ts +2 -2
  11. package/dist/api-client/index.d.ts.map +1 -1
  12. package/dist/api-client/index.js +12 -7
  13. package/dist/api-client/index.js.map +1 -1
  14. package/dist/api-client/models/__mocks__/models.mock.js +154 -124
  15. package/dist/api-client/models/__mocks__/models.mock.js.map +1 -1
  16. package/dist/api-client/models/index.d.ts +2 -1
  17. package/dist/api-client/models/index.d.ts.map +1 -1
  18. package/dist/api-client/models/index.js +8 -7
  19. package/dist/api-client/models/index.js.map +1 -1
  20. package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.d.ts +2 -0
  21. package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.d.ts.map +1 -0
  22. package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.js +240 -0
  23. package/dist/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.js.map +1 -0
  24. package/dist/api-client/titan-chat/__tests__/native-client.test.js +6 -6
  25. package/dist/api-client/titan-chat/__tests__/native-client.test.js.map +1 -1
  26. package/dist/api-client/titan-chat/chatbot-api-client.d.ts +11 -0
  27. package/dist/api-client/titan-chat/chatbot-api-client.d.ts.map +1 -1
  28. package/dist/api-client/titan-chat/chatbot-api-client.js +69 -35
  29. package/dist/api-client/titan-chat/chatbot-api-client.js.map +1 -1
  30. package/dist/api-client/titan-chat/index.d.ts +2 -1
  31. package/dist/api-client/titan-chat/index.d.ts.map +1 -1
  32. package/dist/api-client/titan-chat/index.js +1 -0
  33. package/dist/api-client/titan-chat/index.js.map +1 -1
  34. package/dist/api-client/titan-chat/native-client.js +359 -812
  35. package/dist/api-client/titan-chat/native-client.js.map +1 -1
  36. package/dist/api-client/utils/__tests__/model-utils.test.js +454 -191
  37. package/dist/api-client/utils/__tests__/model-utils.test.js.map +1 -1
  38. package/dist/api-client/utils/model-utils.d.ts.map +1 -1
  39. package/dist/api-client/utils/model-utils.js +28 -25
  40. package/dist/api-client/utils/model-utils.js.map +1 -1
  41. package/dist/hooks/use-customization-chatbot.js +2 -1
  42. package/dist/hooks/use-customization-chatbot.js.map +1 -1
  43. package/dist/index.d.ts +3 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +7 -5
  46. package/dist/index.js.map +1 -1
  47. package/dist/models/__tests__/chatbot-customizations.test.d.ts +2 -0
  48. package/dist/models/__tests__/chatbot-customizations.test.d.ts.map +1 -0
  49. package/dist/models/__tests__/chatbot-customizations.test.js +36 -0
  50. package/dist/models/__tests__/chatbot-customizations.test.js.map +1 -0
  51. package/dist/models/chatbot-customizations.d.ts +17 -0
  52. package/dist/models/chatbot-customizations.d.ts.map +1 -1
  53. package/dist/models/chatbot-customizations.js +7 -1
  54. package/dist/models/chatbot-customizations.js.map +1 -1
  55. package/dist/models/index.js +1 -0
  56. package/dist/models/index.js.map +1 -1
  57. package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.d.ts +2 -0
  58. package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.d.ts.map +1 -0
  59. package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.js +107 -0
  60. package/dist/stores/__tests__/chatbot-ui-backend.store.observability.test.js.map +1 -0
  61. package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.d.ts +2 -0
  62. package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.d.ts.map +1 -0
  63. package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.js +312 -0
  64. package/dist/stores/__tests__/chatbot-ui-backend.store.streaming.test.js.map +1 -0
  65. package/dist/stores/__tests__/chatbot-ui-backend.store.test.js +267 -172
  66. package/dist/stores/__tests__/chatbot-ui-backend.store.test.js.map +1 -1
  67. package/dist/stores/__tests__/chatbot-ui.store.test.js +61 -64
  68. package/dist/stores/__tests__/chatbot-ui.store.test.js.map +1 -1
  69. package/dist/stores/__tests__/filter.store.test.js +243 -116
  70. package/dist/stores/__tests__/filter.store.test.js.map +1 -1
  71. package/dist/stores/__tests__/initialize.store.test.js +9 -8
  72. package/dist/stores/__tests__/initialize.store.test.js.map +1 -1
  73. package/dist/stores/__tests__/message-feedback-guardrail.store.test.js +8 -7
  74. package/dist/stores/__tests__/message-feedback-guardrail.store.test.js.map +1 -1
  75. package/dist/stores/__tests__/message-feedback.store.test.js +34 -27
  76. package/dist/stores/__tests__/message-feedback.store.test.js.map +1 -1
  77. package/dist/stores/__tests__/session-feedback.store.test.js +9 -8
  78. package/dist/stores/__tests__/session-feedback.store.test.js.map +1 -1
  79. package/dist/stores/chatbot-ui-backend.store.d.ts +26 -2
  80. package/dist/stores/chatbot-ui-backend.store.d.ts.map +1 -1
  81. package/dist/stores/chatbot-ui-backend.store.js +295 -239
  82. package/dist/stores/chatbot-ui-backend.store.js.map +1 -1
  83. package/dist/stores/chatbot-ui.store.js +73 -46
  84. package/dist/stores/chatbot-ui.store.js.map +1 -1
  85. package/dist/stores/filter.store.js +298 -378
  86. package/dist/stores/filter.store.js.map +1 -1
  87. package/dist/stores/index.d.ts +5 -3
  88. package/dist/stores/index.d.ts.map +1 -1
  89. package/dist/stores/index.js +3 -2
  90. package/dist/stores/index.js.map +1 -1
  91. package/dist/stores/initialize.store.js +55 -51
  92. package/dist/stores/initialize.store.js.map +1 -1
  93. package/dist/stores/message-feedback-base.store.js +2 -1
  94. package/dist/stores/message-feedback-base.store.js.map +1 -1
  95. package/dist/stores/message-feedback-guardrail.store.js +50 -47
  96. package/dist/stores/message-feedback-guardrail.store.js.map +1 -1
  97. package/dist/stores/message-feedback.store.js +84 -89
  98. package/dist/stores/message-feedback.store.js.map +1 -1
  99. package/dist/stores/session-feedback.store.js +46 -39
  100. package/dist/stores/session-feedback.store.js.map +1 -1
  101. package/dist/streaming/__tests__/agent-stream.test.d.ts +2 -0
  102. package/dist/streaming/__tests__/agent-stream.test.d.ts.map +1 -0
  103. package/dist/streaming/__tests__/agent-stream.test.js +92 -0
  104. package/dist/streaming/__tests__/agent-stream.test.js.map +1 -0
  105. package/dist/streaming/agent-stream.d.ts +83 -0
  106. package/dist/streaming/agent-stream.d.ts.map +1 -0
  107. package/dist/streaming/agent-stream.js +28 -0
  108. package/dist/streaming/agent-stream.js.map +1 -0
  109. package/dist/streaming/index.d.ts +3 -0
  110. package/dist/streaming/index.d.ts.map +1 -0
  111. package/dist/streaming/index.js +4 -0
  112. package/dist/streaming/index.js.map +1 -0
  113. package/dist/streaming/run-agent-stream.d.ts +23 -0
  114. package/dist/streaming/run-agent-stream.d.ts.map +1 -0
  115. package/dist/streaming/run-agent-stream.js +83 -0
  116. package/dist/streaming/run-agent-stream.js.map +1 -0
  117. package/dist/utils/__tests__/axios-utils.test.js +8 -7
  118. package/dist/utils/__tests__/axios-utils.test.js.map +1 -1
  119. package/dist/utils/axios-utils.js +9 -7
  120. package/dist/utils/axios-utils.js.map +1 -1
  121. package/dist/utils/test-utils.js +5 -5
  122. package/dist/utils/test-utils.js.map +1 -1
  123. package/package.json +6 -3
  124. package/src/api-client/__mocks__/chatbot-api-client.mock.ts +1 -0
  125. package/src/api-client/base/chatbot-api-client.ts +11 -0
  126. package/src/api-client/index.ts +2 -7
  127. package/src/api-client/models/index.ts +15 -13
  128. package/src/api-client/titan-chat/__tests__/chatbot-api-client-stream.test.ts +208 -0
  129. package/src/api-client/titan-chat/chatbot-api-client.ts +46 -0
  130. package/src/api-client/titan-chat/index.ts +2 -1
  131. package/src/api-client/utils/model-utils.ts +4 -8
  132. package/src/index.ts +7 -2
  133. package/src/models/__tests__/chatbot-customizations.test.ts +26 -0
  134. package/src/models/chatbot-customizations.ts +20 -0
  135. package/src/stores/__tests__/chatbot-ui-backend.store.observability.test.ts +105 -0
  136. package/src/stores/__tests__/chatbot-ui-backend.store.streaming.test.ts +261 -0
  137. package/src/stores/chatbot-ui-backend.store.ts +179 -4
  138. package/src/stores/index.ts +5 -12
  139. package/src/streaming/__tests__/agent-stream.test.ts +80 -0
  140. package/src/streaming/agent-stream.ts +103 -0
  141. package/src/streaming/index.ts +2 -0
  142. package/src/streaming/run-agent-stream.ts +109 -0
  143. package/tsconfig.tsbuildinfo +1 -1
  144. package/dist/api-client/help-center/__tests__/converter-from-models.test.d.ts +0 -2
  145. package/dist/api-client/help-center/__tests__/converter-from-models.test.d.ts.map +0 -1
  146. package/dist/api-client/help-center/__tests__/converter-from-models.test.js +0 -34
  147. package/dist/api-client/help-center/__tests__/converter-from-models.test.js.map +0 -1
  148. package/dist/api-client/help-center/__tests__/converter-to-models.test.d.ts +0 -2
  149. package/dist/api-client/help-center/__tests__/converter-to-models.test.d.ts.map +0 -1
  150. package/dist/api-client/help-center/__tests__/converter-to-models.test.js +0 -82
  151. package/dist/api-client/help-center/__tests__/converter-to-models.test.js.map +0 -1
  152. package/dist/api-client/help-center/chatbot-api-client.d.ts +0 -32
  153. package/dist/api-client/help-center/chatbot-api-client.d.ts.map +0 -1
  154. package/dist/api-client/help-center/chatbot-api-client.js +0 -102
  155. package/dist/api-client/help-center/chatbot-api-client.js.map +0 -1
  156. package/dist/api-client/help-center/converter-from-models.d.ts +0 -13
  157. package/dist/api-client/help-center/converter-from-models.d.ts.map +0 -1
  158. package/dist/api-client/help-center/converter-from-models.js +0 -114
  159. package/dist/api-client/help-center/converter-from-models.js.map +0 -1
  160. package/dist/api-client/help-center/converter-to-models.d.ts +0 -13
  161. package/dist/api-client/help-center/converter-to-models.d.ts.map +0 -1
  162. package/dist/api-client/help-center/converter-to-models.js +0 -98
  163. package/dist/api-client/help-center/converter-to-models.js.map +0 -1
  164. package/dist/api-client/help-center/index.d.ts +0 -2
  165. package/dist/api-client/help-center/index.d.ts.map +0 -1
  166. package/dist/api-client/help-center/index.js +0 -2
  167. package/dist/api-client/help-center/index.js.map +0 -1
  168. package/dist/api-client/help-center/native-client.d.ts +0 -1268
  169. package/dist/api-client/help-center/native-client.d.ts.map +0 -1
  170. package/dist/api-client/help-center/native-client.js +0 -6242
  171. package/dist/api-client/help-center/native-client.js.map +0 -1
  172. package/src/api-client/help-center/__tests__/converter-from-models.test.ts +0 -41
  173. package/src/api-client/help-center/__tests__/converter-to-models.test.ts +0 -89
  174. package/src/api-client/help-center/chatbot-api-client.ts +0 -122
  175. package/src/api-client/help-center/converter-from-models.ts +0 -133
  176. package/src/api-client/help-center/converter-to-models.ts +0 -127
  177. package/src/api-client/help-center/index.ts +0 -1
  178. package/src/api-client/help-center/native-client.ts +0 -5727
@@ -1,122 +0,0 @@
1
- import { inject, injectable } from '@servicetitan/react-ioc';
2
- import { Models } from '..';
3
- import {
4
- CHATBOT_CLIENT_SETTINGS,
5
- FirstParameterType,
6
- IChatbotApiClient,
7
- IChatbotClientSettings,
8
- SecondParameterType,
9
- } from '../base/chatbot-api-client';
10
- import { ConverterFromModels } from './converter-from-models';
11
- import { ConverterToModels } from './converter-to-models';
12
- // eslint-disable-next-line no-restricted-imports
13
- import { ChatClient } from './native-client';
14
-
15
- /**
16
- * Settings for the chatbot client, which includes a factory for constructor parameters, and additional settings
17
- * like instance and area which are used in the API calls.
18
- */
19
- export interface IChatbotClientSettingsHelpCenter extends IChatbotClientSettings {
20
- constructorParametersFactory: () => {
21
- baseUrl?: FirstParameterType<typeof ChatClient>;
22
- axiosInstance?: SecondParameterType<typeof ChatClient>;
23
- };
24
- instance: string;
25
- area: string;
26
- }
27
-
28
- /**
29
- * Client adapter adopts the generated titan chatbot client to the generic IChatbotApiClient interface.
30
- */
31
- @injectable()
32
- export class ChatbotApiClient implements IChatbotApiClient {
33
- private readonly client: ChatClient;
34
-
35
- constructor(
36
- @inject(CHATBOT_CLIENT_SETTINGS)
37
- private readonly chatbotApiClientSettings: IChatbotClientSettingsHelpCenter
38
- ) {
39
- const { axiosInstance, baseUrl } =
40
- this.chatbotApiClientSettings.constructorParametersFactory();
41
- this.client = new ChatClient(baseUrl, axiosInstance);
42
- }
43
-
44
- async postFeedback(body: Models.Feedback, abortSignal?: AbortSignal) {
45
- if (body?.messageId) {
46
- await this.client.sendBotMessageFeedback(
47
- body.sessionId,
48
- body.messageId,
49
- ConverterFromModels.convertMessageFeedback(body),
50
- abortSignal
51
- );
52
- return body;
53
- } else if (body?.sessionId) {
54
- await this.client.sendSessionFeedback(
55
- body.sessionId,
56
- ConverterFromModels.convertSessionFeedback(body),
57
- abortSignal
58
- );
59
- return body;
60
- }
61
- throw new Error('Feedback must contain either messageId or sessionId');
62
- }
63
-
64
- async postMessage(body: Models.UserMessage, abortSignal?: AbortSignal) {
65
- const hcMessage = ConverterFromModels.convertUserMessage(
66
- body,
67
- this.chatbotApiClientSettings.area
68
- );
69
- const botMessage = await this.client.sendUserMessage(hcMessage, abortSignal);
70
- return ConverterToModels.convertBotMessage(botMessage);
71
- }
72
-
73
- postFollowUpEmail(
74
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
75
- body: Models.UserMessage,
76
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
77
- abortSignal?: AbortSignal
78
- ): Promise<Models.BotMessage> {
79
- throw new Error('Method not implemented for Help Center chatbot API.');
80
- }
81
-
82
- async getOptions(abortSignal?: AbortSignal): Promise<Models.FrontendModel> {
83
- const filterOptions = await this.client.getFilterOptions(abortSignal);
84
- return ConverterToModels.convertFilterOptions(filterOptions);
85
- }
86
-
87
- async postSession(body: Models.Session, abortSignal?: AbortSignal) {
88
- body.data = body.data ?? {};
89
- body.data.instance ??= this.chatbotApiClientSettings.instance;
90
- const hcSession = ConverterFromModels.convertSession(body);
91
- const newSession = await this.client.createSession(hcSession.source!, abortSignal);
92
- return ConverterToModels.convertSession(newSession);
93
- }
94
-
95
- async patchSession(body: Models.Session, abortSignal?: AbortSignal) {
96
- const session = ConverterFromModels.convertSession(body);
97
- await this.client.updateSessionCategory(
98
- session.source?.category,
99
- session.source?.subCategory,
100
- session.id,
101
- abortSignal
102
- );
103
- return body;
104
- }
105
-
106
- async deleteSession(body: Models.Session, abortSignal?: AbortSignal) {
107
- const session = ConverterFromModels.convertSession(body);
108
- await this.client.closeSession(session.id, abortSignal);
109
- return body;
110
- }
111
-
112
- getTranscripts(
113
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
114
- start?: Date,
115
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
116
- end?: Date,
117
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
118
- signal?: AbortSignal
119
- ): Promise<Models.ExportHistoryMessage[]> {
120
- throw new Error('Method not implemented for Help Center chatbot API.');
121
- }
122
- }
@@ -1,133 +0,0 @@
1
- import { Models } from '..';
2
- // eslint-disable-next-line no-restricted-imports
3
- import * as HelpCenterModels from './native-client';
4
-
5
- export class ConverterFromModels {
6
- static convertSession(session: Models.ISession): HelpCenterModels.ChatbotSession {
7
- const data = session.data;
8
- return new HelpCenterModels.ChatbotSession({
9
- id: session.id,
10
- createdUtc: data?.createdUtc ? new Date(data.createdUtc) : undefined,
11
- closedUtc: data?.closedUtc ? new Date(data.closedUtc) : undefined,
12
- botId: data?.botId,
13
- source: new HelpCenterModels.SessionSource({
14
- instance: data?.instance,
15
- category: data?.category,
16
- subCategory: data?.subCategory,
17
- fullstorySessionId: data?.fullstorySessionId,
18
- }),
19
- });
20
- }
21
-
22
- static convertUserMessage(
23
- userMessage: Models.IUserMessage,
24
- area: string
25
- ): HelpCenterModels.UserMessage {
26
- const filters =
27
- ConverterFromModels.convertFilters(userMessage.selections) ??
28
- new HelpCenterModels.FilterSelections({});
29
- const data: HelpCenterModels.IUserMessage = {
30
- sessionId: userMessage.sessionId,
31
- text: userMessage.question,
32
- source: new HelpCenterModels.MessageSource({
33
- area,
34
- }),
35
- ...(filters ? { filters } : undefined),
36
- };
37
- return HelpCenterModels.UserMessage.fromJS(data);
38
- }
39
-
40
- static convertFilters(
41
- selections?: Models.ISelections
42
- ): HelpCenterModels.FilterSelections | undefined {
43
- if (!selections?.subOptions || !Object.keys(selections.subOptions).length) {
44
- return;
45
- }
46
- const data: HelpCenterModels.IFilterSelections = {};
47
- const sources = selections.subOptions.Sources;
48
- const contentTypes = selections.subOptions.ContentTypes;
49
- const productAreas = selections.subOptions.ProductAreas;
50
- if (sources?.values) {
51
- data.sources = sources.values;
52
- }
53
- if (contentTypes?.values) {
54
- data.contentTypes = contentTypes.values;
55
- }
56
- if (productAreas?.values) {
57
- data.productAreas = productAreas.values;
58
- }
59
- return new HelpCenterModels.FilterSelections(data);
60
- }
61
-
62
- static convertSessionFeedback(feedback: Models.IFeedback): HelpCenterModels.SessionFeedback {
63
- return new HelpCenterModels.SessionFeedback({
64
- description: feedback.description,
65
- rating: ConverterFromModels.convertSessionFeedbackRating(feedback.rating),
66
- });
67
- }
68
-
69
- static convertMessageFeedback(feedback: Models.IFeedback): HelpCenterModels.MessageFeedback {
70
- return new HelpCenterModels.MessageFeedback({
71
- linkUrl: feedback.linkUrl,
72
- description: feedback.description,
73
- rating: ConverterFromModels.convertMessageFeedbackRating(feedback.rating),
74
- options: ConverterFromModels.convertFeedbackOptions(feedback.options),
75
- });
76
- }
77
-
78
- static convertFeedbackOptions(
79
- feedbackOptions?: Models.FeedbackOptions[]
80
- ): HelpCenterModels.FeedbackOptions[] | undefined {
81
- if (feedbackOptions === undefined) {
82
- return;
83
- }
84
- return feedbackOptions.map(feedbackOption => {
85
- switch (feedbackOption) {
86
- case Models.FeedbackOptions.Incomplete:
87
- return HelpCenterModels.FeedbackOptions.Incomplete;
88
- case Models.FeedbackOptions.Incorrect:
89
- return HelpCenterModels.FeedbackOptions.Incorrect;
90
- case Models.FeedbackOptions.Other:
91
- return HelpCenterModels.FeedbackOptions.Other;
92
- case Models.FeedbackOptions.Unclear:
93
- return HelpCenterModels.FeedbackOptions.Unclear;
94
- case Models.FeedbackOptions.Unrelated:
95
- return HelpCenterModels.FeedbackOptions.Unrelated;
96
- default:
97
- return HelpCenterModels.FeedbackOptions.Other;
98
- }
99
- });
100
- }
101
-
102
- static convertMessageFeedbackRating(
103
- feedbackRatings?: Models.FeedbackRatings
104
- ): HelpCenterModels.MessageFeedbackRatings | undefined {
105
- if (feedbackRatings === undefined) {
106
- return;
107
- }
108
- switch (feedbackRatings) {
109
- case Models.FeedbackRatings.ThumbsDown:
110
- return HelpCenterModels.MessageFeedbackRatings.ThumbsDown;
111
- case Models.FeedbackRatings.GuardrailFeedback:
112
- return HelpCenterModels.MessageFeedbackRatings.GuardrailFeedback;
113
- case Models.FeedbackRatings.ThumbsUp:
114
- return HelpCenterModels.MessageFeedbackRatings.ThumbsUp;
115
- }
116
- }
117
-
118
- static convertSessionFeedbackRating(
119
- feedbackRatings?: Models.FeedbackRatings
120
- ): HelpCenterModels.SessionFeedbackRatings | undefined {
121
- if (feedbackRatings === undefined) {
122
- return;
123
- }
124
- switch (feedbackRatings) {
125
- case Models.FeedbackRatings.ThumbsDown:
126
- return HelpCenterModels.SessionFeedbackRatings.ThumbsDown;
127
- case Models.FeedbackRatings.ThumbsUp:
128
- return HelpCenterModels.SessionFeedbackRatings.ThumbsUp;
129
- default:
130
- return HelpCenterModels.SessionFeedbackRatings.ThumbsDown;
131
- }
132
- }
133
- }
@@ -1,127 +0,0 @@
1
- import { Models } from '..';
2
- // eslint-disable-next-line no-restricted-imports
3
- import * as HelpCenterClient from './native-client';
4
-
5
- export class ConverterToModels {
6
- static convertSession(session: HelpCenterClient.IChatbotSession): Models.Session {
7
- return new Models.Session({
8
- id: session.id,
9
- data: ConverterToModels.convertSessionData(session),
10
- });
11
- }
12
-
13
- static convertSessionData(session: HelpCenterClient.IChatbotSession): Models.Session['data'] {
14
- const data: Models.Session['data'] = {};
15
- if (session.createdUtc) {
16
- data.createdUtc = session.createdUtc.toISOString();
17
- }
18
- if (session.closedUtc) {
19
- data.closedUtc = session.closedUtc.toISOString();
20
- }
21
- if (session.botId) {
22
- data.botId = session.botId;
23
- }
24
- if (session.source) {
25
- if (session.source.instance) {
26
- data.instance = session.source.instance;
27
- }
28
- if (session.source.category) {
29
- data.category = session.source.category;
30
- }
31
- if (session.source.subCategory) {
32
- data.subCategory = session.source.subCategory;
33
- }
34
- if (session.source.fullstorySessionId) {
35
- data.fullstorySessionId = session.source.fullstorySessionId;
36
- }
37
- }
38
- return Object.keys(data).length > 0 ? data : undefined;
39
- }
40
-
41
- /**
42
- * Convert HC filters into single-level frontend model.
43
- */
44
- static convertFilterOptions(options: HelpCenterClient.IFilterOptions): Models.FrontendModel {
45
- const createFilterOption = (key: string, displayName?: string): Models.Option => {
46
- return new Models.Option({
47
- key,
48
- displayName: displayName ?? key,
49
- type: Models.OptionType.Selectable,
50
- });
51
- };
52
- const createFilterOptions = (options?: HelpCenterClient.IFilterOption[]) =>
53
- options?.map(x => createFilterOption(x.id ?? '', x.displayName));
54
- const createFilter = (
55
- key: string,
56
- displayName?: string,
57
- subOptions?: Models.Option[]
58
- ): Models.Option => {
59
- return new Models.Option({
60
- key,
61
- displayName: displayName ?? key,
62
- type: Models.OptionType.Group,
63
- subOptions,
64
- });
65
- };
66
-
67
- const subOptions: Models.Option[] = [];
68
- if (options.sources?.length) {
69
- subOptions.push(
70
- createFilter('Sources', 'Sources', createFilterOptions(options.sources))
71
- );
72
- }
73
- if (options.contentTypes?.length) {
74
- subOptions.push(
75
- createFilter(
76
- 'ContentTypes',
77
- 'Content Types',
78
- createFilterOptions(options.contentTypes)
79
- )
80
- );
81
- }
82
- if (options.productAreas?.length) {
83
- subOptions.push(
84
- createFilter(
85
- 'ProductAreas',
86
- 'Product Areas',
87
- createFilterOptions(options.productAreas)
88
- )
89
- );
90
- }
91
- return new Models.FrontendModel({
92
- options: new Models.Option({
93
- key: 'help-center-filters-root',
94
- displayName: 'help-center-filters-root',
95
- type: Models.OptionType.Group,
96
- subOptions,
97
- }),
98
- });
99
- }
100
-
101
- static convertBotMessage(botMessage: HelpCenterClient.IBotMessage): Models.BotMessage {
102
- return new Models.BotMessage({
103
- id: botMessage.id ?? 0,
104
- answer: botMessage.text ?? '',
105
- isGuardrailed: botMessage.isGuardrailed ?? false,
106
- guardFlag: botMessage.guardFlag ?? 'N',
107
- sessionId: botMessage.sessionId ?? 0,
108
- scoredUrls: ConverterToModels.convertScoredUrls(botMessage.scoredUrls),
109
- });
110
- }
111
-
112
- static convertScoredUrls(
113
- scoredUrls?: HelpCenterClient.IScoredUrl[]
114
- ): Models.ScoredUrl[] | undefined {
115
- if (scoredUrls === undefined) {
116
- return;
117
- }
118
- return scoredUrls.map(
119
- url =>
120
- new Models.ScoredUrl({
121
- url: url.url,
122
- score: url.score,
123
- title: url.title,
124
- })
125
- );
126
- }
127
- }
@@ -1 +0,0 @@
1
- export { ChatbotApiClient, IChatbotClientSettingsHelpCenter } from './chatbot-api-client';