@builderbot/cli 1.0.28-alpha.0 → 1.0.29-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.
Files changed (102) hide show
  1. package/dist/index.cjs +1797 -1883
  2. package/dist/starters/apps/base-js-baileys-json/src/app.js +115 -115
  3. package/dist/starters/apps/base-js-baileys-memory/src/app.js +114 -114
  4. package/dist/starters/apps/base-js-baileys-mongo/src/app.js +117 -117
  5. package/dist/starters/apps/base-js-baileys-mysql/src/app.js +119 -119
  6. package/dist/starters/apps/base-js-baileys-postgres/src/app.js +120 -120
  7. package/dist/starters/apps/base-js-meta-json/src/app.js +119 -119
  8. package/dist/starters/apps/base-js-meta-memory/src/app.js +118 -118
  9. package/dist/starters/apps/base-js-meta-mongo/src/app.js +121 -121
  10. package/dist/starters/apps/base-js-meta-mysql/src/app.js +123 -123
  11. package/dist/starters/apps/base-js-meta-postgres/src/app.js +124 -124
  12. package/dist/starters/apps/base-js-twilio-json/src/app.js +118 -118
  13. package/dist/starters/apps/base-js-twilio-memory/src/app.js +117 -117
  14. package/dist/starters/apps/base-js-twilio-mongo/src/app.js +120 -120
  15. package/dist/starters/apps/base-js-twilio-mysql/src/app.js +122 -122
  16. package/dist/starters/apps/base-js-twilio-postgres/src/app.js +123 -123
  17. package/dist/starters/apps/base-js-venom-json/src/app.js +115 -115
  18. package/dist/starters/apps/base-js-venom-memory/src/app.js +114 -114
  19. package/dist/starters/apps/base-js-venom-mongo/src/app.js +117 -117
  20. package/dist/starters/apps/base-js-venom-mysql/src/app.js +119 -119
  21. package/dist/starters/apps/base-js-venom-postgres/src/app.js +120 -120
  22. package/dist/starters/apps/base-js-wppconnect-json/src/app.js +115 -115
  23. package/dist/starters/apps/base-js-wppconnect-memory/src/app.js +114 -114
  24. package/dist/starters/apps/base-js-wppconnect-mongo/src/app.js +117 -117
  25. package/dist/starters/apps/base-js-wppconnect-mysql/src/app.js +119 -119
  26. package/dist/starters/apps/base-js-wppconnect-postgres/src/app.js +120 -120
  27. package/dist/starters/apps/base-ts-baileys-json/package.json +29 -29
  28. package/dist/starters/apps/base-ts-baileys-json/rollup.config.js +11 -11
  29. package/dist/starters/apps/base-ts-baileys-json/src/app.ts +116 -116
  30. package/dist/starters/apps/base-ts-baileys-memory/package.json +28 -28
  31. package/dist/starters/apps/base-ts-baileys-memory/rollup.config.js +11 -11
  32. package/dist/starters/apps/base-ts-baileys-memory/src/app.ts +115 -115
  33. package/dist/starters/apps/base-ts-baileys-mongo/package.json +29 -29
  34. package/dist/starters/apps/base-ts-baileys-mongo/rollup.config.js +11 -11
  35. package/dist/starters/apps/base-ts-baileys-mongo/src/app.ts +118 -118
  36. package/dist/starters/apps/base-ts-baileys-mysql/package.json +29 -29
  37. package/dist/starters/apps/base-ts-baileys-mysql/rollup.config.js +11 -11
  38. package/dist/starters/apps/base-ts-baileys-mysql/src/app.ts +120 -120
  39. package/dist/starters/apps/base-ts-baileys-postgres/package.json +29 -29
  40. package/dist/starters/apps/base-ts-baileys-postgres/rollup.config.js +11 -11
  41. package/dist/starters/apps/base-ts-baileys-postgres/src/app.ts +121 -121
  42. package/dist/starters/apps/base-ts-meta-json/package.json +29 -29
  43. package/dist/starters/apps/base-ts-meta-json/rollup.config.js +11 -11
  44. package/dist/starters/apps/base-ts-meta-json/src/app.ts +120 -120
  45. package/dist/starters/apps/base-ts-meta-memory/package.json +28 -28
  46. package/dist/starters/apps/base-ts-meta-memory/rollup.config.js +11 -11
  47. package/dist/starters/apps/base-ts-meta-memory/src/app.ts +119 -119
  48. package/dist/starters/apps/base-ts-meta-mongo/package.json +29 -29
  49. package/dist/starters/apps/base-ts-meta-mongo/rollup.config.js +11 -11
  50. package/dist/starters/apps/base-ts-meta-mongo/src/app.ts +122 -122
  51. package/dist/starters/apps/base-ts-meta-mysql/package.json +29 -29
  52. package/dist/starters/apps/base-ts-meta-mysql/rollup.config.js +11 -11
  53. package/dist/starters/apps/base-ts-meta-mysql/src/app.ts +124 -124
  54. package/dist/starters/apps/base-ts-meta-postgres/package.json +29 -29
  55. package/dist/starters/apps/base-ts-meta-postgres/rollup.config.js +11 -11
  56. package/dist/starters/apps/base-ts-meta-postgres/src/app.ts +125 -125
  57. package/dist/starters/apps/base-ts-twilio-json/package.json +29 -29
  58. package/dist/starters/apps/base-ts-twilio-json/rollup.config.js +11 -11
  59. package/dist/starters/apps/base-ts-twilio-json/src/app.ts +119 -119
  60. package/dist/starters/apps/base-ts-twilio-memory/package.json +28 -28
  61. package/dist/starters/apps/base-ts-twilio-memory/rollup.config.js +11 -11
  62. package/dist/starters/apps/base-ts-twilio-memory/src/app.ts +118 -118
  63. package/dist/starters/apps/base-ts-twilio-mongo/package.json +29 -29
  64. package/dist/starters/apps/base-ts-twilio-mongo/rollup.config.js +11 -11
  65. package/dist/starters/apps/base-ts-twilio-mongo/src/app.ts +121 -121
  66. package/dist/starters/apps/base-ts-twilio-mysql/package.json +29 -29
  67. package/dist/starters/apps/base-ts-twilio-mysql/rollup.config.js +11 -11
  68. package/dist/starters/apps/base-ts-twilio-mysql/src/app.ts +123 -123
  69. package/dist/starters/apps/base-ts-twilio-postgres/package.json +29 -29
  70. package/dist/starters/apps/base-ts-twilio-postgres/rollup.config.js +11 -11
  71. package/dist/starters/apps/base-ts-twilio-postgres/src/app.ts +124 -124
  72. package/dist/starters/apps/base-ts-venom-json/package.json +29 -29
  73. package/dist/starters/apps/base-ts-venom-json/rollup.config.js +11 -11
  74. package/dist/starters/apps/base-ts-venom-json/src/app.ts +116 -116
  75. package/dist/starters/apps/base-ts-venom-memory/package.json +28 -28
  76. package/dist/starters/apps/base-ts-venom-memory/rollup.config.js +11 -11
  77. package/dist/starters/apps/base-ts-venom-memory/src/app.ts +115 -115
  78. package/dist/starters/apps/base-ts-venom-mongo/package.json +29 -29
  79. package/dist/starters/apps/base-ts-venom-mongo/rollup.config.js +11 -11
  80. package/dist/starters/apps/base-ts-venom-mongo/src/app.ts +118 -118
  81. package/dist/starters/apps/base-ts-venom-mysql/package.json +29 -29
  82. package/dist/starters/apps/base-ts-venom-mysql/rollup.config.js +11 -11
  83. package/dist/starters/apps/base-ts-venom-mysql/src/app.ts +120 -120
  84. package/dist/starters/apps/base-ts-venom-postgres/package.json +29 -29
  85. package/dist/starters/apps/base-ts-venom-postgres/rollup.config.js +11 -11
  86. package/dist/starters/apps/base-ts-venom-postgres/src/app.ts +121 -121
  87. package/dist/starters/apps/base-ts-wppconnect-json/package.json +29 -29
  88. package/dist/starters/apps/base-ts-wppconnect-json/rollup.config.js +11 -11
  89. package/dist/starters/apps/base-ts-wppconnect-json/src/app.ts +116 -116
  90. package/dist/starters/apps/base-ts-wppconnect-memory/package.json +28 -28
  91. package/dist/starters/apps/base-ts-wppconnect-memory/rollup.config.js +11 -11
  92. package/dist/starters/apps/base-ts-wppconnect-memory/src/app.ts +115 -115
  93. package/dist/starters/apps/base-ts-wppconnect-mongo/package.json +29 -29
  94. package/dist/starters/apps/base-ts-wppconnect-mongo/rollup.config.js +11 -11
  95. package/dist/starters/apps/base-ts-wppconnect-mongo/src/app.ts +118 -118
  96. package/dist/starters/apps/base-ts-wppconnect-mysql/package.json +29 -29
  97. package/dist/starters/apps/base-ts-wppconnect-mysql/rollup.config.js +11 -11
  98. package/dist/starters/apps/base-ts-wppconnect-mysql/src/app.ts +120 -120
  99. package/dist/starters/apps/base-ts-wppconnect-postgres/package.json +29 -29
  100. package/dist/starters/apps/base-ts-wppconnect-postgres/rollup.config.js +11 -11
  101. package/dist/starters/apps/base-ts-wppconnect-postgres/src/app.ts +121 -121
  102. package/package.json +2 -2
