@botonic/core 1.0.0-alpha.0 → 1.0.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/constants.d.ts +4 -0
- package/lib/cjs/constants.js +8 -0
- package/lib/cjs/constants.js.map +1 -0
- package/lib/cjs/core-bot.d.ts +36 -0
- package/lib/cjs/core-bot.js +96 -0
- package/lib/cjs/core-bot.js.map +1 -0
- package/lib/cjs/debug/index.d.ts +1 -0
- package/lib/cjs/debug/index.js +5 -0
- package/lib/cjs/debug/index.js.map +1 -0
- package/lib/cjs/debug/inspector.d.ts +24 -0
- package/lib/{debug → cjs/debug}/inspector.js +5 -3
- package/lib/cjs/debug/inspector.js.map +1 -0
- package/lib/cjs/handoff.d.ts +67 -0
- package/lib/{handoff.js → cjs/handoff.js} +25 -12
- package/lib/cjs/handoff.js.map +1 -0
- package/lib/cjs/hubtype-service.d.ts +69 -0
- package/lib/{hubtype-service.js → cjs/hubtype-service.js} +17 -14
- package/lib/cjs/hubtype-service.js.map +1 -0
- package/lib/cjs/i18n.d.ts +2 -0
- package/lib/{i18n.js → cjs/i18n.js} +0 -1
- package/lib/cjs/i18n.js.map +1 -0
- package/lib/cjs/index.d.ts +11 -0
- package/lib/cjs/index.js +15 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/models/bot-state.d.ts +11 -0
- package/lib/cjs/models/bot-state.js +3 -0
- package/lib/cjs/models/bot-state.js.map +1 -0
- package/lib/cjs/models/channels.d.ts +9 -0
- package/lib/cjs/models/channels.js +14 -0
- package/lib/cjs/models/channels.js.map +1 -0
- package/lib/cjs/models/events/base-event.d.ts +20 -0
- package/lib/{models/events/index.js → cjs/models/events/base-event.js} +7 -1
- package/lib/cjs/models/events/base-event.js.map +1 -0
- package/lib/cjs/models/events/botonic-event.d.ts +4 -0
- package/lib/cjs/models/events/botonic-event.js +3 -0
- package/lib/cjs/models/events/botonic-event.js.map +1 -0
- package/lib/{models/events/connections/index.d.ts → cjs/models/events/connection/connection-event.d.ts} +1 -1
- package/lib/{models/events/connections/index.js → cjs/models/events/connection/connection-event.js} +1 -1
- package/lib/cjs/models/events/connection/connection-event.js.map +1 -0
- package/lib/cjs/models/events/connection/index.d.ts +1 -0
- package/lib/cjs/models/events/connection/index.js +5 -0
- package/lib/cjs/models/events/connection/index.js.map +1 -0
- package/lib/cjs/models/events/index.d.ts +4 -0
- package/lib/cjs/models/events/index.js +8 -0
- package/lib/cjs/models/events/index.js.map +1 -0
- package/lib/cjs/models/events/integration/index.d.ts +1 -0
- package/lib/cjs/models/events/integration/index.js +5 -0
- package/lib/cjs/models/events/integration/index.js.map +1 -0
- package/lib/cjs/models/events/integration/integration-event.d.ts +6 -0
- package/lib/cjs/models/events/integration/integration-event.js +3 -0
- package/lib/cjs/models/events/integration/integration-event.js.map +1 -0
- package/lib/{models → cjs/models}/events/message/buttons.d.ts +0 -0
- package/lib/{models → cjs/models}/events/message/buttons.js +0 -0
- package/lib/cjs/models/events/message/buttons.js.map +1 -0
- package/lib/{models → cjs/models}/events/message/carousel.d.ts +1 -1
- package/lib/{models → cjs/models}/events/message/carousel.js +0 -0
- package/lib/cjs/models/events/message/carousel.js.map +1 -0
- package/lib/{models → cjs/models}/events/message/custom.d.ts +2 -2
- package/lib/{models → cjs/models}/events/message/custom.js +0 -0
- package/lib/cjs/models/events/message/custom.js.map +1 -0
- package/lib/cjs/models/events/message/index.d.ts +9 -0
- package/lib/cjs/models/events/message/index.js +13 -0
- package/lib/cjs/models/events/message/index.js.map +1 -0
- package/lib/{models → cjs/models}/events/message/location.d.ts +1 -1
- package/lib/{models → cjs/models}/events/message/location.js +0 -0
- package/lib/cjs/models/events/message/location.js.map +1 -0
- package/lib/{models → cjs/models}/events/message/media.d.ts +1 -1
- package/lib/cjs/models/events/message/media.js +11 -0
- package/lib/cjs/models/events/message/media.js.map +1 -0
- package/lib/{models/events/message/index.d.ts → cjs/models/events/message/message-event.d.ts} +2 -1
- package/lib/{models/events/message/index.js → cjs/models/events/message/message-event.js} +5 -1
- package/lib/cjs/models/events/message/message-event.js.map +1 -0
- package/lib/cjs/models/events/message/postback.d.ts +4 -0
- package/lib/cjs/models/events/message/postback.js +3 -0
- package/lib/cjs/models/events/message/postback.js.map +1 -0
- package/lib/{models → cjs/models}/events/message/replies.d.ts +0 -0
- package/lib/{models → cjs/models}/events/message/replies.js +0 -0
- package/lib/cjs/models/events/message/replies.js.map +1 -0
- package/lib/{models → cjs/models}/events/message/text.d.ts +1 -1
- package/lib/{models → cjs/models}/events/message/text.js +0 -0
- package/lib/cjs/models/events/message/text.js.map +1 -0
- package/lib/cjs/models/index.d.ts +6 -0
- package/lib/cjs/models/index.js +10 -0
- package/lib/cjs/models/index.js.map +1 -0
- package/lib/cjs/models/legacy-types.d.ts +184 -0
- package/lib/cjs/models/legacy-types.js +59 -0
- package/lib/cjs/models/legacy-types.js.map +1 -0
- package/lib/cjs/models/session.d.ts +3 -0
- package/lib/cjs/models/session.js +3 -0
- package/lib/cjs/models/session.js.map +1 -0
- package/lib/cjs/models/user.d.ts +14 -0
- package/lib/{models → cjs/models}/user.js +0 -0
- package/lib/{models → cjs/models}/user.js.map +1 -1
- package/lib/cjs/output-parser/botonic-output-parser.d.ts +16 -0
- package/lib/{output-parser/index.js → cjs/output-parser/botonic-output-parser.js} +8 -2
- package/lib/cjs/output-parser/botonic-output-parser.js.map +1 -0
- package/lib/{output-parser → cjs/output-parser}/factory.d.ts +1 -1
- package/lib/{output-parser → cjs/output-parser}/factory.js +9 -7
- package/lib/cjs/output-parser/factory.js.map +1 -0
- package/lib/cjs/output-parser/index.d.ts +3 -0
- package/lib/cjs/output-parser/index.js +7 -0
- package/lib/cjs/output-parser/index.js.map +1 -0
- package/lib/{output-parser → cjs/output-parser}/parsers.d.ts +4 -8
- package/lib/{output-parser → cjs/output-parser}/parsers.js +41 -26
- package/lib/cjs/output-parser/parsers.js.map +1 -0
- package/lib/cjs/plugins.d.ts +6 -0
- package/lib/{plugins.js → cjs/plugins.js} +10 -6
- package/lib/cjs/plugins.js.map +1 -0
- package/lib/cjs/routing/index.d.ts +2 -0
- package/lib/cjs/routing/index.js +6 -0
- package/lib/cjs/routing/index.js.map +1 -0
- package/lib/cjs/routing/router-utils.d.ts +11 -0
- package/lib/cjs/routing/router-utils.js +89 -0
- package/lib/cjs/routing/router-utils.js.map +1 -0
- package/lib/cjs/routing/router.d.ts +54 -0
- package/lib/cjs/routing/router.js +319 -0
- package/lib/cjs/routing/router.js.map +1 -0
- package/lib/cjs/utils.d.ts +11 -0
- package/lib/{utils.js → cjs/utils.js} +14 -5
- package/lib/cjs/utils.js.map +1 -0
- package/lib/esm/constants.d.ts +4 -0
- package/lib/esm/constants.js +5 -0
- package/lib/esm/constants.js.map +1 -0
- package/lib/esm/core-bot.d.ts +36 -0
- package/lib/esm/core-bot.js +92 -0
- package/lib/esm/core-bot.js.map +1 -0
- package/lib/esm/debug/index.d.ts +1 -0
- package/lib/esm/debug/index.js +2 -0
- package/lib/esm/debug/index.js.map +1 -0
- package/lib/esm/debug/inspector.d.ts +24 -0
- package/lib/esm/debug/inspector.js +65 -0
- package/lib/esm/debug/inspector.js.map +1 -0
- package/lib/esm/handoff.d.ts +67 -0
- package/lib/esm/handoff.js +173 -0
- package/lib/esm/handoff.js.map +1 -0
- package/lib/esm/hubtype-service.d.ts +69 -0
- package/lib/esm/hubtype-service.js +185 -0
- package/lib/esm/hubtype-service.js.map +1 -0
- package/lib/esm/i18n.d.ts +2 -0
- package/lib/esm/i18n.js +7 -0
- package/lib/esm/i18n.js.map +1 -0
- package/lib/esm/index.d.ts +11 -0
- package/lib/esm/index.js +12 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/models/bot-state.d.ts +11 -0
- package/lib/esm/models/bot-state.js +2 -0
- package/lib/esm/models/bot-state.js.map +1 -0
- package/lib/esm/models/channels.d.ts +9 -0
- package/lib/esm/models/channels.js +11 -0
- package/lib/esm/models/channels.js.map +1 -0
- package/lib/esm/models/events/base-event.d.ts +20 -0
- package/lib/esm/models/events/base-event.js +14 -0
- package/lib/esm/models/events/base-event.js.map +1 -0
- package/lib/esm/models/events/botonic-event.d.ts +4 -0
- package/lib/esm/models/events/botonic-event.js +2 -0
- package/lib/esm/models/events/botonic-event.js.map +1 -0
- package/lib/esm/models/events/connection/connection-event.d.ts +9 -0
- package/lib/esm/models/events/connection/connection-event.js +6 -0
- package/lib/esm/models/events/connection/connection-event.js.map +1 -0
- package/lib/esm/models/events/connection/index.d.ts +1 -0
- package/lib/esm/models/events/connection/index.js +2 -0
- package/lib/esm/models/events/connection/index.js.map +1 -0
- package/lib/esm/models/events/index.d.ts +4 -0
- package/lib/esm/models/events/index.js +5 -0
- package/lib/esm/models/events/index.js.map +1 -0
- package/lib/esm/models/events/integration/index.d.ts +1 -0
- package/lib/esm/models/events/integration/index.js +2 -0
- package/lib/esm/models/events/integration/index.js.map +1 -0
- package/lib/esm/models/events/integration/integration-event.d.ts +6 -0
- package/lib/esm/models/events/integration/integration-event.js +2 -0
- package/lib/esm/models/events/integration/integration-event.js.map +1 -0
- package/lib/esm/models/events/message/buttons.d.ts +18 -0
- package/lib/esm/models/events/message/buttons.js +2 -0
- package/lib/esm/models/events/message/buttons.js.map +1 -0
- package/lib/esm/models/events/message/carousel.d.ts +11 -0
- package/lib/esm/models/events/message/carousel.js +2 -0
- package/lib/esm/models/events/message/carousel.js.map +1 -0
- package/lib/esm/models/events/message/custom.d.ts +6 -0
- package/lib/esm/models/events/message/custom.js +2 -0
- package/lib/esm/models/events/message/custom.js.map +1 -0
- package/lib/esm/models/events/message/index.d.ts +9 -0
- package/lib/esm/models/events/message/index.js +10 -0
- package/lib/esm/models/events/message/index.js.map +1 -0
- package/lib/esm/models/events/message/location.d.ts +6 -0
- package/lib/esm/models/events/message/location.js +2 -0
- package/lib/esm/models/events/message/location.js.map +1 -0
- package/lib/esm/models/events/message/media.d.ts +18 -0
- package/lib/esm/models/events/message/media.js +8 -0
- package/lib/esm/models/events/message/media.js.map +1 -0
- package/lib/esm/models/events/message/message-event.d.ts +30 -0
- package/lib/esm/models/events/message/message-event.js +29 -0
- package/lib/esm/models/events/message/message-event.js.map +1 -0
- package/lib/esm/models/events/message/postback.d.ts +4 -0
- package/lib/esm/models/events/message/postback.js +2 -0
- package/lib/esm/models/events/message/postback.js.map +1 -0
- package/lib/esm/models/events/message/replies.d.ts +7 -0
- package/lib/esm/models/events/message/replies.js +2 -0
- package/lib/esm/models/events/message/replies.js.map +1 -0
- package/lib/esm/models/events/message/text.d.ts +8 -0
- package/lib/esm/models/events/message/text.js +2 -0
- package/lib/esm/models/events/message/text.js.map +1 -0
- package/lib/esm/models/index.d.ts +6 -0
- package/lib/esm/models/index.js +7 -0
- package/lib/esm/models/index.js.map +1 -0
- package/lib/esm/models/legacy-types.d.ts +184 -0
- package/lib/esm/models/legacy-types.js +56 -0
- package/lib/esm/models/legacy-types.js.map +1 -0
- package/lib/esm/models/session.d.ts +3 -0
- package/lib/esm/models/session.js +2 -0
- package/lib/esm/models/session.js.map +1 -0
- package/lib/esm/models/user.d.ts +14 -0
- package/lib/esm/models/user.js +2 -0
- package/lib/esm/models/user.js.map +1 -0
- package/lib/esm/output-parser/botonic-output-parser.d.ts +16 -0
- package/lib/esm/output-parser/botonic-output-parser.js +33 -0
- package/lib/esm/output-parser/botonic-output-parser.js.map +1 -0
- package/lib/esm/output-parser/factory.d.ts +4 -0
- package/lib/esm/output-parser/factory.js +28 -0
- package/lib/esm/output-parser/factory.js.map +1 -0
- package/lib/esm/output-parser/index.d.ts +3 -0
- package/lib/esm/output-parser/index.js +4 -0
- package/lib/esm/output-parser/index.js.map +1 -0
- package/lib/esm/output-parser/parsers.d.ts +22 -0
- package/lib/esm/output-parser/parsers.js +130 -0
- package/lib/esm/output-parser/parsers.js.map +1 -0
- package/lib/esm/plugins.d.ts +6 -0
- package/lib/esm/plugins.js +43 -0
- package/lib/esm/plugins.js.map +1 -0
- package/lib/esm/routing/index.d.ts +2 -0
- package/lib/esm/routing/index.js +3 -0
- package/lib/esm/routing/index.js.map +1 -0
- package/lib/esm/routing/router-utils.d.ts +11 -0
- package/lib/esm/routing/router-utils.js +79 -0
- package/lib/esm/routing/router-utils.js.map +1 -0
- package/lib/esm/routing/router.d.ts +54 -0
- package/lib/esm/routing/router.js +315 -0
- package/lib/esm/routing/router.js.map +1 -0
- package/lib/esm/utils.d.ts +11 -0
- package/lib/esm/utils.js +78 -0
- package/lib/esm/utils.js.map +1 -0
- package/package.json +15 -8
- package/src/constants.ts +6 -0
- package/src/core-bot.ts +181 -0
- package/src/{types/debug/index.d.ts → debug/index.ts} +0 -0
- package/src/debug/{inspector.js → inspector.ts} +39 -14
- package/src/{handoff.js → handoff.ts} +103 -26
- package/src/{hubtype-service.js → hubtype-service.ts} +77 -35
- package/src/{i18n.js → i18n.ts} +7 -1
- package/src/index.ts +11 -0
- package/src/models/bot-state.ts +12 -0
- package/src/models/channels.ts +9 -0
- package/src/models/events/base-event.ts +22 -0
- package/src/models/events/botonic-event.ts +26 -0
- package/src/models/events/{connections/index.ts → connection/connection-event.ts} +1 -1
- package/src/models/events/connection/index.ts +1 -0
- package/src/models/events/index.ts +4 -37
- package/src/models/events/integration/index.ts +1 -0
- package/src/models/events/integration/integration-event.ts +13 -0
- package/src/models/events/message/carousel.ts +1 -1
- package/src/models/events/message/custom.ts +2 -2
- package/src/models/events/message/index.ts +9 -33
- package/src/models/events/message/location.ts +1 -1
- package/src/models/events/message/media.ts +1 -1
- package/src/models/events/message/message-event.ts +37 -0
- package/src/models/events/message/postback.ts +5 -0
- package/src/models/events/message/text.ts +1 -1
- package/src/models/index.ts +6 -0
- package/src/models/legacy-types.ts +262 -0
- package/src/models/session.ts +3 -0
- package/src/models/user.ts +10 -3
- package/src/output-parser/botonic-output-parser.ts +38 -0
- package/src/output-parser/factory.ts +5 -3
- package/src/output-parser/index.ts +3 -32
- package/src/output-parser/parsers.ts +45 -18
- package/src/{plugins.js → plugins.ts} +28 -13
- package/src/routing/index.ts +2 -0
- package/src/routing/router-utils.ts +100 -0
- package/src/routing/router.ts +415 -0
- package/src/{utils.js → utils.ts} +26 -13
- package/index.d.ts +0 -1
- package/lib/constants.d.ts +0 -15
- package/lib/constants.js +0 -19
- package/lib/constants.js.map +0 -1
- package/lib/core-bot.d.ts +0 -40
- package/lib/core-bot.js +0 -80
- package/lib/core-bot.js.map +0 -1
- package/lib/debug/index.d.ts +0 -1
- package/lib/debug/index.js +0 -9
- package/lib/debug/index.js.map +0 -1
- package/lib/debug/inspector.d.ts +0 -20
- package/lib/debug/inspector.js.map +0 -1
- package/lib/debug/inspector.test.d.ts +0 -1
- package/lib/debug/inspector.test.js +0 -8
- package/lib/debug/inspector.test.js.map +0 -1
- package/lib/errors.d.ts +0 -4
- package/lib/errors.js +0 -11
- package/lib/errors.js.map +0 -1
- package/lib/handoff.d.ts +0 -34
- package/lib/handoff.js.map +0 -1
- package/lib/handoff.test.d.ts +0 -1
- package/lib/handoff.test.js +0 -62
- package/lib/handoff.test.js.map +0 -1
- package/lib/hubtype-service.d.ts +0 -58
- package/lib/hubtype-service.js.map +0 -1
- package/lib/hubtype-service.test.d.ts +0 -1
- package/lib/hubtype-service.test.js +0 -21
- package/lib/hubtype-service.test.js.map +0 -1
- package/lib/i18n.d.ts +0 -1
- package/lib/i18n.js.map +0 -1
- package/lib/index.d.ts +0 -48
- package/lib/index.js +0 -58
- package/lib/index.js.map +0 -1
- package/lib/models/events/connections/index.js.map +0 -1
- package/lib/models/events/index.d.ts +0 -20
- package/lib/models/events/index.js.map +0 -1
- package/lib/models/events/message/buttons.js.map +0 -1
- package/lib/models/events/message/carousel.js.map +0 -1
- package/lib/models/events/message/custom.js.map +0 -1
- package/lib/models/events/message/index.js.map +0 -1
- package/lib/models/events/message/location.js.map +0 -1
- package/lib/models/events/message/media.js +0 -11
- package/lib/models/events/message/media.js.map +0 -1
- package/lib/models/events/message/replies.js.map +0 -1
- package/lib/models/events/message/text.js.map +0 -1
- package/lib/models/user.d.ts +0 -9
- package/lib/output-parser/factory.js.map +0 -1
- package/lib/output-parser/index.d.ts +0 -11
- package/lib/output-parser/index.js.map +0 -1
- package/lib/output-parser/parsers.js.map +0 -1
- package/lib/output-parser/util.d.ts +0 -2
- package/lib/output-parser/util.js +0 -14
- package/lib/output-parser/util.js.map +0 -1
- package/lib/plugins.d.ts +0 -2
- package/lib/plugins.js.map +0 -1
- package/lib/router.d.ts +0 -55
- package/lib/router.js +0 -268
- package/lib/router.js.map +0 -1
- package/lib/router.test.d.ts +0 -1
- package/lib/router.test.js +0 -273
- package/lib/router.test.js.map +0 -1
- package/lib/utils.d.ts +0 -8
- package/lib/utils.js.map +0 -1
- package/src/constants.js +0 -15
- package/src/core-bot.js +0 -106
- package/src/debug/index.js +0 -6
- package/src/debug/inspector.test.js +0 -6
- package/src/errors.js +0 -8
- package/src/handoff.test.js +0 -61
- package/src/hubtype-service.test.js +0 -23
- package/src/index.js +0 -51
- package/src/output-parser/util.ts +0 -8
- package/src/router.js +0 -273
- package/src/router.test.js +0 -347
- package/src/types/constants.d.ts +0 -14
- package/src/types/core-bot.d.ts +0 -45
- package/src/types/debug/inspector.d.ts +0 -33
- package/src/types/handoff.d.ts +0 -75
- package/src/types/hubtype-service.d.ts +0 -52
- package/src/types/i18n.d.ts +0 -8
- package/src/types/index.d.ts +0 -226
- package/src/types/plugins.d.ts +0 -13
- package/src/types/router.d.ts +0 -57
- package/src/types/utils.d.ts +0 -12
|
@@ -1,35 +1,54 @@
|
|
|
1
|
+
import { Route, RouteMatcher } from '../models'
|
|
1
2
|
export class RouteInspector {
|
|
2
|
-
routeMatched(
|
|
3
|
-
|
|
3
|
+
routeMatched(
|
|
4
|
+
_route: Route,
|
|
5
|
+
_routeKey: string,
|
|
6
|
+
_routeValue: RouteMatcher,
|
|
7
|
+
_input: any
|
|
8
|
+
): void {}
|
|
9
|
+
routeNotMatched(
|
|
10
|
+
_route: Route,
|
|
11
|
+
_routeKey: string,
|
|
12
|
+
_routeValue: RouteMatcher,
|
|
13
|
+
_input: any
|
|
14
|
+
): void {}
|
|
4
15
|
}
|
|
5
16
|
|
|
6
17
|
export class FocusRouteInspector extends RouteInspector {
|
|
18
|
+
focusRoutePaths: string[] | null
|
|
19
|
+
focusOnMatches: boolean
|
|
7
20
|
constructor() {
|
|
8
21
|
super()
|
|
9
22
|
this.focusRoutePaths = null
|
|
10
23
|
this.focusOnMatches = false
|
|
11
24
|
}
|
|
12
25
|
|
|
13
|
-
focusOnlyOnRoutes(focusRoutePaths) {
|
|
26
|
+
focusOnlyOnRoutes(focusRoutePaths: string[]): this {
|
|
14
27
|
this.focusRoutePaths = focusRoutePaths
|
|
15
28
|
return this
|
|
16
29
|
}
|
|
17
30
|
|
|
18
|
-
focusOnlyOnMatches() {
|
|
31
|
+
focusOnlyOnMatches(): this {
|
|
19
32
|
this.focusOnMatches = true
|
|
20
33
|
return this
|
|
21
34
|
}
|
|
22
35
|
|
|
23
|
-
_isOnFocus(route) {
|
|
24
|
-
if (this.focusRoutePaths
|
|
36
|
+
_isOnFocus(route: Route): boolean {
|
|
37
|
+
if (this.focusRoutePaths === null) {
|
|
25
38
|
return true
|
|
26
39
|
}
|
|
40
|
+
// @ts-ignore
|
|
27
41
|
return this.focusRoutePaths.includes(route.path)
|
|
28
42
|
}
|
|
29
43
|
}
|
|
30
44
|
|
|
31
45
|
export class LogRouteInspector extends FocusRouteInspector {
|
|
32
|
-
routeMatched(
|
|
46
|
+
routeMatched(
|
|
47
|
+
route: Route,
|
|
48
|
+
routeKey: string,
|
|
49
|
+
routeValue: RouteMatcher,
|
|
50
|
+
inputValue: string
|
|
51
|
+
): void {
|
|
33
52
|
if (!this._isOnFocus(route)) {
|
|
34
53
|
return
|
|
35
54
|
}
|
|
@@ -39,7 +58,13 @@ export class LogRouteInspector extends FocusRouteInspector {
|
|
|
39
58
|
)
|
|
40
59
|
}
|
|
41
60
|
|
|
42
|
-
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
routeNotMatched(
|
|
63
|
+
route: Route,
|
|
64
|
+
routeKey: string,
|
|
65
|
+
routeValue: RouteMatcher,
|
|
66
|
+
inputValue: string
|
|
67
|
+
): void {
|
|
43
68
|
if (!this._isOnFocus(route) || this.focusOnMatches) {
|
|
44
69
|
return
|
|
45
70
|
}
|
|
@@ -49,7 +74,7 @@ export class LogRouteInspector extends FocusRouteInspector {
|
|
|
49
74
|
)
|
|
50
75
|
}
|
|
51
76
|
|
|
52
|
-
_routeName(obj) {
|
|
77
|
+
_routeName(obj: Route): string {
|
|
53
78
|
let name = obj.path || '<<no path defined>>'
|
|
54
79
|
if (obj.action) {
|
|
55
80
|
name = `'${name}' (to action '${obj.action.name}')`
|
|
@@ -57,21 +82,21 @@ export class LogRouteInspector extends FocusRouteInspector {
|
|
|
57
82
|
if (obj.redirect) {
|
|
58
83
|
name = `'${name}' (with redirect to '${obj.redirect}')`
|
|
59
84
|
}
|
|
60
|
-
|
|
61
|
-
return name
|
|
85
|
+
return name as string
|
|
62
86
|
}
|
|
63
87
|
|
|
64
|
-
_log(message, ...optionalParams) {
|
|
88
|
+
_log(message: string, ...optionalParams: string[]): void {
|
|
65
89
|
console.log(message, ...optionalParams)
|
|
66
90
|
}
|
|
67
91
|
}
|
|
68
92
|
|
|
69
93
|
export class Inspector {
|
|
70
|
-
|
|
94
|
+
routeInspector: RouteInspector
|
|
95
|
+
constructor(routeInspector: RouteInspector | undefined = undefined) {
|
|
71
96
|
this.routeInspector = routeInspector || new RouteInspector()
|
|
72
97
|
}
|
|
73
98
|
|
|
74
|
-
getRouteInspector() {
|
|
99
|
+
getRouteInspector(): RouteInspector {
|
|
75
100
|
return this.routeInspector
|
|
76
101
|
}
|
|
77
102
|
}
|
|
@@ -1,10 +1,49 @@
|
|
|
1
1
|
import axios from 'axios'
|
|
2
2
|
|
|
3
|
+
import { PATH_PAYLOAD_IDENTIFIER } from './constants'
|
|
4
|
+
import { BotState, Session } from './models'
|
|
5
|
+
|
|
3
6
|
const HUBTYPE_API_URL = 'https://api.hubtype.com'
|
|
4
7
|
|
|
5
|
-
export
|
|
8
|
+
export interface HubtypeAgentsInfo {
|
|
9
|
+
attending_count: number
|
|
10
|
+
email: string
|
|
11
|
+
idle_count: number
|
|
12
|
+
last_message_sent: string
|
|
13
|
+
status: string
|
|
14
|
+
}
|
|
15
|
+
export interface HubtypeSession extends Session {
|
|
16
|
+
_hubtype_api?: string
|
|
17
|
+
_access_token: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface SessionWithBotonicAction extends Session {
|
|
21
|
+
_botonic_action: string
|
|
22
|
+
}
|
|
23
|
+
export interface BackendContext {
|
|
24
|
+
timeoutMs: number
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface VacationRange {
|
|
28
|
+
end_date: number // timestamp
|
|
29
|
+
id: number
|
|
30
|
+
start_date: number // timestamp
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function contextDefaults(context: any): BackendContext {
|
|
34
|
+
return {
|
|
35
|
+
timeoutMs: context.timeoutMs || 10000,
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export async function getOpenQueues(
|
|
40
|
+
session: HubtypeSession,
|
|
41
|
+
context = {}
|
|
42
|
+
): Promise<{ queues: string[] }> {
|
|
43
|
+
//be aware of https://github.com/axios/axios/issues/1543
|
|
6
44
|
const baseUrl = session._hubtype_api || HUBTYPE_API_URL
|
|
7
45
|
const endpointUrl = `${baseUrl}/v1/queues/get_open_queues/`
|
|
46
|
+
context = contextDefaults(context)
|
|
8
47
|
const resp = await axios({
|
|
9
48
|
headers: {
|
|
10
49
|
Authorization: `Bearer ${session._access_token}`,
|
|
@@ -12,58 +51,68 @@ export async function getOpenQueues(session) {
|
|
|
12
51
|
method: 'post',
|
|
13
52
|
url: endpointUrl,
|
|
14
53
|
data: { bot_id: session.bot.id },
|
|
54
|
+
timeout: (context as BackendContext).timeoutMs,
|
|
15
55
|
})
|
|
16
56
|
return resp.data
|
|
17
57
|
}
|
|
18
58
|
|
|
19
59
|
export class HandOffBuilder {
|
|
20
|
-
|
|
21
|
-
|
|
60
|
+
_botState: any
|
|
61
|
+
_queue: string
|
|
62
|
+
_onFinish: string
|
|
63
|
+
_email: string
|
|
64
|
+
_agentId: string
|
|
65
|
+
_note: string
|
|
66
|
+
_caseInfo: string
|
|
67
|
+
_shadowing: boolean
|
|
68
|
+
|
|
69
|
+
constructor(botState: any) {
|
|
70
|
+
this._botState = botState
|
|
22
71
|
}
|
|
23
72
|
|
|
24
|
-
withQueue(queueNameOrId) {
|
|
73
|
+
withQueue(queueNameOrId: string): this {
|
|
25
74
|
this._queue = queueNameOrId
|
|
26
75
|
return this
|
|
27
76
|
}
|
|
28
77
|
|
|
29
|
-
withOnFinishPayload(payload) {
|
|
78
|
+
withOnFinishPayload(payload: string): this {
|
|
30
79
|
this._onFinish = payload
|
|
31
80
|
return this
|
|
32
81
|
}
|
|
33
82
|
|
|
34
|
-
withOnFinishPath(path) {
|
|
35
|
-
this._onFinish =
|
|
83
|
+
withOnFinishPath(path: string): this {
|
|
84
|
+
this._onFinish = `${PATH_PAYLOAD_IDENTIFIER}${path}`
|
|
36
85
|
return this
|
|
37
86
|
}
|
|
38
87
|
|
|
39
|
-
withAgentEmail(email) {
|
|
88
|
+
withAgentEmail(email: string): this {
|
|
40
89
|
this._email = email
|
|
41
90
|
return this
|
|
42
91
|
}
|
|
43
92
|
|
|
44
|
-
withAgentId(agentId) {
|
|
93
|
+
withAgentId(agentId: string): this {
|
|
45
94
|
this._agentId = agentId
|
|
46
95
|
return this
|
|
47
96
|
}
|
|
48
97
|
|
|
49
|
-
withNote(note) {
|
|
98
|
+
withNote(note: string): this {
|
|
50
99
|
this._note = note
|
|
51
100
|
return this
|
|
52
101
|
}
|
|
53
102
|
|
|
54
|
-
withCaseInfo(caseInfo) {
|
|
103
|
+
withCaseInfo(caseInfo: string): this {
|
|
55
104
|
this._caseInfo = caseInfo
|
|
56
105
|
return this
|
|
57
106
|
}
|
|
58
107
|
|
|
59
|
-
withShadowing(shadowing = true) {
|
|
108
|
+
withShadowing(shadowing = true): this {
|
|
60
109
|
this._shadowing = shadowing
|
|
61
110
|
return this
|
|
62
111
|
}
|
|
63
112
|
|
|
64
|
-
async handOff() {
|
|
113
|
+
async handOff(): Promise<void> {
|
|
65
114
|
return _humanHandOff(
|
|
66
|
-
this.
|
|
115
|
+
this._botState,
|
|
67
116
|
this._queue,
|
|
68
117
|
this._onFinish,
|
|
69
118
|
this._email,
|
|
@@ -95,17 +144,26 @@ export async function humanHandOff(session, queueNameOrId = '', onFinish) {
|
|
|
95
144
|
return builder.handOff()
|
|
96
145
|
}
|
|
97
146
|
|
|
147
|
+
interface HubtypeHandoffParams {
|
|
148
|
+
queue?: string
|
|
149
|
+
agent_email?: string
|
|
150
|
+
agent_id?: string
|
|
151
|
+
case_info?: string
|
|
152
|
+
note?: string
|
|
153
|
+
shadowing?: boolean
|
|
154
|
+
on_finish?: string
|
|
155
|
+
}
|
|
98
156
|
async function _humanHandOff(
|
|
99
|
-
|
|
157
|
+
botState: any,
|
|
100
158
|
queueNameOrId = '',
|
|
101
|
-
onFinish,
|
|
159
|
+
onFinish: string,
|
|
102
160
|
agentEmail = '',
|
|
103
161
|
agentId = '',
|
|
104
162
|
caseInfo = '',
|
|
105
163
|
note = '',
|
|
106
164
|
shadowing = false
|
|
107
165
|
) {
|
|
108
|
-
const params = {}
|
|
166
|
+
const params: HubtypeHandoffParams = {}
|
|
109
167
|
if (queueNameOrId) {
|
|
110
168
|
params.queue = queueNameOrId
|
|
111
169
|
}
|
|
@@ -127,12 +185,18 @@ async function _humanHandOff(
|
|
|
127
185
|
if (onFinish) {
|
|
128
186
|
params.on_finish = onFinish
|
|
129
187
|
}
|
|
130
|
-
|
|
188
|
+
botState.botonicAction = `create_case:${JSON.stringify(params)}`
|
|
189
|
+
botState.isHandoff = true
|
|
131
190
|
}
|
|
132
191
|
|
|
133
|
-
export async function storeCaseRating(
|
|
192
|
+
export async function storeCaseRating(
|
|
193
|
+
session: HubtypeSession,
|
|
194
|
+
rating: number,
|
|
195
|
+
context: any = {}
|
|
196
|
+
): Promise<{ status: string }> {
|
|
134
197
|
const baseUrl = session._hubtype_api || HUBTYPE_API_URL
|
|
135
198
|
const chatId = session.user.id
|
|
199
|
+
context = contextDefaults(context)
|
|
136
200
|
const resp = await axios({
|
|
137
201
|
headers: {
|
|
138
202
|
Authorization: `Bearer ${session._access_token}`,
|
|
@@ -140,11 +204,15 @@ export async function storeCaseRating(session, rating) {
|
|
|
140
204
|
method: 'post',
|
|
141
205
|
url: `${baseUrl}/v1/chats/${chatId}/store_case_rating/`,
|
|
142
206
|
data: { chat_id: chatId, rating },
|
|
207
|
+
timeout: (context as BackendContext).timeoutMs,
|
|
143
208
|
})
|
|
144
209
|
return resp.data
|
|
145
210
|
}
|
|
146
211
|
|
|
147
|
-
export async function getAvailableAgentsByQueue(
|
|
212
|
+
export async function getAvailableAgentsByQueue(
|
|
213
|
+
session: HubtypeSession,
|
|
214
|
+
queueId: string
|
|
215
|
+
): Promise<{ agents: string[] }> {
|
|
148
216
|
const baseUrl = session._hubtype_api || HUBTYPE_API_URL
|
|
149
217
|
const resp = await axios({
|
|
150
218
|
headers: {
|
|
@@ -156,7 +224,9 @@ export async function getAvailableAgentsByQueue(session, queueId) {
|
|
|
156
224
|
return resp.data
|
|
157
225
|
}
|
|
158
226
|
|
|
159
|
-
export async function getAvailableAgents(
|
|
227
|
+
export async function getAvailableAgents(
|
|
228
|
+
session: HubtypeSession
|
|
229
|
+
): Promise<{ agents: HubtypeAgentsInfo[] }> {
|
|
160
230
|
const baseUrl = session._hubtype_api || HUBTYPE_API_URL
|
|
161
231
|
const botId = session.bot.id
|
|
162
232
|
const resp = await axios({
|
|
@@ -169,7 +239,10 @@ export async function getAvailableAgents(session) {
|
|
|
169
239
|
return resp.data
|
|
170
240
|
}
|
|
171
241
|
|
|
172
|
-
export async function getAgentVacationRanges(
|
|
242
|
+
export async function getAgentVacationRanges(
|
|
243
|
+
session: HubtypeSession,
|
|
244
|
+
{ agentId, agentEmail }: { agentId?: string; agentEmail?: string }
|
|
245
|
+
): Promise<{ vacation_ranges: VacationRange[] }> {
|
|
173
246
|
const baseUrl = session._hubtype_api || HUBTYPE_API_URL
|
|
174
247
|
const botId = session.bot.id
|
|
175
248
|
const resp = await axios({
|
|
@@ -183,12 +256,16 @@ export async function getAgentVacationRanges(session, { agentId, agentEmail }) {
|
|
|
183
256
|
return resp.data
|
|
184
257
|
}
|
|
185
258
|
|
|
186
|
-
export function cancelHandoff(
|
|
259
|
+
export function cancelHandoff(
|
|
260
|
+
botState: BotState,
|
|
261
|
+
typification: string | null = null
|
|
262
|
+
): void {
|
|
187
263
|
let action = 'discard_case'
|
|
188
264
|
if (typification) action = `${action}:${JSON.stringify({ typification })}`
|
|
189
|
-
|
|
265
|
+
botState.botonicAction = action
|
|
266
|
+
botState.isHandoff = false // TODO: Review handoff functionalities
|
|
190
267
|
}
|
|
191
268
|
|
|
192
|
-
export function deleteUser(
|
|
193
|
-
|
|
269
|
+
export function deleteUser(botState: BotState): void {
|
|
270
|
+
botState.botonicAction = `delete_user`
|
|
194
271
|
}
|
|
@@ -1,16 +1,42 @@
|
|
|
1
|
-
import axios from 'axios'
|
|
2
|
-
import Pusher from 'pusher-js'
|
|
1
|
+
import axios, { AxiosResponse } from 'axios'
|
|
2
|
+
import Pusher, { AuthOptions, Channel } from 'pusher-js'
|
|
3
|
+
import Channels from 'pusher-js/types/src/core/channels/channels'
|
|
3
4
|
|
|
5
|
+
import { Input } from './models'
|
|
4
6
|
import { getWebpackEnvVar } from './utils'
|
|
5
7
|
|
|
8
|
+
interface UnsentInput {
|
|
9
|
+
id: string
|
|
10
|
+
ack: number
|
|
11
|
+
unsentInput: Input
|
|
12
|
+
}
|
|
13
|
+
interface BotonicHeaders {
|
|
14
|
+
'X-BOTONIC-USER-ID': string
|
|
15
|
+
'X-BOTONIC-LAST-MESSAGE-ID': string
|
|
16
|
+
'X-BOTONIC-LAST-MESSAGE-UPDATE-DATE': string
|
|
17
|
+
}
|
|
18
|
+
interface ServerConfig {
|
|
19
|
+
activityTimeout?: number
|
|
20
|
+
pongTimeout?: number
|
|
21
|
+
}
|
|
22
|
+
interface HubtypeServiceArgs {
|
|
23
|
+
appId: string
|
|
24
|
+
user: any
|
|
25
|
+
lastMessageId: string
|
|
26
|
+
lastMessageUpdateDate: string
|
|
27
|
+
onEvent: any
|
|
28
|
+
unsentInputs: () => UnsentInput[]
|
|
29
|
+
server: ServerConfig
|
|
30
|
+
}
|
|
31
|
+
|
|
6
32
|
const _WEBCHAT_PUSHER_KEY_ = getWebpackEnvVar(
|
|
7
|
-
//
|
|
33
|
+
// @ts-ignore
|
|
8
34
|
typeof WEBCHAT_PUSHER_KEY !== 'undefined' && WEBCHAT_PUSHER_KEY,
|
|
9
35
|
'WEBCHAT_PUSHER_KEY',
|
|
10
36
|
'434ca667c8e6cb3f641c'
|
|
11
37
|
)
|
|
12
38
|
const _HUBTYPE_API_URL_ = getWebpackEnvVar(
|
|
13
|
-
//
|
|
39
|
+
// @ts-ignore
|
|
14
40
|
typeof HUBTYPE_API_URL !== 'undefined' && HUBTYPE_API_URL,
|
|
15
41
|
'HUBTYPE_API_URL',
|
|
16
42
|
'https://api.hubtype.com'
|
|
@@ -23,6 +49,15 @@ const PONG_TIMEOUT = 5 * 1000 // https://pusher.com/docs/channels/using_channels
|
|
|
23
49
|
* Calls Hubtype APIs from Webchat
|
|
24
50
|
*/
|
|
25
51
|
export class HubtypeService {
|
|
52
|
+
appId: string
|
|
53
|
+
user: any
|
|
54
|
+
lastMessageId: string
|
|
55
|
+
lastMessageUpdateDate: string
|
|
56
|
+
onEvent: any
|
|
57
|
+
unsentInputs: () => UnsentInput[]
|
|
58
|
+
pusher: Pusher | null
|
|
59
|
+
channel: Channel
|
|
60
|
+
server: ServerConfig
|
|
26
61
|
PUSHER_CONNECT_TIMEOUT_MS = 10000
|
|
27
62
|
constructor({
|
|
28
63
|
appId,
|
|
@@ -32,7 +67,7 @@ export class HubtypeService {
|
|
|
32
67
|
onEvent,
|
|
33
68
|
unsentInputs,
|
|
34
69
|
server,
|
|
35
|
-
}) {
|
|
70
|
+
}: HubtypeServiceArgs) {
|
|
36
71
|
this.appId = appId
|
|
37
72
|
this.user = user || {}
|
|
38
73
|
this.lastMessageId = lastMessageId
|
|
@@ -44,6 +79,7 @@ export class HubtypeService {
|
|
|
44
79
|
// It's safe not awaiting Promise because:
|
|
45
80
|
// * it will never be called from AWS lambda
|
|
46
81
|
// * though init() is called again from postMesage, it does nothing if Pusher already created
|
|
82
|
+
// @ts-ignore
|
|
47
83
|
this.init()
|
|
48
84
|
}
|
|
49
85
|
}
|
|
@@ -51,7 +87,7 @@ export class HubtypeService {
|
|
|
51
87
|
/**
|
|
52
88
|
* @returns {Promise<void>}
|
|
53
89
|
*/
|
|
54
|
-
init(user, lastMessageId, lastMessageUpdateDate) {
|
|
90
|
+
init(user, lastMessageId, lastMessageUpdateDate): Promise<void> {
|
|
55
91
|
if (user) this.user = user
|
|
56
92
|
if (lastMessageId) this.lastMessageId = lastMessageId
|
|
57
93
|
if (lastMessageUpdateDate)
|
|
@@ -62,7 +98,7 @@ export class HubtypeService {
|
|
|
62
98
|
/**
|
|
63
99
|
* @returns {Promise<void>}
|
|
64
100
|
*/
|
|
65
|
-
_initPusher() {
|
|
101
|
+
_initPusher(): Promise<void> {
|
|
66
102
|
if (this.pusher) return Promise.resolve()
|
|
67
103
|
if (!this.user.id || !this.appId) {
|
|
68
104
|
// TODO recover user & appId somehow
|
|
@@ -74,11 +110,11 @@ export class HubtypeService {
|
|
|
74
110
|
forceTLS: true,
|
|
75
111
|
auth: {
|
|
76
112
|
headers: this.constructHeaders(),
|
|
77
|
-
},
|
|
113
|
+
} as AuthOptions,
|
|
78
114
|
...this.resolveServerConfig(),
|
|
79
115
|
})
|
|
80
116
|
this.channel = this.pusher.subscribe(this.pusherChannel)
|
|
81
|
-
const connectionPromise = new Promise((resolve, reject) => {
|
|
117
|
+
const connectionPromise = new Promise<void>((resolve, reject) => {
|
|
82
118
|
const cleanAndReject = msg => {
|
|
83
119
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
84
120
|
clearTimeout(connectTimeout)
|
|
@@ -98,16 +134,17 @@ export class HubtypeService {
|
|
|
98
134
|
this.channel.bind('botonic_response', data => this.onPusherEvent(data))
|
|
99
135
|
this.channel.bind('update_message_info', data => this.onPusherEvent(data))
|
|
100
136
|
|
|
101
|
-
this.pusher
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
137
|
+
this.pusher &&
|
|
138
|
+
this.pusher.connection.bind('error', event => {
|
|
139
|
+
if (event.type == 'WebSocketError') this.handleConnectionChange(false)
|
|
140
|
+
else {
|
|
141
|
+
const errorMsg =
|
|
142
|
+
event.error && event.error.data
|
|
143
|
+
? event.error.data.code || event.error.data.message
|
|
144
|
+
: 'Connection error'
|
|
145
|
+
cleanAndReject(`Pusher error (${errorMsg})`)
|
|
146
|
+
}
|
|
147
|
+
})
|
|
111
148
|
})
|
|
112
149
|
this.pusher.connection.bind('state_change', states => {
|
|
113
150
|
if (states.current === 'connecting') this.updateAuthHeaders()
|
|
@@ -118,17 +155,17 @@ export class HubtypeService {
|
|
|
118
155
|
return connectionPromise
|
|
119
156
|
}
|
|
120
157
|
|
|
121
|
-
constructHeaders() {
|
|
158
|
+
constructHeaders(): BotonicHeaders {
|
|
122
159
|
const headers = {}
|
|
123
160
|
if (this.user && this.user.id) headers['X-BOTONIC-USER-ID'] = this.user.id
|
|
124
161
|
if (this.lastMessageId)
|
|
125
162
|
headers['X-BOTONIC-LAST-MESSAGE-ID'] = this.lastMessageId
|
|
126
163
|
if (this.lastMessageUpdateDate)
|
|
127
164
|
headers['X-BOTONIC-LAST-MESSAGE-UPDATE-DATE'] = this.lastMessageUpdateDate
|
|
128
|
-
return headers
|
|
165
|
+
return headers as BotonicHeaders
|
|
129
166
|
}
|
|
130
167
|
|
|
131
|
-
resolveServerConfig() {
|
|
168
|
+
resolveServerConfig(): ServerConfig {
|
|
132
169
|
if (!this.server) {
|
|
133
170
|
return { activityTimeout: ACTIVITY_TIMEOUT, pongTimeout: PONG_TIMEOUT }
|
|
134
171
|
}
|
|
@@ -138,7 +175,7 @@ export class HubtypeService {
|
|
|
138
175
|
}
|
|
139
176
|
}
|
|
140
177
|
|
|
141
|
-
updateAuthHeaders() {
|
|
178
|
+
updateAuthHeaders(): void {
|
|
142
179
|
if (this.pusher) {
|
|
143
180
|
this.pusher.config.auth.headers = {
|
|
144
181
|
...this.pusher.config.auth.headers,
|
|
@@ -147,26 +184,26 @@ export class HubtypeService {
|
|
|
147
184
|
}
|
|
148
185
|
}
|
|
149
186
|
|
|
150
|
-
handleConnectionChange(online) {
|
|
151
|
-
this.onPusherEvent({ action: '
|
|
187
|
+
handleConnectionChange(online: boolean): void {
|
|
188
|
+
this.onPusherEvent({ action: 'connection_change', online })
|
|
152
189
|
}
|
|
153
190
|
|
|
154
|
-
onPusherEvent(event) {
|
|
191
|
+
onPusherEvent(event: any): void {
|
|
155
192
|
if (this.onEvent && typeof this.onEvent === 'function') this.onEvent(event)
|
|
156
193
|
}
|
|
157
194
|
|
|
158
|
-
get pusherChannel() {
|
|
195
|
+
get pusherChannel(): string {
|
|
159
196
|
return `private-encrypted-${this.appId}-${this.user.id}`
|
|
160
197
|
}
|
|
161
198
|
|
|
162
|
-
handleSentInput(message) {
|
|
199
|
+
handleSentInput(message: any): void {
|
|
163
200
|
this.onEvent({
|
|
164
201
|
action: 'update_message_info',
|
|
165
202
|
message: { id: message.id, ack: 1 },
|
|
166
203
|
})
|
|
167
204
|
}
|
|
168
205
|
|
|
169
|
-
handleUnsentInput(message) {
|
|
206
|
+
handleUnsentInput(message: any): void {
|
|
170
207
|
this.onEvent({
|
|
171
208
|
action: 'update_message_info',
|
|
172
209
|
message: { id: message.id, ack: 0, unsentInput: message },
|
|
@@ -176,8 +213,9 @@ export class HubtypeService {
|
|
|
176
213
|
/**
|
|
177
214
|
* @return {Promise<void>}
|
|
178
215
|
*/
|
|
179
|
-
async postMessage(user, message) {
|
|
216
|
+
async postMessage(user: any, message: any): Promise<void> {
|
|
180
217
|
try {
|
|
218
|
+
// @ts-ignore
|
|
181
219
|
await this.init(user)
|
|
182
220
|
await axios.post(
|
|
183
221
|
`${_HUBTYPE_API_URL_}/v1/provider_accounts/webhooks/webchat/${this.appId}/`,
|
|
@@ -196,26 +234,30 @@ export class HubtypeService {
|
|
|
196
234
|
return Promise.resolve()
|
|
197
235
|
}
|
|
198
236
|
|
|
199
|
-
static async getWebchatVisibility({
|
|
237
|
+
static async getWebchatVisibility({
|
|
238
|
+
appId,
|
|
239
|
+
}: {
|
|
240
|
+
appId: string
|
|
241
|
+
}): Promise<AxiosResponse<any>> {
|
|
200
242
|
return axios.get(
|
|
201
243
|
`${_HUBTYPE_API_URL_}/v1/provider_accounts/${appId}/visibility/`
|
|
202
244
|
)
|
|
203
245
|
}
|
|
204
246
|
|
|
205
|
-
destroyPusher() {
|
|
247
|
+
destroyPusher(): void {
|
|
206
248
|
if (!this.pusher) return
|
|
207
249
|
this.pusher.disconnect()
|
|
208
250
|
this.pusher.unsubscribe(this.pusherChannel)
|
|
209
251
|
this.pusher.unbind_all()
|
|
210
|
-
this.pusher.channels = {}
|
|
252
|
+
this.pusher.channels = {} as Channels
|
|
211
253
|
this.pusher = null
|
|
212
254
|
}
|
|
213
255
|
|
|
214
|
-
async onConnectionRegained() {
|
|
256
|
+
async onConnectionRegained(): Promise<void> {
|
|
215
257
|
await this.resendUnsentInputs()
|
|
216
258
|
}
|
|
217
259
|
|
|
218
|
-
async resendUnsentInputs() {
|
|
260
|
+
async resendUnsentInputs(): Promise<void> {
|
|
219
261
|
for (const message of this.unsentInputs()) {
|
|
220
262
|
message.unsentInput &&
|
|
221
263
|
(await this.postMessage(this.user, message.unsentInput))
|
package/src/{i18n.js → i18n.ts}
RENAMED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
// eslint-disable-next-line filenames/match-regex
|
|
2
|
-
|
|
2
|
+
import { Locales } from './models'
|
|
3
|
+
|
|
4
|
+
export const getString = (
|
|
5
|
+
locales: Locales,
|
|
6
|
+
locale: string,
|
|
7
|
+
stringID: string
|
|
8
|
+
): string => {
|
|
3
9
|
let l = stringID.split('.').reduce((o, i) => o[i], locales[locale])
|
|
4
10
|
if (l instanceof Array) l = l[Math.floor(Math.random() * l.length)]
|
|
5
11
|
return String(l)
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './constants'
|
|
2
|
+
export * from './core-bot'
|
|
3
|
+
export * from './debug'
|
|
4
|
+
export * from './handoff'
|
|
5
|
+
export * from './hubtype-service'
|
|
6
|
+
export * from './i18n'
|
|
7
|
+
export * from './models'
|
|
8
|
+
export * from './output-parser'
|
|
9
|
+
export * from './plugins'
|
|
10
|
+
export * from './routing'
|
|
11
|
+
export * from './utils'
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export enum EventTypes {
|
|
2
|
+
CONNECTION = 'connection',
|
|
3
|
+
MESSAGE = 'message',
|
|
4
|
+
ACK = 'ack',
|
|
5
|
+
TRACK = 'track',
|
|
6
|
+
// Integration Events
|
|
7
|
+
NEW_USER = 'newUser',
|
|
8
|
+
RECEIVED_MESSAGE = 'receivedMessage',
|
|
9
|
+
BOT_EXECUTED = 'botExecuted',
|
|
10
|
+
BOT_ACTION = 'botAction',
|
|
11
|
+
ACTION_SENT = 'actionSent',
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface BaseEvent {
|
|
15
|
+
eventId: string
|
|
16
|
+
userId: string
|
|
17
|
+
eventType: EventTypes
|
|
18
|
+
createdAt: string
|
|
19
|
+
modifiedAt?: string
|
|
20
|
+
channel: string
|
|
21
|
+
idFromChannel: string
|
|
22
|
+
}
|