@botonic/core 0.26.0 → 0.26.1-alpha.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.
- package/lib/cjs/core-bot.d.ts +1 -3
- package/lib/cjs/core-bot.js +3 -33
- package/lib/cjs/core-bot.js.map +1 -1
- package/lib/cjs/handoff.d.ts +1 -1
- package/lib/cjs/index.d.ts +0 -1
- package/lib/cjs/index.js +0 -3
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/models/legacy-types.d.ts +42 -39
- package/lib/cjs/models/legacy-types.js +15 -32
- package/lib/cjs/models/legacy-types.js.map +1 -1
- package/lib/cjs/plugins.d.ts +2 -3
- package/lib/cjs/plugins.js +2 -4
- package/lib/cjs/plugins.js.map +1 -1
- package/lib/cjs/utils.d.ts +8 -0
- package/lib/cjs/utils.js +32 -1
- package/lib/cjs/utils.js.map +1 -1
- package/lib/esm/core-bot.d.ts +1 -3
- package/lib/esm/core-bot.js +4 -34
- package/lib/esm/core-bot.js.map +1 -1
- package/lib/esm/handoff.d.ts +1 -1
- package/lib/esm/index.d.ts +0 -1
- package/lib/esm/index.js +0 -3
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/models/legacy-types.d.ts +42 -39
- package/lib/esm/models/legacy-types.js +14 -31
- package/lib/esm/models/legacy-types.js.map +1 -1
- package/lib/esm/plugins.d.ts +2 -3
- package/lib/esm/plugins.js +2 -4
- package/lib/esm/plugins.js.map +1 -1
- package/lib/esm/utils.d.ts +8 -0
- package/lib/esm/utils.js +24 -0
- package/lib/esm/utils.js.map +1 -1
- package/package.json +1 -6
- package/src/core-bot.ts +2 -56
- package/src/handoff.ts +1 -1
- package/src/index.ts +0 -3
- package/src/models/legacy-types.ts +76 -76
- package/src/plugins.ts +2 -8
- package/src/utils.ts +32 -0
- package/lib/cjs/data-provider/dynamodb-data-provider.d.ts +0 -26
- package/lib/cjs/data-provider/dynamodb-data-provider.js +0 -107
- package/lib/cjs/data-provider/dynamodb-data-provider.js.map +0 -1
- package/lib/cjs/data-provider/dynamodb-utils.d.ts +0 -11
- package/lib/cjs/data-provider/dynamodb-utils.js +0 -121
- package/lib/cjs/data-provider/dynamodb-utils.js.map +0 -1
- package/lib/cjs/data-provider/factory.d.ts +0 -25
- package/lib/cjs/data-provider/factory.js +0 -31
- package/lib/cjs/data-provider/factory.js.map +0 -1
- package/lib/cjs/data-provider/index.d.ts +0 -4
- package/lib/cjs/data-provider/index.js +0 -8
- package/lib/cjs/data-provider/index.js.map +0 -1
- package/lib/cjs/data-provider/local-data-provider.d.ts +0 -26
- package/lib/cjs/data-provider/local-data-provider.js +0 -137
- package/lib/cjs/data-provider/local-data-provider.js.map +0 -1
- package/lib/cjs/output-parser/botonic-output-parser.d.ts +0 -16
- package/lib/cjs/output-parser/botonic-output-parser.js +0 -37
- package/lib/cjs/output-parser/botonic-output-parser.js.map +0 -1
- package/lib/cjs/output-parser/factory.d.ts +0 -4
- package/lib/cjs/output-parser/factory.js +0 -36
- package/lib/cjs/output-parser/factory.js.map +0 -1
- package/lib/cjs/output-parser/index.d.ts +0 -3
- package/lib/cjs/output-parser/index.js +0 -7
- package/lib/cjs/output-parser/index.js.map +0 -1
- package/lib/cjs/output-parser/parsers.d.ts +0 -26
- package/lib/cjs/output-parser/parsers.js +0 -171
- package/lib/cjs/output-parser/parsers.js.map +0 -1
- package/lib/esm/data-provider/dynamodb-data-provider.d.ts +0 -26
- package/lib/esm/data-provider/dynamodb-data-provider.js +0 -103
- package/lib/esm/data-provider/dynamodb-data-provider.js.map +0 -1
- package/lib/esm/data-provider/dynamodb-utils.d.ts +0 -11
- package/lib/esm/data-provider/dynamodb-utils.js +0 -113
- package/lib/esm/data-provider/dynamodb-utils.js.map +0 -1
- package/lib/esm/data-provider/factory.d.ts +0 -25
- package/lib/esm/data-provider/factory.js +0 -27
- package/lib/esm/data-provider/factory.js.map +0 -1
- package/lib/esm/data-provider/index.d.ts +0 -4
- package/lib/esm/data-provider/index.js +0 -5
- package/lib/esm/data-provider/index.js.map +0 -1
- package/lib/esm/data-provider/local-data-provider.d.ts +0 -26
- package/lib/esm/data-provider/local-data-provider.js +0 -133
- package/lib/esm/data-provider/local-data-provider.js.map +0 -1
- package/lib/esm/output-parser/botonic-output-parser.d.ts +0 -16
- package/lib/esm/output-parser/botonic-output-parser.js +0 -33
- package/lib/esm/output-parser/botonic-output-parser.js.map +0 -1
- package/lib/esm/output-parser/factory.d.ts +0 -4
- package/lib/esm/output-parser/factory.js +0 -32
- package/lib/esm/output-parser/factory.js.map +0 -1
- package/lib/esm/output-parser/index.d.ts +0 -3
- package/lib/esm/output-parser/index.js +0 -4
- package/lib/esm/output-parser/index.js.map +0 -1
- package/lib/esm/output-parser/parsers.d.ts +0 -26
- package/lib/esm/output-parser/parsers.js +0 -151
- package/lib/esm/output-parser/parsers.js.map +0 -1
- package/src/data-provider/dynamodb-data-provider.ts +0 -105
- package/src/data-provider/dynamodb-utils.ts +0 -149
- package/src/data-provider/factory.ts +0 -60
- package/src/data-provider/index.ts +0 -4
- package/src/data-provider/local-data-provider.ts +0 -154
- package/src/output-parser/botonic-output-parser.ts +0 -38
- package/src/output-parser/factory.ts +0 -45
- package/src/output-parser/index.ts +0 -3
- package/src/output-parser/parsers.ts +0 -237
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { BotonicEvent, MEDIA_TYPES, MessageEventTypes } from '../models'
|
|
2
|
-
import {
|
|
3
|
-
parseButtons,
|
|
4
|
-
parseCarousel,
|
|
5
|
-
parseContact,
|
|
6
|
-
parseCustom,
|
|
7
|
-
parseForm,
|
|
8
|
-
parseLocation,
|
|
9
|
-
parseMedia,
|
|
10
|
-
parseMessage,
|
|
11
|
-
parseMissed,
|
|
12
|
-
parsePostback,
|
|
13
|
-
parseReplies,
|
|
14
|
-
parseText,
|
|
15
|
-
} from './parsers'
|
|
16
|
-
|
|
17
|
-
export class MessageParsingFactory {
|
|
18
|
-
parse(msgToParse: any): Partial<BotonicEvent> {
|
|
19
|
-
const type = msgToParse.type
|
|
20
|
-
const parsedMessage = parseMessage({ toParse: msgToParse })
|
|
21
|
-
if (MEDIA_TYPES.includes(type)) {
|
|
22
|
-
return parseMedia(parseButtons(parsedMessage)).parsed
|
|
23
|
-
}
|
|
24
|
-
switch (type) {
|
|
25
|
-
case MessageEventTypes.TEXT:
|
|
26
|
-
// statement 1
|
|
27
|
-
return parseText(parseReplies(parseButtons(parsedMessage))).parsed
|
|
28
|
-
case MessageEventTypes.POSTBACK:
|
|
29
|
-
return parsePostback(parsedMessage).parsed
|
|
30
|
-
case MessageEventTypes.LOCATION:
|
|
31
|
-
return parseLocation(parsedMessage).parsed
|
|
32
|
-
case MessageEventTypes.CAROUSEL:
|
|
33
|
-
return parseCarousel(parsedMessage).parsed
|
|
34
|
-
case MessageEventTypes.CUSTOM:
|
|
35
|
-
return parseCustom(parseReplies(parsedMessage)).parsed
|
|
36
|
-
case MessageEventTypes.FORM:
|
|
37
|
-
return parseForm(parsedMessage).parsed
|
|
38
|
-
case MessageEventTypes.CONTACT:
|
|
39
|
-
return parseContact(parsedMessage).parsed
|
|
40
|
-
case MessageEventTypes.MISSED:
|
|
41
|
-
return parseMissed(parsedMessage).parsed
|
|
42
|
-
}
|
|
43
|
-
throw new Error(`Parsing for type: '${type}' not implemented.`)
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AudioMessageEvent,
|
|
3
|
-
BotonicMessageEvent,
|
|
4
|
-
Button,
|
|
5
|
-
CarouselElement,
|
|
6
|
-
CarouselMessageEvent,
|
|
7
|
-
CustomMessageEvent,
|
|
8
|
-
DocumentMessageEvent,
|
|
9
|
-
EventTypes,
|
|
10
|
-
FormMessageEvent,
|
|
11
|
-
ImageMessageEvent,
|
|
12
|
-
LocationMessageEvent,
|
|
13
|
-
MissedMessageEvent,
|
|
14
|
-
PostbackMessageEvent,
|
|
15
|
-
Reply,
|
|
16
|
-
TextMessageEvent,
|
|
17
|
-
VideoMessageEvent,
|
|
18
|
-
WithButtons,
|
|
19
|
-
WithReplies,
|
|
20
|
-
} from '../models'
|
|
21
|
-
import { ContactMessageEvent } from '../models/events/message/contact'
|
|
22
|
-
import { TEXT_NODE_NAME } from './botonic-output-parser'
|
|
23
|
-
|
|
24
|
-
export function parseNumber(strNumber: string): number {
|
|
25
|
-
return parseInt(strNumber)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function parseBoolean(strNumber: string): boolean {
|
|
29
|
-
if (strNumber === '0') return false
|
|
30
|
-
return true
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export type ParseFunction<Out> = (args: { toParse: any; parsed?: any }) => {
|
|
34
|
-
toParse: any
|
|
35
|
-
parsed: Partial<Out>
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// COMMON
|
|
39
|
-
export const parseMessage: ParseFunction<BotonicMessageEvent> = args => {
|
|
40
|
-
const typingAndDelay = {}
|
|
41
|
-
if (args.toParse.delay !== undefined) {
|
|
42
|
-
typingAndDelay['delay'] = parseNumber(args.toParse.delay)
|
|
43
|
-
}
|
|
44
|
-
if (args.toParse.typing !== undefined) {
|
|
45
|
-
typingAndDelay['typing'] = parseNumber(args.toParse.typing)
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
toParse: args.toParse,
|
|
49
|
-
parsed: {
|
|
50
|
-
// Following properties added later before saving event: eventId, userId, createdAt, from, ack
|
|
51
|
-
eventType: EventTypes.MESSAGE,
|
|
52
|
-
type: args.toParse.type,
|
|
53
|
-
ack: args.toParse.ack,
|
|
54
|
-
from: args.toParse.from,
|
|
55
|
-
...typingAndDelay,
|
|
56
|
-
},
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// BUTTONS
|
|
61
|
-
export const parseButton = (button: any): Button => {
|
|
62
|
-
const title = button[TEXT_NODE_NAME]
|
|
63
|
-
if ('payload' in button) {
|
|
64
|
-
return { title, payload: button.payload }
|
|
65
|
-
}
|
|
66
|
-
if ('url' in button) {
|
|
67
|
-
const b = { title, url: button.url, target: button.target }
|
|
68
|
-
if (button.target) b.target = button.target
|
|
69
|
-
return b
|
|
70
|
-
}
|
|
71
|
-
if ('webview' in button) {
|
|
72
|
-
return {
|
|
73
|
-
title,
|
|
74
|
-
webview: button.webview,
|
|
75
|
-
params: button.params,
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
throw new Error('Invalid parsed Button')
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export const parseButtons: ParseFunction<WithButtons> = args => {
|
|
82
|
-
const hasButtons = args.toParse?.button?.length > 0
|
|
83
|
-
let buttons: Button[] = []
|
|
84
|
-
if (hasButtons) {
|
|
85
|
-
buttons = args.toParse.button.map(button => parseButton(button))
|
|
86
|
-
}
|
|
87
|
-
return {
|
|
88
|
-
toParse: args.toParse,
|
|
89
|
-
parsed: {
|
|
90
|
-
...args.parsed,
|
|
91
|
-
buttons,
|
|
92
|
-
},
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// REPLIES
|
|
97
|
-
export const parseReply = (reply: any): Reply => ({
|
|
98
|
-
title: reply[TEXT_NODE_NAME],
|
|
99
|
-
payload: reply.payload,
|
|
100
|
-
})
|
|
101
|
-
|
|
102
|
-
export const parseReplies: ParseFunction<WithReplies> = args => {
|
|
103
|
-
const hasReplies = args.toParse?.reply?.length > 0
|
|
104
|
-
let replies: Reply[] = []
|
|
105
|
-
if (hasReplies) {
|
|
106
|
-
replies = args.toParse.reply.map(reply => parseReply(reply))
|
|
107
|
-
}
|
|
108
|
-
return {
|
|
109
|
-
toParse: args.toParse,
|
|
110
|
-
parsed: {
|
|
111
|
-
...args.parsed,
|
|
112
|
-
replies,
|
|
113
|
-
},
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// TEXT
|
|
118
|
-
export const parseText: ParseFunction<TextMessageEvent> = args => {
|
|
119
|
-
return {
|
|
120
|
-
toParse: args.toParse,
|
|
121
|
-
parsed: {
|
|
122
|
-
...args.parsed,
|
|
123
|
-
text: args.toParse[TEXT_NODE_NAME],
|
|
124
|
-
markdown: parseBoolean(args.toParse.markdown),
|
|
125
|
-
},
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// POSTBACK
|
|
130
|
-
export const parsePostback: ParseFunction<PostbackMessageEvent> = args => {
|
|
131
|
-
return {
|
|
132
|
-
toParse: args.toParse,
|
|
133
|
-
parsed: {
|
|
134
|
-
...args.parsed,
|
|
135
|
-
payload: args.toParse.payload,
|
|
136
|
-
},
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// MEDIA
|
|
141
|
-
export const parseMedia: ParseFunction<
|
|
142
|
-
| AudioMessageEvent
|
|
143
|
-
| DocumentMessageEvent
|
|
144
|
-
| ImageMessageEvent
|
|
145
|
-
| VideoMessageEvent
|
|
146
|
-
> = args => {
|
|
147
|
-
return {
|
|
148
|
-
toParse: args.toParse,
|
|
149
|
-
parsed: {
|
|
150
|
-
...args.parsed,
|
|
151
|
-
src: args.toParse.src,
|
|
152
|
-
},
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// LOCATION
|
|
157
|
-
export const parseLocation: ParseFunction<LocationMessageEvent> = args => {
|
|
158
|
-
return {
|
|
159
|
-
toParse: args.toParse,
|
|
160
|
-
parsed: {
|
|
161
|
-
...args.parsed,
|
|
162
|
-
lat: args.toParse.lat,
|
|
163
|
-
long: args.toParse.long,
|
|
164
|
-
},
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// CAROUSEL
|
|
169
|
-
export const parseElement = (element: any): CarouselElement => {
|
|
170
|
-
const e: CarouselElement = {
|
|
171
|
-
pic: element.pic,
|
|
172
|
-
title: element.title,
|
|
173
|
-
subtitle: element.desc,
|
|
174
|
-
}
|
|
175
|
-
const hasButtons = element.button !== undefined
|
|
176
|
-
if (hasButtons) e.buttons = element.button.map(b => parseButton(b))
|
|
177
|
-
return e
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
export const parseCarousel: ParseFunction<CarouselMessageEvent> = args => {
|
|
181
|
-
return {
|
|
182
|
-
toParse: args.toParse,
|
|
183
|
-
parsed: {
|
|
184
|
-
...args.parsed,
|
|
185
|
-
elements: args.toParse.element.map(element => parseElement(element)),
|
|
186
|
-
},
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// CUSTOM
|
|
191
|
-
export const parseCustom: ParseFunction<CustomMessageEvent> = args => {
|
|
192
|
-
return {
|
|
193
|
-
toParse: args.toParse,
|
|
194
|
-
parsed: {
|
|
195
|
-
...args.parsed,
|
|
196
|
-
json: JSON.parse(args.toParse.json),
|
|
197
|
-
},
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// MISSED
|
|
202
|
-
export const parseMissed: ParseFunction<MissedMessageEvent> = args => {
|
|
203
|
-
return {
|
|
204
|
-
toParse: args.toParse,
|
|
205
|
-
parsed: {
|
|
206
|
-
...args.parsed,
|
|
207
|
-
reason: args.toParse.reason,
|
|
208
|
-
media_type: args.toParse.media_type,
|
|
209
|
-
},
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// FORM
|
|
214
|
-
export const parseForm: ParseFunction<FormMessageEvent> = args => {
|
|
215
|
-
return {
|
|
216
|
-
toParse: args.toParse,
|
|
217
|
-
parsed: {
|
|
218
|
-
...args.parsed,
|
|
219
|
-
form_title: args.toParse.form_title,
|
|
220
|
-
form_answers: args.toParse.form_answers,
|
|
221
|
-
},
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
// CONTACT
|
|
226
|
-
export const parseContact: ParseFunction<ContactMessageEvent> = args => {
|
|
227
|
-
return {
|
|
228
|
-
toParse: args.toParse,
|
|
229
|
-
parsed: {
|
|
230
|
-
...args.parsed,
|
|
231
|
-
phone_number: args.toParse.phone_number,
|
|
232
|
-
first_name: args.toParse.first_name,
|
|
233
|
-
last_name: args.toParse.last_name,
|
|
234
|
-
vcard: args.toParse.vcard,
|
|
235
|
-
},
|
|
236
|
-
}
|
|
237
|
-
}
|