@botonic/core 1.0.0-dev.0 → 2.23.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 (228) hide show
  1. package/CHANGELOG.md +226 -0
  2. package/README.md +7 -9
  3. package/package.json +19 -57
  4. package/src/index.d.ts +4 -0
  5. package/src/index.js +5 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/core-bot/index.d.ts +33 -0
  8. package/src/lib/core-bot/index.js +113 -0
  9. package/src/lib/core-bot/index.js.map +1 -0
  10. package/src/lib/hubtype-service/handoff.d.ts +4 -0
  11. package/src/lib/hubtype-service/handoff.js +32 -0
  12. package/src/lib/hubtype-service/handoff.js.map +1 -0
  13. package/src/lib/hubtype-service/index.d.ts +10 -0
  14. package/src/lib/hubtype-service/index.js +96 -0
  15. package/src/lib/hubtype-service/index.js.map +1 -0
  16. package/src/lib/messages/button.d.ts +8 -0
  17. package/src/lib/messages/button.js +10 -0
  18. package/src/lib/messages/button.js.map +1 -0
  19. package/src/lib/plugins/index.d.ts +2 -0
  20. package/src/lib/plugins/index.js +23 -0
  21. package/src/lib/plugins/index.js.map +1 -0
  22. package/src/lib/routes/index.d.ts +0 -0
  23. package/src/lib/routes/index.js +2 -0
  24. package/src/lib/routes/index.js.map +1 -0
  25. package/src/lib/routes/router.d.ts +14 -0
  26. package/src/lib/routes/router.js +68 -0
  27. package/src/lib/routes/router.js.map +1 -0
  28. package/src/lib/routes/types.d.ts +15 -0
  29. package/src/lib/routes/types.js +2 -0
  30. package/src/lib/routes/types.js.map +1 -0
  31. package/src/lib/utils/index.d.ts +7 -0
  32. package/{lib/esm/utils.js → src/lib/utils/index.js} +6 -34
  33. package/src/lib/utils/index.js.map +1 -0
  34. package/lib/cjs/constants.d.ts +0 -15
  35. package/lib/cjs/constants.js +0 -19
  36. package/lib/cjs/constants.js.map +0 -1
  37. package/lib/cjs/core-bot.d.ts +0 -33
  38. package/lib/cjs/core-bot.js +0 -85
  39. package/lib/cjs/core-bot.js.map +0 -1
  40. package/lib/cjs/debug/index.d.ts +0 -1
  41. package/lib/cjs/debug/index.js +0 -9
  42. package/lib/cjs/debug/index.js.map +0 -1
  43. package/lib/cjs/debug/inspector.d.ts +0 -24
  44. package/lib/cjs/debug/inspector.js +0 -72
  45. package/lib/cjs/debug/inspector.js.map +0 -1
  46. package/lib/cjs/errors.d.ts +0 -5
  47. package/lib/cjs/errors.js +0 -11
  48. package/lib/cjs/errors.js.map +0 -1
  49. package/lib/cjs/handoff.d.ts +0 -67
  50. package/lib/cjs/handoff.js +0 -183
  51. package/lib/cjs/handoff.js.map +0 -1
  52. package/lib/cjs/hubtype-service.d.ts +0 -69
  53. package/lib/cjs/hubtype-service.js +0 -190
  54. package/lib/cjs/hubtype-service.js.map +0 -1
  55. package/lib/cjs/i18n.d.ts +0 -2
  56. package/lib/cjs/i18n.js +0 -11
  57. package/lib/cjs/i18n.js.map +0 -1
  58. package/lib/cjs/index.d.ts +0 -166
  59. package/lib/cjs/index.js +0 -58
  60. package/lib/cjs/index.js.map +0 -1
  61. package/lib/cjs/models/events/connections/index.d.ts +0 -9
  62. package/lib/cjs/models/events/connections/index.js +0 -9
  63. package/lib/cjs/models/events/connections/index.js.map +0 -1
  64. package/lib/cjs/models/events/index.d.ts +0 -21
  65. package/lib/cjs/models/events/index.js +0 -11
  66. package/lib/cjs/models/events/index.js.map +0 -1
  67. package/lib/cjs/models/events/message/buttons.d.ts +0 -18
  68. package/lib/cjs/models/events/message/buttons.js +0 -3
  69. package/lib/cjs/models/events/message/buttons.js.map +0 -1
  70. package/lib/cjs/models/events/message/carousel.d.ts +0 -11
  71. package/lib/cjs/models/events/message/carousel.js +0 -3
  72. package/lib/cjs/models/events/message/carousel.js.map +0 -1
  73. package/lib/cjs/models/events/message/custom.d.ts +0 -6
  74. package/lib/cjs/models/events/message/custom.js +0 -3
  75. package/lib/cjs/models/events/message/custom.js.map +0 -1
  76. package/lib/cjs/models/events/message/index.d.ts +0 -30
  77. package/lib/cjs/models/events/message/index.js +0 -32
  78. package/lib/cjs/models/events/message/index.js.map +0 -1
  79. package/lib/cjs/models/events/message/location.d.ts +0 -6
  80. package/lib/cjs/models/events/message/location.js +0 -3
  81. package/lib/cjs/models/events/message/location.js.map +0 -1
  82. package/lib/cjs/models/events/message/media.d.ts +0 -18
  83. package/lib/cjs/models/events/message/media.js +0 -11
  84. package/lib/cjs/models/events/message/media.js.map +0 -1
  85. package/lib/cjs/models/events/message/postback.d.ts +0 -4
  86. package/lib/cjs/models/events/message/postback.js +0 -3
  87. package/lib/cjs/models/events/message/postback.js.map +0 -1
  88. package/lib/cjs/models/events/message/replies.d.ts +0 -7
  89. package/lib/cjs/models/events/message/replies.js +0 -3
  90. package/lib/cjs/models/events/message/replies.js.map +0 -1
  91. package/lib/cjs/models/events/message/text.d.ts +0 -8
  92. package/lib/cjs/models/events/message/text.js +0 -3
  93. package/lib/cjs/models/events/message/text.js.map +0 -1
  94. package/lib/cjs/models/user.d.ts +0 -10
  95. package/lib/cjs/models/user.js +0 -3
  96. package/lib/cjs/models/user.js.map +0 -1
  97. package/lib/cjs/output-parser/factory.d.ts +0 -4
  98. package/lib/cjs/output-parser/factory.js +0 -33
  99. package/lib/cjs/output-parser/factory.js.map +0 -1
  100. package/lib/cjs/output-parser/index.d.ts +0 -16
  101. package/lib/cjs/output-parser/index.js +0 -37
  102. package/lib/cjs/output-parser/index.js.map +0 -1
  103. package/lib/cjs/output-parser/parsers.d.ts +0 -28
  104. package/lib/cjs/output-parser/parsers.js +0 -138
  105. package/lib/cjs/output-parser/parsers.js.map +0 -1
  106. package/lib/cjs/output-parser/util.d.ts +0 -2
  107. package/lib/cjs/output-parser/util.js +0 -14
  108. package/lib/cjs/output-parser/util.js.map +0 -1
  109. package/lib/cjs/plugins.d.ts +0 -7
  110. package/lib/cjs/plugins.js +0 -45
  111. package/lib/cjs/plugins.js.map +0 -1
  112. package/lib/cjs/router.d.ts +0 -35
  113. package/lib/cjs/router.js +0 -262
  114. package/lib/cjs/router.js.map +0 -1
  115. package/lib/cjs/utils.d.ts +0 -10
  116. package/lib/cjs/utils.js +0 -84
  117. package/lib/cjs/utils.js.map +0 -1
  118. package/lib/esm/constants.d.ts +0 -15
  119. package/lib/esm/constants.js +0 -16
  120. package/lib/esm/constants.js.map +0 -1
  121. package/lib/esm/core-bot.d.ts +0 -33
  122. package/lib/esm/core-bot.js +0 -81
  123. package/lib/esm/core-bot.js.map +0 -1
  124. package/lib/esm/debug/index.d.ts +0 -1
  125. package/lib/esm/debug/index.js +0 -2
  126. package/lib/esm/debug/index.js.map +0 -1
  127. package/lib/esm/debug/inspector.d.ts +0 -24
  128. package/lib/esm/debug/inspector.js +0 -65
  129. package/lib/esm/debug/inspector.js.map +0 -1
  130. package/lib/esm/errors.d.ts +0 -5
  131. package/lib/esm/errors.js +0 -7
  132. package/lib/esm/errors.js.map +0 -1
  133. package/lib/esm/handoff.d.ts +0 -67
  134. package/lib/esm/handoff.js +0 -170
  135. package/lib/esm/handoff.js.map +0 -1
  136. package/lib/esm/hubtype-service.d.ts +0 -69
  137. package/lib/esm/hubtype-service.js +0 -185
  138. package/lib/esm/hubtype-service.js.map +0 -1
  139. package/lib/esm/i18n.d.ts +0 -2
  140. package/lib/esm/i18n.js +0 -7
  141. package/lib/esm/i18n.js.map +0 -1
  142. package/lib/esm/index.d.ts +0 -166
  143. package/lib/esm/index.js +0 -49
  144. package/lib/esm/index.js.map +0 -1
  145. package/lib/esm/models/events/connections/index.d.ts +0 -9
  146. package/lib/esm/models/events/connections/index.js +0 -6
  147. package/lib/esm/models/events/connections/index.js.map +0 -1
  148. package/lib/esm/models/events/index.d.ts +0 -21
  149. package/lib/esm/models/events/index.js +0 -8
  150. package/lib/esm/models/events/index.js.map +0 -1
  151. package/lib/esm/models/events/message/buttons.d.ts +0 -18
  152. package/lib/esm/models/events/message/buttons.js +0 -2
  153. package/lib/esm/models/events/message/buttons.js.map +0 -1
  154. package/lib/esm/models/events/message/carousel.d.ts +0 -11
  155. package/lib/esm/models/events/message/carousel.js +0 -2
  156. package/lib/esm/models/events/message/carousel.js.map +0 -1
  157. package/lib/esm/models/events/message/custom.d.ts +0 -6
  158. package/lib/esm/models/events/message/custom.js +0 -2
  159. package/lib/esm/models/events/message/custom.js.map +0 -1
  160. package/lib/esm/models/events/message/index.d.ts +0 -30
  161. package/lib/esm/models/events/message/index.js +0 -29
  162. package/lib/esm/models/events/message/index.js.map +0 -1
  163. package/lib/esm/models/events/message/location.d.ts +0 -6
  164. package/lib/esm/models/events/message/location.js +0 -2
  165. package/lib/esm/models/events/message/location.js.map +0 -1
  166. package/lib/esm/models/events/message/media.d.ts +0 -18
  167. package/lib/esm/models/events/message/media.js +0 -8
  168. package/lib/esm/models/events/message/media.js.map +0 -1
  169. package/lib/esm/models/events/message/postback.d.ts +0 -4
  170. package/lib/esm/models/events/message/postback.js +0 -2
  171. package/lib/esm/models/events/message/postback.js.map +0 -1
  172. package/lib/esm/models/events/message/replies.d.ts +0 -7
  173. package/lib/esm/models/events/message/replies.js +0 -2
  174. package/lib/esm/models/events/message/replies.js.map +0 -1
  175. package/lib/esm/models/events/message/text.d.ts +0 -8
  176. package/lib/esm/models/events/message/text.js +0 -2
  177. package/lib/esm/models/events/message/text.js.map +0 -1
  178. package/lib/esm/models/user.d.ts +0 -10
  179. package/lib/esm/models/user.js +0 -2
  180. package/lib/esm/models/user.js.map +0 -1
  181. package/lib/esm/output-parser/factory.d.ts +0 -4
  182. package/lib/esm/output-parser/factory.js +0 -29
  183. package/lib/esm/output-parser/factory.js.map +0 -1
  184. package/lib/esm/output-parser/index.d.ts +0 -16
  185. package/lib/esm/output-parser/index.js +0 -33
  186. package/lib/esm/output-parser/index.js.map +0 -1
  187. package/lib/esm/output-parser/parsers.d.ts +0 -28
  188. package/lib/esm/output-parser/parsers.js +0 -123
  189. package/lib/esm/output-parser/parsers.js.map +0 -1
  190. package/lib/esm/output-parser/util.d.ts +0 -2
  191. package/lib/esm/output-parser/util.js +0 -9
  192. package/lib/esm/output-parser/util.js.map +0 -1
  193. package/lib/esm/plugins.d.ts +0 -7
  194. package/lib/esm/plugins.js +0 -40
  195. package/lib/esm/plugins.js.map +0 -1
  196. package/lib/esm/router.d.ts +0 -35
  197. package/lib/esm/router.js +0 -258
  198. package/lib/esm/router.js.map +0 -1
  199. package/lib/esm/utils.d.ts +0 -10
  200. package/lib/esm/utils.js.map +0 -1
  201. package/src/constants.ts +0 -15
  202. package/src/core-bot.ts +0 -144
  203. package/src/debug/index.ts +0 -6
  204. package/src/debug/inspector.ts +0 -102
  205. package/src/errors.ts +0 -11
  206. package/src/handoff.ts +0 -268
  207. package/src/hubtype-service.ts +0 -266
  208. package/src/i18n.ts +0 -12
  209. package/src/index.ts +0 -233
  210. package/src/models/events/connections/index.ts +0 -11
  211. package/src/models/events/index.ts +0 -39
  212. package/src/models/events/message/buttons.ts +0 -23
  213. package/src/models/events/message/carousel.ts +0 -13
  214. package/src/models/events/message/custom.ts +0 -7
  215. package/src/models/events/message/index.ts +0 -37
  216. package/src/models/events/message/location.ts +0 -7
  217. package/src/models/events/message/media.ts +0 -28
  218. package/src/models/events/message/postback.ts +0 -5
  219. package/src/models/events/message/replies.ts +0 -8
  220. package/src/models/events/message/text.ts +0 -12
  221. package/src/models/user.ts +0 -10
  222. package/src/output-parser/factory.ts +0 -40
  223. package/src/output-parser/index.ts +0 -38
  224. package/src/output-parser/parsers.ts +0 -190
  225. package/src/output-parser/util.ts +0 -8
  226. package/src/plugins.ts +0 -49
  227. package/src/router.ts +0 -316
  228. package/src/utils.ts +0 -84