@@ -1,118 +1,118 @@
1
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
- import { MemoryDB as Database } from '@builderbot/bot'
3
- import { MetaProvider as Provider } from '@builderbot/provider-meta'
4
-
5
- const PORT = process.env.PORT ?? 3008
6
-
7
- const discordFlow = addKeyword('doc').addAnswer(
8
- ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
9
- '\n'
10
- ),
11
- { capture: true },
12
- async (ctx, { gotoFlow, flowDynamic }) => {
13
- if (ctx.body.toLocaleLowerCase().includes('yes')) {
14
- return gotoFlow(registerFlow)
15
- }
16
- await flowDynamic('Thanks!')
17
- return
18
- }
19
- )
20
-
21
- const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
22
- .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
23
- .addAnswer(
24
- [
25
- 'I share with you the following links of interest about the project',
26
- '👉 *doc* to view the documentation',
27
- ].join('\n'),
28
- { delay: 800, capture: true },
29
- async (ctx, { fallBack }) => {
30
- if (!ctx.body.toLocaleLowerCase().includes('doc')) {
31
- return fallBack('You should type *doc*')
32
- }
33
- return
34
- },
35
- [discordFlow]
36
- )
37
-
38
- const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
39
- .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
40
- await state.update({ name: ctx.body })
41
- })
42
- .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
43
- await state.update({ age: ctx.body })
44
- })
45
- .addAction(async (_, { flowDynamic, state }) => {
46
- await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
47
- })
48
-
49
- const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
50
- .addAnswer(`💪 I'll send you a lot files...`)
51
- .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
52
- .addAnswer(`Send video from URL`, {
53
- media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
54
- })
55
- .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
56
- .addAnswer(`Send file from URL`, {
57
- media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
58
- })
59
-
60
- const main = async () => {
61
- const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
62
- const adapterProvider = createProvider(Provider, {
63
- jwtToken: 'jwtToken',
64
- numberId: 'numberId',
65
- verifyToken: 'verifyToken',
66
- version: 'v18.0'
67
- })
68
- const adapterDB = new Database()
69
-
70
- const { handleCtx, httpServer } = await createBot({
71
- flow: adapterFlow,
72
- provider: adapterProvider,
73
- database: adapterDB,
74
- })
75
-
76
- adapterProvider.server.post(
77
- '/v1/messages',
78
- handleCtx(async (bot, req, res) => {
79
- const { number, message, urlMedia } = req.body
80
- await bot.sendMessage(number, message, { media: urlMedia ?? null })
81
- return res.end('sended')
82
- })
83
- )
84
-
85
- adapterProvider.server.post(
86
- '/v1/register',
87
- handleCtx(async (bot, req, res) => {
88
- const { number, name } = req.body
89
- await bot.dispatch('REGISTER_FLOW', { from: number, name })
90
- return res.end('trigger')
91
- })
92
- )
93
-
94
- adapterProvider.server.post(
95
- '/v1/samples',
96
- handleCtx(async (bot, req, res) => {
97
- const { number, name } = req.body
98
- await bot.dispatch('SAMPLES', { from: number, name })
99
- return res.end('trigger')
100
- })
101
- )
102
-
103
- adapterProvider.server.post(
104
- '/v1/blacklist',
105
- handleCtx(async (bot, req, res) => {
106
- const { number, intent } = req.body
107
- if (intent === 'remove') bot.blacklist.remove(number)
108
- if (intent === 'add') bot.blacklist.add(number)
109
-
110
- res.writeHead(200, { 'Content-Type': 'application/json' })
111
- return res.end(JSON.stringify({ status: 'ok', number, intent }))
112
- })
113
- )
114
-
115
- httpServer(+PORT)
116
- }
117
-
118
- main()
1
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
+ import { MemoryDB as Database } from '@builderbot/bot'
3
+ import { MetaProvider as Provider } from '@builderbot/provider-meta'
4
+
5
+ const PORT = process.env.PORT ?? 3008
6
+
7
+ const discordFlow = addKeyword('doc').addAnswer(
8
+ ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
9
+ '\n'
10
+ ),
11
+ { capture: true },
12
+ async (ctx, { gotoFlow, flowDynamic }) => {
13
+ if (ctx.body.toLocaleLowerCase().includes('yes')) {
14
+ return gotoFlow(registerFlow)
15
+ }
16
+ await flowDynamic('Thanks!')
17
+ return
18
+ }
19
+ )
20
+
21
+ const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
22
+ .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
23
+ .addAnswer(
24
+ [
25
+ 'I share with you the following links of interest about the project',
26
+ '👉 *doc* to view the documentation',
27
+ ].join('\n'),
28
+ { delay: 800, capture: true },
29
+ async (ctx, { fallBack }) => {
30
+ if (!ctx.body.toLocaleLowerCase().includes('doc')) {
31
+ return fallBack('You should type *doc*')
32
+ }
33
+ return
34
+ },
35
+ [discordFlow]
36
+ )
37
+
38
+ const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
39
+ .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
40
+ await state.update({ name: ctx.body })
41
+ })
42
+ .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
43
+ await state.update({ age: ctx.body })
44
+ })
45
+ .addAction(async (_, { flowDynamic, state }) => {
46
+ await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
47
+ })
48
+
49
+ const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
50
+ .addAnswer(`💪 I'll send you a lot files...`)
51
+ .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
52
+ .addAnswer(`Send video from URL`, {
53
+ media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
54
+ })
55
+ .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
56
+ .addAnswer(`Send file from URL`, {
57
+ media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
58
+ })
59
+
60
+ const main = async () => {
61
+ const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
62
+ const adapterProvider = createProvider(Provider, {
63
+ jwtToken: 'jwtToken',
64
+ numberId: 'numberId',
65
+ verifyToken: 'verifyToken',
66
+ version: 'v18.0'
67
+ })
68
+ const adapterDB = new Database()
69
+
70
+ const { handleCtx, httpServer } = await createBot({
71
+ flow: adapterFlow,
72
+ provider: adapterProvider,
73
+ database: adapterDB,
74
+ })
75
+
76
+ adapterProvider.server.post(
77
+ '/v1/messages',
78
+ handleCtx(async (bot, req, res) => {
79
+ const { number, message, urlMedia } = req.body
80
+ await bot.sendMessage(number, message, { media: urlMedia ?? null })
81
+ return res.end('sended')
82
+ })
83
+ )
84
+
85
+ adapterProvider.server.post(
86
+ '/v1/register',
87
+ handleCtx(async (bot, req, res) => {
88
+ const { number, name } = req.body
89
+ await bot.dispatch('REGISTER_FLOW', { from: number, name })
90
+ return res.end('trigger')
91
+ })
92
+ )
93
+
94
+ adapterProvider.server.post(
95
+ '/v1/samples',
96
+ handleCtx(async (bot, req, res) => {
97
+ const { number, name } = req.body
98
+ await bot.dispatch('SAMPLES', { from: number, name })
99
+ return res.end('trigger')
100
+ })
101
+ )
102
+
103
+ adapterProvider.server.post(
104
+ '/v1/blacklist',
105
+ handleCtx(async (bot, req, res) => {
106
+ const { number, intent } = req.body
107
+ if (intent === 'remove') bot.blacklist.remove(number)
108
+ if (intent === 'add') bot.blacklist.add(number)
109
+
110
+ res.writeHead(200, { 'Content-Type': 'application/json' })
111
+ return res.end(JSON.stringify({ status: 'ok', number, intent }))
112
+ })
113
+ )
114
+
115
+ httpServer(+PORT)
116
+ }
117
+
118
+ main()
@@ -1,121 +1,121 @@
1
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
- import { MongoAdapter as Database } from '@builderbot/database-mongo'
3
- import { MetaProvider as Provider } from '@builderbot/provider-meta'
4
-
5
- const PORT = process.env.PORT ?? 3008
6
-
7
- const discordFlow = addKeyword('doc').addAnswer(
8
- ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
9
- '\n'
10
- ),
11
- { capture: true },
12
- async (ctx, { gotoFlow, flowDynamic }) => {
13
- if (ctx.body.toLocaleLowerCase().includes('yes')) {
14
- return gotoFlow(registerFlow)
15
- }
16
- await flowDynamic('Thanks!')
17
- return
18
- }
19
- )
20
-
21
- const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
22
- .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
23
- .addAnswer(
24
- [
25
- 'I share with you the following links of interest about the project',
26
- '👉 *doc* to view the documentation',
27
- ].join('\n'),
28
- { delay: 800, capture: true },
29
- async (ctx, { fallBack }) => {
30
- if (!ctx.body.toLocaleLowerCase().includes('doc')) {
31
- return fallBack('You should type *doc*')
32
- }
33
- return
34
- },
35
- [discordFlow]
36
- )
37
-
38
- const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
39
- .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
40
- await state.update({ name: ctx.body })
41
- })
42
- .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
43
- await state.update({ age: ctx.body })
44
- })
45
- .addAction(async (_, { flowDynamic, state }) => {
46
- await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
47
- })
48
-
49
- const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
50
- .addAnswer(`💪 I'll send you a lot files...`)
51
- .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
52
- .addAnswer(`Send video from URL`, {
53
- media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
54
- })
55
- .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
56
- .addAnswer(`Send file from URL`, {
57
- media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
58
- })
59
-
60
- const main = async () => {
61
- const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
62
- const adapterProvider = createProvider(Provider, {
63
- jwtToken: 'jwtToken',
64
- numberId: 'numberId',
65
- verifyToken: 'verifyToken',
66
- version: 'v18.0'
67
- })
68
- const adapterDB = new Database({
69
- dbUri: process.env.MONGO_DB_URI,
70
- dbName: process.env.MONGO_DB_NAME,
71
- })
72
-
73
- const { handleCtx, httpServer } = await createBot({
74
- flow: adapterFlow,
75
- provider: adapterProvider,
76
- database: adapterDB,
77
- })
78
-
79
- adapterProvider.server.post(
80
- '/v1/messages',
81
- handleCtx(async (bot, req, res) => {
82
- const { number, message, urlMedia } = req.body
83
- await bot.sendMessage(number, message, { media: urlMedia ?? null })
84
- return res.end('sended')
85
- })
86
- )
87
-
88
- adapterProvider.server.post(
89
- '/v1/register',
90
- handleCtx(async (bot, req, res) => {
91
- const { number, name } = req.body
92
- await bot.dispatch('REGISTER_FLOW', { from: number, name })
93
- return res.end('trigger')
94
- })
95
- )
96
-
97
- adapterProvider.server.post(
98
- '/v1/samples',
99
- handleCtx(async (bot, req, res) => {
100
- const { number, name } = req.body
101
- await bot.dispatch('SAMPLES', { from: number, name })
102
- return res.end('trigger')
103
- })
104
- )
105
-
106
- adapterProvider.server.post(
107
- '/v1/blacklist',
108
- handleCtx(async (bot, req, res) => {
109
- const { number, intent } = req.body
110
- if (intent === 'remove') bot.blacklist.remove(number)
111
- if (intent === 'add') bot.blacklist.add(number)
112
-
113
- res.writeHead(200, { 'Content-Type': 'application/json' })
114
- return res.end(JSON.stringify({ status: 'ok', number, intent }))
115
- })
116
- )
117
-
118
- httpServer(+PORT)
119
- }
120
-
121
- main()
1
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
2
+ import { MongoAdapter as Database } from '@builderbot/database-mongo'
3
+ import { MetaProvider as Provider } from '@builderbot/provider-meta'
4
+
5
+ const PORT = process.env.PORT ?? 3008
6
+
7
+ const discordFlow = addKeyword('doc').addAnswer(
8
+ ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
9
+ '\n'
10
+ ),
11
+ { capture: true },
12
+ async (ctx, { gotoFlow, flowDynamic }) => {
13
+ if (ctx.body.toLocaleLowerCase().includes('yes')) {
14
+ return gotoFlow(registerFlow)
15
+ }
16
+ await flowDynamic('Thanks!')
17
+ return
18
+ }
19
+ )
20
+
21
+ const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
22
+ .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
23
+ .addAnswer(
24
+ [
25
+ 'I share with you the following links of interest about the project',
26
+ '👉 *doc* to view the documentation',
27
+ ].join('\n'),
28
+ { delay: 800, capture: true },
29
+ async (ctx, { fallBack }) => {
30
+ if (!ctx.body.toLocaleLowerCase().includes('doc')) {
31
+ return fallBack('You should type *doc*')
32
+ }
33
+ return
34
+ },
35
+ [discordFlow]
36
+ )
37
+
38
+ const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
39
+ .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
40
+ await state.update({ name: ctx.body })
41
+ })
42
+ .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
43
+ await state.update({ age: ctx.body })
44
+ })
45
+ .addAction(async (_, { flowDynamic, state }) => {
46
+ await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
47
+ })
48
+
49
+ const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
50
+ .addAnswer(`💪 I'll send you a lot files...`)
51
+ .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
52
+ .addAnswer(`Send video from URL`, {
53
+ media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
54
+ })
55
+ .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
56
+ .addAnswer(`Send file from URL`, {
57
+ media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
58
+ })
59
+
60
+ const main = async () => {
61
+ const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
62
+ const adapterProvider = createProvider(Provider, {
63
+ jwtToken: 'jwtToken',
64
+ numberId: 'numberId',
65
+ verifyToken: 'verifyToken',
66
+ version: 'v18.0'
67
+ })
68
+ const adapterDB = new Database({
69
+ dbUri: process.env.MONGO_DB_URI,
70
+ dbName: process.env.MONGO_DB_NAME,
71
+ })
72
+
73
+ const { handleCtx, httpServer } = await createBot({
74
+ flow: adapterFlow,
75
+ provider: adapterProvider,
76
+ database: adapterDB,
77
+ })
78
+
79
+ adapterProvider.server.post(
80
+ '/v1/messages',
81
+ handleCtx(async (bot, req, res) => {
82
+ const { number, message, urlMedia } = req.body
83
+ await bot.sendMessage(number, message, { media: urlMedia ?? null })
84
+ return res.end('sended')
85
+ })
86
+ )
87
+
88
+ adapterProvider.server.post(
89
+ '/v1/register',
90
+ handleCtx(async (bot, req, res) => {
91
+ const { number, name } = req.body
92
+ await bot.dispatch('REGISTER_FLOW', { from: number, name })
93
+ return res.end('trigger')
94
+ })
95
+ )
96
+
97
+ adapterProvider.server.post(
98
+ '/v1/samples',
99
+ handleCtx(async (bot, req, res) => {
100
+ const { number, name } = req.body
101
+ await bot.dispatch('SAMPLES', { from: number, name })
102
+ return res.end('trigger')
103
+ })
104
+ )
105
+
106
+ adapterProvider.server.post(
107
+ '/v1/blacklist',
108
+ handleCtx(async (bot, req, res) => {
109
+ const { number, intent } = req.body
110
+ if (intent === 'remove') bot.blacklist.remove(number)
111
+ if (intent === 'add') bot.blacklist.add(number)
112
+
113
+ res.writeHead(200, { 'Content-Type': 'application/json' })
114
+ return res.end(JSON.stringify({ status: 'ok', number, intent }))
115
+ })
116
+ )
117
+
118
+ httpServer(+PORT)
119
+ }
120
+
121
+ main()