@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
package/src/index.ts DELETED
@@ -1,233 +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
-
11
- export type CaseStatusType =
12
- | typeof CASE_STATUS.ATTENDING
13
- | typeof CASE_STATUS.IDLE
14
- | typeof CASE_STATUS.RESOLVED
15
- | typeof CASE_STATUS.WAITING
16
-
17
- export type CaseResolution =
18
- | typeof CASE_RESOLUTION.BANNED
19
- | typeof CASE_RESOLUTION.NOK
20
- | typeof CASE_RESOLUTION.NOT_SOLVED
21
- | typeof CASE_RESOLUTION.OK
22
-
23
- export const PROVIDER = Object.freeze({
24
- DEV: 'dev',
25
- FACEBOOK: 'facebook',
26
- GENERIC: 'generic',
27
- INTERCOM: 'intercom',
28
- SMOOCH: 'smooch',
29
- TELEGRAM: 'telegram',
30
- TWITTER: 'twitter',
31
- WEBCHAT: 'webchat',
32
- WECHAT: 'wechat',
33
- WHATSAPP: 'whatsapp',
34
- })
35
-
36
- export const INPUT = Object.freeze({
37
- TEXT: 'text',
38
- POSTBACK: 'postback',
39
- AUDIO: 'audio',
40
- IMAGE: 'image',
41
- VIDEO: 'video',
42
- DOCUMENT: 'document',
43
- LOCATION: 'location',
44
- CONTACT: 'contact',
45
- BUTTON_MESSAGE: 'buttonmessage',
46
- CAROUSEL: 'carousel',
47
- CUSTOM: 'custom',
48
- WEBCHAT_SETTINGS: 'webchatsettings',
49
- WHATSAPP_TEMPLATE: 'whatsapptemplate',
50
- RAW: 'raw',
51
- })
52
-
53
- export const CASE_STATUS = Object.freeze({
54
- WAITING: 'status_waiting',
55
- ATTENDING: 'status_attending',
56
- IDLE: 'status_idle',
57
- RESOLVED: 'status_resolved',
58
- })
59
-
60
- export const CASE_RESOLUTION = Object.freeze({
61
- OK: 'result_ok',
62
- NOK: 'result_nok',
63
- NOT_SOLVED: 'result_not_solved',
64
- BANNED: 'result_banned',
65
- })
66
-
67
- export interface Locales {
68
- [id: string]: string | string[] | Locales
69
- }
70
-
71
- interface PluginConstructor<T> {
72
- new (arg: T): Plugin
73
- }
74
-
75
- export interface PluginConfig<T> {
76
- id: string
77
- options?: T
78
- resolve: { default: PluginConstructor<T> }
79
- }
80
-
81
- export type InputType =
82
- | typeof INPUT.AUDIO
83
- | typeof INPUT.BUTTON_MESSAGE
84
- | typeof INPUT.CAROUSEL
85
- | typeof INPUT.CONTACT
86
- | typeof INPUT.CUSTOM
87
- | typeof INPUT.DOCUMENT
88
- | typeof INPUT.IMAGE
89
- | typeof INPUT.LOCATION
90
- | typeof INPUT.POSTBACK
91
- | typeof INPUT.TEXT
92
- | typeof INPUT.VIDEO
93
- | typeof INPUT.WEBCHAT_SETTINGS
94
- | typeof INPUT.WHATSAPP_TEMPLATE
95
-
96
- export interface IntentResult {
97
- intent: string
98
- confidence: number
99
- }
100
-
101
- /** Generated by Translation plugins: GoogleTranslation **/
102
- export interface Translations {
103
- [languageCode: string]: string
104
- }
105
-
106
- /** Fields set by NLU plugins: Luis, Dialogflow, ... **/
107
- export interface NluResult {
108
- // the name of the highest confidence intent
109
- confidence: number
110
- intent: string
111
- intents: IntentResult[]
112
- language: string
113
- // entity recognition results in the format provided by the NLU engine
114
- entities?: any
115
- translations: Translations
116
- }
117
-
118
- export interface Input extends Partial<NluResult> {
119
- data?: string
120
- path?: string
121
- payload?: string
122
- type: InputType
123
- }
124
-
125
- export type ProviderType =
126
- | typeof PROVIDER.DEV
127
- | typeof PROVIDER.FACEBOOK
128
- | typeof PROVIDER.GENERIC
129
- | typeof PROVIDER.INTERCOM
130
- | typeof PROVIDER.SMOOCH
131
- | typeof PROVIDER.TELEGRAM
132
- | typeof PROVIDER.TWITTER
133
- | typeof PROVIDER.WEBCHAT
134
- | typeof PROVIDER.WECHAT
135
- | typeof PROVIDER.WHATSAPP
136
-
137
- export interface SessionUser {
138
- id: string
139
- // login
140
- username?: string
141
- // person name
142
- name?: string
143
- // whatsapp, telegram,...
144
- provider: ProviderType
145
- // The provider's user id
146
- extra_data?: any
147
- imp_id?: string
148
- provider_id?: string
149
- }
150
-
151
- // eslint-disable @typescript-eslint/naming-convention
152
- export interface Session {
153
- bot: {
154
- id: string
155
- name?: string
156
- }
157
- __locale?: string
158
- __retries?: number
159
- is_first_interaction: boolean
160
- last_session?: any
161
- organization?: string
162
- user: SessionUser
163
- // after handoff
164
- _hubtype_case_status?: CaseStatusType
165
- _hubtype_case_typification?: string
166
- _shadowing?: boolean
167
- }
168
- // eslint-enable @typescript-eslint/naming-convention
169
-
170
- type InputMatcher = (input: Input) => boolean
171
- type ParamsMatcher =
172
- | { [key: string]: string }
173
- | ((params: { [key: string]: string }) => boolean)
174
- type SessionMatcher = (session: Session) => boolean
175
- type RequestMatcher = (request: BotRequest) => boolean
176
- type StringMatcher = RegExp | string | ((data: string) => boolean)
177
-
178
- export type RouteMatcher =
179
- | InputMatcher
180
- | ParamsMatcher
181
- | RequestMatcher
182
- | SessionMatcher
183
- | StringMatcher
184
-
185
- export interface Route {
186
- action?: any
187
- childRoutes?: Route[]
188
- defaultAction?: any
189
- lastRoutePath?: string
190
- ignoreRetry?: boolean
191
- path?: StringMatcher
192
- redirect?: string
193
- retry?: number
194
- retryAction?: any
195
-
196
- // matchers
197
- input?: InputMatcher
198
- intent?: StringMatcher
199
- params?: ParamsMatcher
200
- payload?: StringMatcher
201
- request?: RequestMatcher
202
- session?: SessionMatcher
203
- text?: StringMatcher
204
- data?: StringMatcher
205
- type?: StringMatcher
206
- }
207
-
208
- export type Routes<R = Route> = R[] | ((_: BotRequest) => R[])
209
-
210
- export interface BotRequest {
211
- input: Input
212
- lastRoutePath: string
213
- session: Session
214
- }
215
-
216
- /** The response of the bot for the triggered actions, which can be
217
- * the one matched by the routes, the default action and the retry actions.
218
- * See Response at @botonic/react's index.d.ts for the React type
219
- * */
220
- export interface BotResponse extends BotRequest {
221
- response: any
222
- parsedResponse: Partial<BotonicEvent>[] | null
223
- }
224
-
225
- export type PluginPreRequest = BotRequest
226
- export type PluginPostRequest = BotResponse
227
-
228
- export interface Plugin {
229
- post(_: PluginPostRequest): void
230
- pre(pluginRequest: PluginPreRequest): void
231
- }
232
-
233
- export type Params = { [key: string]: string }
@@ -1,11 +0,0 @@
1
- import { BaseEvent, EventTypes } from '..'
2
-
3
- export enum ConnectionEventStatuses {
4
- CONNECTED = 'connected',
5
- DISCONNECTED = 'disconnected',
6
- }
7
-
8
- export interface ConnectionEvent extends BaseEvent {
9
- eventType: EventTypes.CONNECTION
10
- status: ConnectionEventStatuses
11
- }
@@ -1,39 +0,0 @@
1
- import { ConnectionEvent } from './connections'
2
- import { CarouselMessageEvent } from './message/carousel'
3
- import { CustomMessageEvent } from './message/custom'
4
- import { LocationMessageEvent } from './message/location'
5
- import {
6
- AudioMessageEvent,
7
- DocumentMessageEvent,
8
- ImageMessageEvent,
9
- VideoMessageEvent,
10
- } from './message/media'
11
- import { PostbackMessageEvent } from './message/postback'
12
- import { TextMessageEvent } from './message/text'
13
-
14
- export enum EventTypes {
15
- CONNECTION = 'connection',
16
- MESSAGE = 'message',
17
- ACK = 'ack',
18
- TRACK = 'track',
19
- }
20
-
21
- export interface BaseEvent {
22
- eventId: string
23
- userId: string
24
- eventType: EventTypes
25
- createdAt: string
26
- modifiedAt?: string
27
- }
28
-
29
- export type BotonicEvent =
30
- | TextMessageEvent
31
- | PostbackMessageEvent
32
- | AudioMessageEvent
33
- | DocumentMessageEvent
34
- | ImageMessageEvent
35
- | VideoMessageEvent
36
- | LocationMessageEvent
37
- | CarouselMessageEvent
38
- | CustomMessageEvent
39
- | ConnectionEvent
@@ -1,23 +0,0 @@
1
- export interface BaseButton {
2
- title: string
3
- }
4
-
5
- export interface WebviewButton extends BaseButton {
6
- webview: any
7
- params?: any
8
- }
9
-
10
- export interface UrlButton extends BaseButton {
11
- url: string
12
- target?: string
13
- }
14
-
15
- export interface PayloadButton extends BaseButton {
16
- payload: string
17
- }
18
-
19
- export type Button = PayloadButton | UrlButton | WebviewButton
20
-
21
- export interface WithButtons {
22
- buttons?: Button[]
23
- }
@@ -1,13 +0,0 @@
1
- import { BotonicMessageEvent, MessageEventTypes } from '.'
2
- import { WithButtons } from './buttons'
3
-
4
- export interface CarouselElement extends WithButtons {
5
- pic: string
6
- title: string
7
- subtitle?: string
8
- }
9
-
10
- export interface CarouselMessageEvent extends BotonicMessageEvent {
11
- type: MessageEventTypes.CAROUSEL
12
- elements: CarouselElement[]
13
- }
@@ -1,7 +0,0 @@
1
- import { BotonicMessageEvent, MessageEventTypes } from '.'
2
- import { WithReplies } from './replies'
3
-
4
- export interface CustomMessageEvent extends BotonicMessageEvent, WithReplies {
5
- type: MessageEventTypes.CUSTOM
6
- customTypeName: string
7
- }
@@ -1,37 +0,0 @@
1
- import { BaseEvent } from '..'
2
-
3
- export enum MessageEventTypes {
4
- AUDIO = 'audio',
5
- CAROUSEL = 'carousel',
6
- CUSTOM = 'custom',
7
- DOCUMENT = 'document',
8
- IMAGE = 'image',
9
- LOCATION = 'location',
10
- TEXT = 'text',
11
- POSTBACK = 'postback',
12
- VIDEO = 'video',
13
- /**
14
- * TODO: contact, buttonmessage?, webchatsettings, whatsapp template
15
- */
16
- }
17
-
18
- export enum MessageEventAck {
19
- DRAFT = 'draft',
20
- READ = 'read',
21
- RECEIVED = 'received',
22
- SENT = 'sent',
23
- }
24
-
25
- export enum MessageEventFrom {
26
- AGENT = 'agent',
27
- BOT = 'bot',
28
- USER = 'user',
29
- }
30
-
31
- export interface BotonicMessageEvent extends BaseEvent {
32
- ack: MessageEventAck
33
- from: MessageEventFrom
34
- type: MessageEventTypes
35
- typing: number
36
- delay: number
37
- }
@@ -1,7 +0,0 @@
1
- import { BotonicMessageEvent, MessageEventTypes } from '.'
2
-
3
- export interface LocationMessageEvent extends BotonicMessageEvent {
4
- type: MessageEventTypes.LOCATION
5
- lat: number
6
- long: number
7
- }
@@ -1,28 +0,0 @@
1
- import { BotonicMessageEvent, MessageEventTypes } from '.'
2
- import { WithButtons } from './buttons'
3
-
4
- export const MEDIA_TYPES = [
5
- MessageEventTypes.AUDIO,
6
- MessageEventTypes.IMAGE,
7
- MessageEventTypes.DOCUMENT,
8
- MessageEventTypes.VIDEO,
9
- ]
10
- export interface MediaMessageEvent extends BotonicMessageEvent, WithButtons {
11
- src: string
12
- }
13
-
14
- export interface AudioMessageEvent extends MediaMessageEvent {
15
- type: MessageEventTypes.AUDIO
16
- }
17
-
18
- export interface ImageMessageEvent extends MediaMessageEvent {
19
- type: MessageEventTypes.IMAGE
20
- }
21
-
22
- export interface DocumentMessageEvent extends MediaMessageEvent {
23
- type: MessageEventTypes.DOCUMENT
24
- }
25
-
26
- export interface VideoMessageEvent extends MediaMessageEvent {
27
- type: MessageEventTypes.VIDEO
28
- }
@@ -1,5 +0,0 @@
1
- import { BotonicMessageEvent } from '.'
2
-
3
- export interface PostbackMessageEvent extends BotonicMessageEvent {
4
- payload: string
5
- }
@@ -1,8 +0,0 @@
1
- export interface Reply {
2
- title: string
3
- payload: string
4
- }
5
-
6
- export interface WithReplies {
7
- replies?: Reply[]
8
- }
@@ -1,12 +0,0 @@
1
- import { BotonicMessageEvent, MessageEventTypes } from '.'
2
- import { WithButtons } from './buttons'
3
- import { WithReplies } from './replies'
4
-
5
- export interface TextMessageEvent
6
- extends BotonicMessageEvent,
7
- WithReplies,
8
- WithButtons {
9
- type: MessageEventTypes.TEXT
10
- markdown: boolean
11
- text: string
12
- }
@@ -1,10 +0,0 @@
1
- import { Session } from '../index'
2
- export interface User {
3
- id: string //TODO: UUID
4
- providerId?: string
5
- websocketId?: string
6
- session: Session
7
- route: string
8
- isOnline: boolean
9
- locationInfo: string
10
- }
@@ -1,40 +0,0 @@
1
- import { BotonicEvent } from '../models/events'
2
- import { MessageEventTypes } from '../models/events/message'
3
- import { MEDIA_TYPES } from '../models/events/message/media'
4
- import {
5
- parseButtons,
6
- parseCarousel,
7
- parseCustom,
8
- parseLocation,
9
- parseMedia,
10
- parseMessage,
11
- parsePostback,
12
- parseReplies,
13
- parseText,
14
- } from './parsers'
15
-
16
- export class MessageParsingFactory {
17
- parse(msgToParse: any): Partial<BotonicEvent> {
18
- const type = msgToParse.type
19
- const parsedMessage = parseMessage({ toParse: msgToParse })
20
- if (type === MessageEventTypes.TEXT) {
21
- return parseText(parseReplies(parseButtons(parsedMessage))).parsed
22
- }
23
- if (type === MessageEventTypes.POSTBACK) {
24
- return parsePostback(parsedMessage).parsed
25
- }
26
- if (MEDIA_TYPES.includes(type)) {
27
- return parseMedia(parseButtons(parsedMessage)).parsed
28
- }
29
- if (type === MessageEventTypes.LOCATION) {
30
- return parseLocation(parsedMessage).parsed
31
- }
32
- if (type === MessageEventTypes.CAROUSEL) {
33
- return parseCarousel(parsedMessage).parsed
34
- }
35
- if (type === MessageEventTypes.CUSTOM) {
36
- return parseCustom(parseReplies(parsedMessage)).parsed
37
- }
38
- throw new Error(`Parsing for type: '${type}' not implemented.`)
39
- }
40
- }
@@ -1,38 +0,0 @@
1
- // eslint-disable-next-line import/named
2
- import { parse, X2jOptions } from 'fast-xml-parser'
3
- import { decode } from 'html-entities'
4
-
5
- import { BotonicEvent } from '../models/events'
6
- import { MessageParsingFactory } from './factory'
7
-
8
- export const TEXT_NODE_NAME = 'text'
9
-
10
- export class BotonicOutputParser {
11
- private static OPTIONS: Partial<X2jOptions> = {
12
- ignoreAttributes: false,
13
- attributeNamePrefix: '',
14
- textNodeName: TEXT_NODE_NAME,
15
- arrayMode: true,
16
- attrValueProcessor: a => decode(a),
17
- }
18
-
19
- constructor(private readonly factory = new MessageParsingFactory()) {}
20
-
21
- xmlToMessageEvents(html: string): Partial<BotonicEvent>[] {
22
- const jsonMessages = this.xmlToJSONMessages(html)
23
- return jsonMessages.map(msgToParse => this.factory.parse(msgToParse))
24
- }
25
-
26
- /**
27
- * Right now, when saving BotonicEvents to DataProvider, we need the standarized Botonic event
28
- * to be saved. This is, converting a botonic input like: '{id: 'msgId', data: 'rawData', payload: 'somePayload'}'
29
- * into a BotonicEvent with the expected properties.
30
- */
31
- parseFromUserInput(input: any): Partial<BotonicEvent> {
32
- return this.factory.parse(input)
33
- }
34
-
35
- private xmlToJSONMessages(html: any): any {
36
- return parse(html, BotonicOutputParser.OPTIONS).message
37
- }
38
- }