@@ -1,183 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deleteUser = exports.cancelHandoff = exports.getAgentVacationRanges = exports.getAvailableAgents = exports.getAvailableAgentsByQueue = exports.storeCaseRating = exports.humanHandOff = exports.HandOffBuilder = exports.getOpenQueues = void 0;
4
- const tslib_1 = require("tslib");
5
- const axios_1 = tslib_1.__importDefault(require("axios"));
6
- const HUBTYPE_API_URL = 'https://api.hubtype.com';
7
- function contextDefaults(context) {
8
- return {
9
- timeoutMs: context.timeoutMs || 10000,
10
- };
11
- }
12
- async function getOpenQueues(session, context = {}) {
13
- //be aware of https://github.com/axios/axios/issues/1543
14
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
15
- const endpointUrl = `${baseUrl}/v1/queues/get_open_queues/`;
16
- context = contextDefaults(context);
17
- const resp = await axios_1.default({
18
- headers: {
19
- Authorization: `Bearer ${session._access_token}`,
20
- },
21
- method: 'post',
22
- url: endpointUrl,
23
- data: { bot_id: session.bot.id },
24
- timeout: context.timeoutMs,
25
- });
26
- return resp.data;
27
- }
28
- exports.getOpenQueues = getOpenQueues;
29
- class HandOffBuilder {
30
- constructor(session) {
31
- this._session = session;
32
- }
33
- withQueue(queueNameOrId) {
34
- this._queue = queueNameOrId;
35
- return this;
36
- }
37
- withOnFinishPayload(payload) {
38
- this._onFinish = payload;
39
- return this;
40
- }
41
- withOnFinishPath(path) {
42
- this._onFinish = `__PATH_PAYLOAD__${path}`;
43
- return this;
44
- }
45
- withAgentEmail(email) {
46
- this._email = email;
47
- return this;
48
- }
49
- withAgentId(agentId) {
50
- this._agentId = agentId;
51
- return this;
52
- }
53
- withNote(note) {
54
- this._note = note;
55
- return this;
56
- }
57
- withCaseInfo(caseInfo) {
58
- this._caseInfo = caseInfo;
59
- return this;
60
- }
61
- withShadowing(shadowing = true) {
62
- this._shadowing = shadowing;
63
- return this;
64
- }
65
- async handOff() {
66
- return _humanHandOff(this._session, this._queue, this._onFinish, this._email, this._agentId, this._caseInfo, this._note, this._shadowing);
67
- }
68
- }
69
- exports.HandOffBuilder = HandOffBuilder;
70
- /**
71
- * @deprecated use {@link HandOffBuilder} class instead
72
- */
73
- async function humanHandOff(session, queueNameOrId = '', onFinish) {
74
- const builder = new HandOffBuilder(session);
75
- if (queueNameOrId) {
76
- builder.withQueue(queueNameOrId);
77
- }
78
- if (onFinish) {
79
- if (onFinish.path) {
80
- builder.withOnFinishPath(onFinish.path);
81
- }
82
- else if (onFinish.payload) {
83
- builder.withOnFinishPayload(onFinish.payload);
84
- }
85
- else {
86
- throw new Error('onFinish requires payload or path field');
87
- }
88
- }
89
- return builder.handOff();
90
- }
91
- exports.humanHandOff = humanHandOff;
92
- async function _humanHandOff(session, queueNameOrId = '', onFinish, agentEmail = '', agentId = '', caseInfo = '', note = '', shadowing = false) {
93
- const params = {};
94
- if (queueNameOrId) {
95
- params.queue = queueNameOrId;
96
- }
97
- if (agentEmail) {
98
- params.agent_email = agentEmail;
99
- }
100
- if (agentId) {
101
- params.agent_id = agentId;
102
- }
103
- if (caseInfo) {
104
- params.case_info = caseInfo;
105
- }
106
- if (note) {
107
- params.note = note;
108
- }
109
- if (shadowing) {
110
- params.shadowing = shadowing;
111
- }
112
- if (onFinish) {
113
- params.on_finish = onFinish;
114
- }
115
- session._botonic_action = `create_case:${JSON.stringify(params)}`;
116
- }
117
- async function storeCaseRating(session, rating, context = {}) {
118
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
119
- const chatId = session.user.id;
120
- context = contextDefaults(context);
121
- const resp = await axios_1.default({
122
- headers: {
123
- Authorization: `Bearer ${session._access_token}`,
124
- },
125
- method: 'post',
126
- url: `${baseUrl}/v1/chats/${chatId}/store_case_rating/`,
127
- data: { chat_id: chatId, rating },
128
- timeout: context.timeoutMs,
129
- });
130
- return resp.data;
131
- }
132
- exports.storeCaseRating = storeCaseRating;
133
- async function getAvailableAgentsByQueue(session, queueId) {
134
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
135
- const resp = await axios_1.default({
136
- headers: {
137
- Authorization: `Bearer ${session._access_token}`,
138
- },
139
- method: 'post',
140
- url: `${baseUrl}/v1/queues/${queueId}/get_available_agents/`,
141
- });
142
- return resp.data;
143
- }
144
- exports.getAvailableAgentsByQueue = getAvailableAgentsByQueue;
145
- async function getAvailableAgents(session) {
146
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
147
- const botId = session.bot.id;
148
- const resp = await axios_1.default({
149
- headers: {
150
- Authorization: `Bearer ${session._access_token}`,
151
- },
152
- method: 'post',
153
- url: `${baseUrl}/v1/bots/${botId}/get_agents/`,
154
- });
155
- return resp.data;
156
- }
157
- exports.getAvailableAgents = getAvailableAgents;
158
- async function getAgentVacationRanges(session, { agentId, agentEmail }) {
159
- const baseUrl = session._hubtype_api || HUBTYPE_API_URL;
160
- const botId = session.bot.id;
161
- const resp = await axios_1.default({
162
- headers: {
163
- Authorization: `Bearer ${session._access_token}`,
164
- },
165
- method: 'get',
166
- url: `${baseUrl}/v1/bots/${botId}/get_agent_vacation_ranges/`,
167
- params: { agent_id: agentId, agent_email: agentEmail },
168
- });
169
- return resp.data;
170
- }
171
- exports.getAgentVacationRanges = getAgentVacationRanges;
172
- function cancelHandoff(session, typification = null) {
173
- let action = 'discard_case';
174
- if (typification)
175
- action = `${action}:${JSON.stringify({ typification })}`;
176
- session._botonic_action = action;
177
- }
178
- exports.cancelHandoff = cancelHandoff;
179
- function deleteUser(session) {
180
- session._botonic_action = `delete_user`;
181
- }
182
- exports.deleteUser = deleteUser;
183
- //# sourceMappingURL=handoff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../src/handoff.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- import { AxiosResponse } from 'axios';
2
- import Pusher, { Channel } from 'pusher-js';
3
- import { Input, SessionUser } from './index';
4
- interface UnsentInput {
5
- id: string;
6
- ack: number;
7
- unsentInput: Input;
8
- }
9
- interface BotonicHeaders {
10
- 'X-BOTONIC-USER-ID': string;
11
- 'X-BOTONIC-LAST-MESSAGE-ID': string;
12
- 'X-BOTONIC-LAST-MESSAGE-UPDATE-DATE': string;
13
- }
14
- interface ServerConfig {
15
- activityTimeout?: number;
16
- pongTimeout?: number;
17
- }
18
- interface HubtypeServiceArgs {
19
- appId: string;
20
- user: SessionUser;
21
- lastMessageId: string;
22
- lastMessageUpdateDate: string;
23
- onEvent: any;
24
- unsentInputs: () => UnsentInput[];
25
- server: ServerConfig;
26
- }
27
- /**
28
- * Calls Hubtype APIs from Webchat
29
- */
30
- export declare class HubtypeService {
31
- appId: string;
32
- user: SessionUser;
33
- lastMessageId: string;
34
- lastMessageUpdateDate: string;
35
- onEvent: any;
36
- unsentInputs: () => UnsentInput[];
37
- pusher: Pusher | null;
38
- channel: Channel;
39
- server: ServerConfig;
40
- PUSHER_CONNECT_TIMEOUT_MS: number;
41
- constructor({ appId, user, lastMessageId, lastMessageUpdateDate, onEvent, unsentInputs, server, }: HubtypeServiceArgs);
42
- /**
43
- * @returns {Promise<void>}
44
- */
45
- init(user: any, lastMessageId: any, lastMessageUpdateDate: any): Promise<void>;
46
- /**
47
- * @returns {Promise<void>}
48
- */
49
- _initPusher(): Promise<void>;
50
- constructHeaders(): BotonicHeaders;
51
- resolveServerConfig(): ServerConfig;
52
- updateAuthHeaders(): void;
53
- handleConnectionChange(online: boolean): void;
54
- onPusherEvent(event: any): void;
55
- get pusherChannel(): string;
56
- handleSentInput(message: any): void;
57
- handleUnsentInput(message: any): void;
58
- /**
59
- * @return {Promise<void>}
60
- */
61
- postMessage(user: SessionUser, message: any): Promise<void>;
62
- static getWebchatVisibility({ appId, }: {
63
- appId: string;
64
- }): Promise<AxiosResponse<any>>;
65
- destroyPusher(): void;
66
- onConnectionRegained(): Promise<void>;
67
- resendUnsentInputs(): Promise<void>;
68
- }
69
- export {};
@@ -1,190 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HubtypeService = void 0;
4
- const tslib_1 = require("tslib");
5
- const axios_1 = tslib_1.__importDefault(require("axios"));
6
- const pusher_js_1 = tslib_1.__importDefault(require("pusher-js"));
7
- const utils_1 = require("./utils");
8
- const _WEBCHAT_PUSHER_KEY_ = utils_1.getWebpackEnvVar(
9
- // @ts-ignore
10
- typeof WEBCHAT_PUSHER_KEY !== 'undefined' && WEBCHAT_PUSHER_KEY, 'WEBCHAT_PUSHER_KEY', '434ca667c8e6cb3f641c');
11
- const _HUBTYPE_API_URL_ = utils_1.getWebpackEnvVar(
12
- // @ts-ignore
13
- typeof HUBTYPE_API_URL !== 'undefined' && HUBTYPE_API_URL, 'HUBTYPE_API_URL', 'https://api.hubtype.com');
14
- const ACTIVITY_TIMEOUT = 20 * 1000; // https://pusher.com/docs/channels/using_channels/connection#activitytimeout-integer-
15
- const PONG_TIMEOUT = 5 * 1000; // https://pusher.com/docs/channels/using_channels/connection#pongtimeout-integer-
16
- /**
17
- * Calls Hubtype APIs from Webchat
18
- */
19
- class HubtypeService {
20
- constructor({ appId, user, lastMessageId, lastMessageUpdateDate, onEvent, unsentInputs, server, }) {
21
- this.PUSHER_CONNECT_TIMEOUT_MS = 10000;
22
- this.appId = appId;
23
- this.user = user || {};
24
- this.lastMessageId = lastMessageId;
25
- this.lastMessageUpdateDate = lastMessageUpdateDate;
26
- this.onEvent = onEvent;
27
- this.unsentInputs = unsentInputs;
28
- this.server = server;
29
- if (this.user.id && (lastMessageId || lastMessageUpdateDate)) {
30
- // It's safe not awaiting Promise because:
31
- // * it will never be called from AWS lambda
32
- // * though init() is called again from postMesage, it does nothing if Pusher already created
33
- // @ts-ignore
34
- this.init();
35
- }
36
- }
37
- /**
38
- * @returns {Promise<void>}
39
- */
40
- init(user, lastMessageId, lastMessageUpdateDate) {
41
- if (user)
42
- this.user = user;
43
- if (lastMessageId)
44
- this.lastMessageId = lastMessageId;
45
- if (lastMessageUpdateDate)
46
- this.lastMessageUpdateDate = lastMessageUpdateDate;
47
- return this._initPusher();
48
- }
49
- /**
50
- * @returns {Promise<void>}
51
- */
52
- _initPusher() {
53
- if (this.pusher)
54
- return Promise.resolve();
55
- if (!this.user.id || !this.appId) {
56
- // TODO recover user & appId somehow
57
- return Promise.reject('No User or appId. Clear cache and reload');
58
- }
59
- this.pusher = new pusher_js_1.default(_WEBCHAT_PUSHER_KEY_, Object.assign({ cluster: 'eu', authEndpoint: `${_HUBTYPE_API_URL_}/v1/provider_accounts/webhooks/webchat/${this.appId}/auth/`, forceTLS: true, auth: {
60
- headers: this.constructHeaders(),
61
- } }, this.resolveServerConfig()));
62
- this.channel = this.pusher.subscribe(this.pusherChannel);
63
- const connectionPromise = new Promise((resolve, reject) => {
64
- const cleanAndReject = msg => {
65
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
66
- clearTimeout(connectTimeout);
67
- this.destroyPusher();
68
- reject(msg);
69
- };
70
- const connectTimeout = setTimeout(() => cleanAndReject('Connection Timeout'), this.PUSHER_CONNECT_TIMEOUT_MS);
71
- this.channel.bind('pusher:subscription_succeeded', () => {
72
- // Once subscribed, we know that authentication has been done: https://pusher.com/docs/channels/server_api/authenticating-users
73
- this.onConnectionRegained();
74
- clearTimeout(connectTimeout);
75
- resolve();
76
- });
77
- this.channel.bind('botonic_response', data => this.onPusherEvent(data));
78
- this.channel.bind('update_message_info', data => this.onPusherEvent(data));
79
- this.pusher &&
80
- this.pusher.connection.bind('error', event => {
81
- if (event.type == 'WebSocketError')
82
- this.handleConnectionChange(false);
83
- else {
84
- const errorMsg = event.error && event.error.data
85
- ? event.error.data.code || event.error.data.message
86
- : 'Connection error';
87
- cleanAndReject(`Pusher error (${errorMsg})`);
88
- }
89
- });
90
- });
91
- this.pusher.connection.bind('state_change', states => {
92
- if (states.current === 'connecting')
93
- this.updateAuthHeaders();
94
- if (states.current === 'connected')
95
- this.handleConnectionChange(true);
96
- if (states.current === 'unavailable')
97
- this.handleConnectionChange(false);
98
- });
99
- return connectionPromise;
100
- }
101
- constructHeaders() {
102
- const headers = {};
103
- if (this.user && this.user.id)
104
- headers['X-BOTONIC-USER-ID'] = this.user.id;
105
- if (this.lastMessageId)
106
- headers['X-BOTONIC-LAST-MESSAGE-ID'] = this.lastMessageId;
107
- if (this.lastMessageUpdateDate)
108
- headers['X-BOTONIC-LAST-MESSAGE-UPDATE-DATE'] = this.lastMessageUpdateDate;
109
- return headers;
110
- }
111
- resolveServerConfig() {
112
- if (!this.server) {
113
- return { activityTimeout: ACTIVITY_TIMEOUT, pongTimeout: PONG_TIMEOUT };
114
- }
115
- return {
116
- activityTimeout: this.server.activityTimeout || ACTIVITY_TIMEOUT,
117
- pongTimeout: this.server.pongTimeout || PONG_TIMEOUT,
118
- };
119
- }
120
- updateAuthHeaders() {
121
- if (this.pusher) {
122
- this.pusher.config.auth.headers = Object.assign(Object.assign({}, this.pusher.config.auth.headers), this.constructHeaders());
123
- }
124
- }
125
- handleConnectionChange(online) {
126
- this.onPusherEvent({ action: 'connectionChange', online });
127
- }
128
- onPusherEvent(event) {
129
- if (this.onEvent && typeof this.onEvent === 'function')
130
- this.onEvent(event);
131
- }
132
- get pusherChannel() {
133
- return `private-encrypted-${this.appId}-${this.user.id}`;
134
- }
135
- handleSentInput(message) {
136
- this.onEvent({
137
- action: 'update_message_info',
138
- message: { id: message.id, ack: 1 },
139
- });
140
- }
141
- handleUnsentInput(message) {
142
- this.onEvent({
143
- action: 'update_message_info',
144
- message: { id: message.id, ack: 0, unsentInput: message },
145
- });
146
- }
147
- /**
148
- * @return {Promise<void>}
149
- */
150
- async postMessage(user, message) {
151
- try {
152
- // @ts-ignore
153
- await this.init(user);
154
- await axios_1.default.post(`${_HUBTYPE_API_URL_}/v1/provider_accounts/webhooks/webchat/${this.appId}/`, {
155
- sender: this.user,
156
- message: message,
157
- }, {
158
- validateStatus: status => status === 200,
159
- });
160
- this.handleSentInput(message);
161
- }
162
- catch (e) {
163
- this.handleUnsentInput(message);
164
- }
165
- return Promise.resolve();
166
- }
167
- static async getWebchatVisibility({ appId, }) {
168
- return axios_1.default.get(`${_HUBTYPE_API_URL_}/v1/provider_accounts/${appId}/visibility/`);
169
- }
170
- destroyPusher() {
171
- if (!this.pusher)
172
- return;
173
- this.pusher.disconnect();
174
- this.pusher.unsubscribe(this.pusherChannel);
175
- this.pusher.unbind_all();
176
- this.pusher.channels = {};
177
- this.pusher = null;
178
- }
179
- async onConnectionRegained() {
180
- await this.resendUnsentInputs();
181
- }
182
- async resendUnsentInputs() {
183
- for (const message of this.unsentInputs()) {
184
- message.unsentInput &&
185
- (await this.postMessage(this.user, message.unsentInput));
186
- }
187
- }
188
- }
189
- exports.HubtypeService = HubtypeService;
190
- //# sourceMappingURL=hubtype-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hubtype-service.js","sourceRoot":"","sources":["../../src/hubtype-service.ts"],"names":[],"mappings":"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"}
package/lib/cjs/i18n.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { Locales } from './index';
2
- export declare const getString: (locales: Locales, locale: string, stringID: string) => string;
package/lib/cjs/i18n.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getString = void 0;
4
- const getString = (locales, locale, stringID) => {
5
- let l = stringID.split('.').reduce((o, i) => o[i], locales[locale]);
6
- if (l instanceof Array)
7
- l = l[Math.floor(Math.random() * l.length)];
8
- return String(l);
9
- };
10
- exports.getString = getString;
11
- //# sourceMappingURL=i18n.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/i18n.ts"],"names":[],"mappings":";;;AAGO,MAAM,SAAS,GAAG,CACvB,OAAgB,EAChB,MAAc,EACd,QAAgB,EACR,EAAE;IACV,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACnE,IAAI,CAAC,YAAY,KAAK;QAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IACnE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,CAAC,CAAA;AARY,QAAA,SAAS,aAQrB"}
@@ -1,166 +0,0 @@
1
- import { BotonicEvent } from './models/events';
2
- export { Providers } from './constants';
3
- export { CoreBot } from './core-bot';
4
- export * from './debug';
5
- export * from './handoff';
6
- export { HubtypeService } from './hubtype-service';
7
- export { getString } from './i18n';
8
- export { Router } from './router';
9
- export * from './utils';
10
- export declare type CaseStatusType = typeof CASE_STATUS.ATTENDING | typeof CASE_STATUS.IDLE | typeof CASE_STATUS.RESOLVED | typeof CASE_STATUS.WAITING;
11
- export declare type CaseResolution = typeof CASE_RESOLUTION.BANNED | typeof CASE_RESOLUTION.NOK | typeof CASE_RESOLUTION.NOT_SOLVED | typeof CASE_RESOLUTION.OK;
12
- export declare const PROVIDER: Readonly<{
13
- DEV: string;
14
- FACEBOOK: string;
15
- GENERIC: string;
16
- INTERCOM: string;
17
- SMOOCH: string;
18
- TELEGRAM: string;
19
- TWITTER: string;
20
- WEBCHAT: string;
21
- WECHAT: string;
22
- WHATSAPP: string;
23
- }>;
24
- export declare const INPUT: Readonly<{
25
- TEXT: string;
26
- POSTBACK: string;
27
- AUDIO: string;
28
- IMAGE: string;
29
- VIDEO: string;
30
- DOCUMENT: string;
31
- LOCATION: string;
32
- CONTACT: string;
33
- BUTTON_MESSAGE: string;
34
- CAROUSEL: string;
35
- CUSTOM: string;
36
- WEBCHAT_SETTINGS: string;
37
- WHATSAPP_TEMPLATE: string;
38
- RAW: string;
39
- }>;
40
- export declare const CASE_STATUS: Readonly<{
41
- WAITING: string;
42
- ATTENDING: string;
43
- IDLE: string;
44
- RESOLVED: string;
45
- }>;
46
- export declare const CASE_RESOLUTION: Readonly<{
47
- OK: string;
48
- NOK: string;
49
- NOT_SOLVED: string;
50
- BANNED: string;
51
- }>;
52
- export interface Locales {
53
- [id: string]: string | string[] | Locales;
54
- }
55
- interface PluginConstructor<T> {
56
- new (arg: T): Plugin;
57
- }
58
- export interface PluginConfig<T> {
59
- id: string;
60
- options?: T;
61
- resolve: {
62
- default: PluginConstructor<T>;
63
- };
64
- }
65
- export declare type InputType = typeof INPUT.AUDIO | typeof INPUT.BUTTON_MESSAGE | typeof INPUT.CAROUSEL | typeof INPUT.CONTACT | typeof INPUT.CUSTOM | typeof INPUT.DOCUMENT | typeof INPUT.IMAGE | typeof INPUT.LOCATION | typeof INPUT.POSTBACK | typeof INPUT.TEXT | typeof INPUT.VIDEO | typeof INPUT.WEBCHAT_SETTINGS | typeof INPUT.WHATSAPP_TEMPLATE;
66
- export interface IntentResult {
67
- intent: string;
68
- confidence: number;
69
- }
70
- /** Generated by Translation plugins: GoogleTranslation **/
71
- export interface Translations {
72
- [languageCode: string]: string;
73
- }
74
- /** Fields set by NLU plugins: Luis, Dialogflow, ... **/
75
- export interface NluResult {
76
- confidence: number;
77
- intent: string;
78
- intents: IntentResult[];
79
- language: string;
80
- entities?: any;
81
- translations: Translations;
82
- }
83
- export interface Input extends Partial<NluResult> {
84
- data?: string;
85
- path?: string;
86
- payload?: string;
87
- type: InputType;
88
- }
89
- export declare type ProviderType = typeof PROVIDER.DEV | typeof PROVIDER.FACEBOOK | typeof PROVIDER.GENERIC | typeof PROVIDER.INTERCOM | typeof PROVIDER.SMOOCH | typeof PROVIDER.TELEGRAM | typeof PROVIDER.TWITTER | typeof PROVIDER.WEBCHAT | typeof PROVIDER.WECHAT | typeof PROVIDER.WHATSAPP;
90
- export interface SessionUser {
91
- id: string;
92
- username?: string;
93
- name?: string;
94
- provider: ProviderType;
95
- extra_data?: any;
96
- imp_id?: string;
97
- provider_id?: string;
98
- }
99
- export interface Session {
100
- bot: {
101
- id: string;
102
- name?: string;
103
- };
104
- __locale?: string;
105
- __retries?: number;
106
- is_first_interaction: boolean;
107
- last_session?: any;
108
- organization?: string;
109
- user: SessionUser;
110
- _hubtype_case_status?: CaseStatusType;
111
- _hubtype_case_typification?: string;
112
- _shadowing?: boolean;
113
- }
114
- declare type InputMatcher = (input: Input) => boolean;
115
- declare type ParamsMatcher = {
116
- [key: string]: string;
117
- } | ((params: {
118
- [key: string]: string;
119
- }) => boolean);
120
- declare type SessionMatcher = (session: Session) => boolean;
121
- declare type RequestMatcher = (request: BotRequest) => boolean;
122
- declare type StringMatcher = RegExp | string | ((data: string) => boolean);
123
- export declare type RouteMatcher = InputMatcher | ParamsMatcher | RequestMatcher | SessionMatcher | StringMatcher;
124
- export interface Route {
125
- action?: any;
126
- childRoutes?: Route[];
127
- defaultAction?: any;
128
- lastRoutePath?: string;
129
- ignoreRetry?: boolean;
130
- path?: StringMatcher;
131
- redirect?: string;
132
- retry?: number;
133
- retryAction?: any;
134
- input?: InputMatcher;
135
- intent?: StringMatcher;
136
- params?: ParamsMatcher;
137
- payload?: StringMatcher;
138
- request?: RequestMatcher;
139
- session?: SessionMatcher;
140
- text?: StringMatcher;
141
- data?: StringMatcher;
142
- type?: StringMatcher;
143
- }
144
- export declare type Routes<R = Route> = R[] | ((_: BotRequest) => R[]);
145
- export interface BotRequest {
146
- input: Input;
147
- lastRoutePath: string;
148
- session: Session;
149
- }
150
- /** The response of the bot for the triggered actions, which can be
151
- * the one matched by the routes, the default action and the retry actions.
152
- * See Response at @botonic/react's index.d.ts for the React type
153
- * */
154
- export interface BotResponse extends BotRequest {
155
- response: any;
156
- parsedResponse: Partial<BotonicEvent>[] | null;
157
- }
158
- export declare type PluginPreRequest = BotRequest;
159
- export declare type PluginPostRequest = BotResponse;
160
- export interface Plugin {
161
- post(_: PluginPostRequest): void;
162
- pre(pluginRequest: PluginPreRequest): void;
163
- }
164
- export declare type Params = {
165
- [key: string]: string;
166
- };