@builderbot/cli 1.0.30-alpha.0 → 1.0.31-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 (178) hide show
  1. package/dist/index.cjs +4 -1
  2. package/dist/interactive/index.d.ts.map +1 -1
  3. package/dist/starters/apps/base-js-baileys-json/Dockerfile +2 -1
  4. package/dist/starters/apps/base-js-baileys-json/_gitignore +10 -0
  5. package/dist/starters/apps/base-js-baileys-json/package.json +1 -1
  6. package/dist/starters/apps/base-js-baileys-json/src/app.js +111 -111
  7. package/dist/starters/apps/base-js-baileys-memory/Dockerfile +2 -1
  8. package/dist/starters/apps/base-js-baileys-memory/_gitignore +10 -0
  9. package/dist/starters/apps/base-js-baileys-memory/package.json +1 -1
  10. package/dist/starters/apps/base-js-baileys-memory/src/app.js +111 -111
  11. package/dist/starters/apps/base-js-baileys-mongo/Dockerfile +2 -1
  12. package/dist/starters/apps/base-js-baileys-mongo/_gitignore +10 -0
  13. package/dist/starters/apps/base-js-baileys-mongo/package.json +1 -1
  14. package/dist/starters/apps/base-js-baileys-mongo/src/app.js +111 -111
  15. package/dist/starters/apps/base-js-baileys-mysql/Dockerfile +2 -1
  16. package/dist/starters/apps/base-js-baileys-mysql/_gitignore +10 -0
  17. package/dist/starters/apps/base-js-baileys-mysql/package.json +1 -1
  18. package/dist/starters/apps/base-js-baileys-mysql/src/app.js +111 -111
  19. package/dist/starters/apps/base-js-baileys-postgres/Dockerfile +2 -1
  20. package/dist/starters/apps/base-js-baileys-postgres/_gitignore +10 -0
  21. package/dist/starters/apps/base-js-baileys-postgres/package.json +1 -1
  22. package/dist/starters/apps/base-js-baileys-postgres/src/app.js +111 -111
  23. package/dist/starters/apps/base-js-meta-json/Dockerfile +2 -1
  24. package/dist/starters/apps/base-js-meta-json/_gitignore +10 -0
  25. package/dist/starters/apps/base-js-meta-json/package.json +1 -1
  26. package/dist/starters/apps/base-js-meta-json/src/app.js +111 -111
  27. package/dist/starters/apps/base-js-meta-memory/Dockerfile +2 -1
  28. package/dist/starters/apps/base-js-meta-memory/_gitignore +10 -0
  29. package/dist/starters/apps/base-js-meta-memory/package.json +1 -1
  30. package/dist/starters/apps/base-js-meta-memory/src/app.js +111 -111
  31. package/dist/starters/apps/base-js-meta-mongo/Dockerfile +2 -1
  32. package/dist/starters/apps/base-js-meta-mongo/_gitignore +10 -0
  33. package/dist/starters/apps/base-js-meta-mongo/package.json +1 -1
  34. package/dist/starters/apps/base-js-meta-mongo/src/app.js +111 -111
  35. package/dist/starters/apps/base-js-meta-mysql/Dockerfile +2 -1
  36. package/dist/starters/apps/base-js-meta-mysql/_gitignore +10 -0
  37. package/dist/starters/apps/base-js-meta-mysql/package.json +1 -1
  38. package/dist/starters/apps/base-js-meta-mysql/src/app.js +111 -111
  39. package/dist/starters/apps/base-js-meta-postgres/Dockerfile +2 -1
  40. package/dist/starters/apps/base-js-meta-postgres/_gitignore +10 -0
  41. package/dist/starters/apps/base-js-meta-postgres/package.json +1 -1
  42. package/dist/starters/apps/base-js-meta-postgres/src/app.js +111 -111
  43. package/dist/starters/apps/base-js-twilio-json/Dockerfile +2 -1
  44. package/dist/starters/apps/base-js-twilio-json/_gitignore +10 -0
  45. package/dist/starters/apps/base-js-twilio-json/package.json +1 -1
  46. package/dist/starters/apps/base-js-twilio-json/src/app.js +111 -111
  47. package/dist/starters/apps/base-js-twilio-memory/Dockerfile +2 -1
  48. package/dist/starters/apps/base-js-twilio-memory/_gitignore +10 -0
  49. package/dist/starters/apps/base-js-twilio-memory/package.json +1 -1
  50. package/dist/starters/apps/base-js-twilio-memory/src/app.js +111 -111
  51. package/dist/starters/apps/base-js-twilio-mongo/Dockerfile +2 -1
  52. package/dist/starters/apps/base-js-twilio-mongo/_gitignore +10 -0
  53. package/dist/starters/apps/base-js-twilio-mongo/package.json +1 -1
  54. package/dist/starters/apps/base-js-twilio-mongo/src/app.js +111 -111
  55. package/dist/starters/apps/base-js-twilio-mysql/Dockerfile +2 -1
  56. package/dist/starters/apps/base-js-twilio-mysql/_gitignore +10 -0
  57. package/dist/starters/apps/base-js-twilio-mysql/package.json +1 -1
  58. package/dist/starters/apps/base-js-twilio-mysql/src/app.js +111 -111
  59. package/dist/starters/apps/base-js-twilio-postgres/Dockerfile +2 -1
  60. package/dist/starters/apps/base-js-twilio-postgres/_gitignore +10 -0
  61. package/dist/starters/apps/base-js-twilio-postgres/package.json +1 -1
  62. package/dist/starters/apps/base-js-twilio-postgres/src/app.js +111 -111
  63. package/dist/starters/apps/base-js-venom-json/Dockerfile +2 -1
  64. package/dist/starters/apps/base-js-venom-json/_gitignore +10 -0
  65. package/dist/starters/apps/base-js-venom-json/package.json +1 -1
  66. package/dist/starters/apps/base-js-venom-json/src/app.js +111 -111
  67. package/dist/starters/apps/base-js-venom-memory/Dockerfile +2 -1
  68. package/dist/starters/apps/base-js-venom-memory/_gitignore +10 -0
  69. package/dist/starters/apps/base-js-venom-memory/package.json +1 -1
  70. package/dist/starters/apps/base-js-venom-memory/src/app.js +111 -111
  71. package/dist/starters/apps/base-js-venom-mongo/Dockerfile +2 -1
  72. package/dist/starters/apps/base-js-venom-mongo/_gitignore +10 -0
  73. package/dist/starters/apps/base-js-venom-mongo/package.json +1 -1
  74. package/dist/starters/apps/base-js-venom-mongo/src/app.js +111 -111
  75. package/dist/starters/apps/base-js-venom-mysql/Dockerfile +2 -1
  76. package/dist/starters/apps/base-js-venom-mysql/_gitignore +10 -0
  77. package/dist/starters/apps/base-js-venom-mysql/package.json +1 -1
  78. package/dist/starters/apps/base-js-venom-mysql/src/app.js +111 -111
  79. package/dist/starters/apps/base-js-venom-postgres/Dockerfile +2 -1
  80. package/dist/starters/apps/base-js-venom-postgres/_gitignore +10 -0
  81. package/dist/starters/apps/base-js-venom-postgres/package.json +1 -1
  82. package/dist/starters/apps/base-js-venom-postgres/src/app.js +111 -111
  83. package/dist/starters/apps/base-js-wppconnect-json/Dockerfile +2 -1
  84. package/dist/starters/apps/base-js-wppconnect-json/_gitignore +10 -0
  85. package/dist/starters/apps/base-js-wppconnect-json/package.json +1 -1
  86. package/dist/starters/apps/base-js-wppconnect-json/src/app.js +111 -111
  87. package/dist/starters/apps/base-js-wppconnect-memory/Dockerfile +2 -1
  88. package/dist/starters/apps/base-js-wppconnect-memory/_gitignore +10 -0
  89. package/dist/starters/apps/base-js-wppconnect-memory/package.json +1 -1
  90. package/dist/starters/apps/base-js-wppconnect-memory/src/app.js +111 -111
  91. package/dist/starters/apps/base-js-wppconnect-mongo/Dockerfile +2 -1
  92. package/dist/starters/apps/base-js-wppconnect-mongo/_gitignore +10 -0
  93. package/dist/starters/apps/base-js-wppconnect-mongo/package.json +1 -1
  94. package/dist/starters/apps/base-js-wppconnect-mongo/src/app.js +111 -111
  95. package/dist/starters/apps/base-js-wppconnect-mysql/Dockerfile +2 -1
  96. package/dist/starters/apps/base-js-wppconnect-mysql/_gitignore +10 -0
  97. package/dist/starters/apps/base-js-wppconnect-mysql/package.json +1 -1
  98. package/dist/starters/apps/base-js-wppconnect-mysql/src/app.js +111 -111
  99. package/dist/starters/apps/base-js-wppconnect-postgres/Dockerfile +2 -1
  100. package/dist/starters/apps/base-js-wppconnect-postgres/_gitignore +10 -0
  101. package/dist/starters/apps/base-js-wppconnect-postgres/package.json +1 -1
  102. package/dist/starters/apps/base-js-wppconnect-postgres/src/app.js +111 -111
  103. package/dist/starters/apps/base-ts-baileys-json/Dockerfile +2 -1
  104. package/dist/starters/apps/base-ts-baileys-json/_gitignore +10 -0
  105. package/dist/starters/apps/base-ts-baileys-json/package.json +5 -3
  106. package/dist/starters/apps/base-ts-baileys-memory/Dockerfile +2 -1
  107. package/dist/starters/apps/base-ts-baileys-memory/_gitignore +10 -0
  108. package/dist/starters/apps/base-ts-baileys-memory/package.json +5 -3
  109. package/dist/starters/apps/base-ts-baileys-mongo/Dockerfile +2 -1
  110. package/dist/starters/apps/base-ts-baileys-mongo/_gitignore +10 -0
  111. package/dist/starters/apps/base-ts-baileys-mongo/package.json +5 -3
  112. package/dist/starters/apps/base-ts-baileys-mysql/Dockerfile +2 -1
  113. package/dist/starters/apps/base-ts-baileys-mysql/_gitignore +10 -0
  114. package/dist/starters/apps/base-ts-baileys-mysql/package.json +5 -3
  115. package/dist/starters/apps/base-ts-baileys-postgres/Dockerfile +2 -1
  116. package/dist/starters/apps/base-ts-baileys-postgres/_gitignore +10 -0
  117. package/dist/starters/apps/base-ts-baileys-postgres/package.json +5 -3
  118. package/dist/starters/apps/base-ts-meta-json/Dockerfile +2 -1
  119. package/dist/starters/apps/base-ts-meta-json/_gitignore +10 -0
  120. package/dist/starters/apps/base-ts-meta-json/package.json +5 -3
  121. package/dist/starters/apps/base-ts-meta-memory/Dockerfile +2 -1
  122. package/dist/starters/apps/base-ts-meta-memory/_gitignore +10 -0
  123. package/dist/starters/apps/base-ts-meta-memory/package.json +5 -3
  124. package/dist/starters/apps/base-ts-meta-mongo/Dockerfile +2 -1
  125. package/dist/starters/apps/base-ts-meta-mongo/_gitignore +10 -0
  126. package/dist/starters/apps/base-ts-meta-mongo/package.json +5 -3
  127. package/dist/starters/apps/base-ts-meta-mysql/Dockerfile +2 -1
  128. package/dist/starters/apps/base-ts-meta-mysql/_gitignore +10 -0
  129. package/dist/starters/apps/base-ts-meta-mysql/package.json +5 -3
  130. package/dist/starters/apps/base-ts-meta-postgres/Dockerfile +2 -1
  131. package/dist/starters/apps/base-ts-meta-postgres/_gitignore +10 -0
  132. package/dist/starters/apps/base-ts-meta-postgres/package.json +5 -3
  133. package/dist/starters/apps/base-ts-twilio-json/Dockerfile +2 -1
  134. package/dist/starters/apps/base-ts-twilio-json/_gitignore +10 -0
  135. package/dist/starters/apps/base-ts-twilio-json/package.json +5 -3
  136. package/dist/starters/apps/base-ts-twilio-memory/Dockerfile +2 -1
  137. package/dist/starters/apps/base-ts-twilio-memory/_gitignore +10 -0
  138. package/dist/starters/apps/base-ts-twilio-memory/package.json +5 -3
  139. package/dist/starters/apps/base-ts-twilio-mongo/Dockerfile +2 -1
  140. package/dist/starters/apps/base-ts-twilio-mongo/_gitignore +10 -0
  141. package/dist/starters/apps/base-ts-twilio-mongo/package.json +5 -3
  142. package/dist/starters/apps/base-ts-twilio-mysql/Dockerfile +2 -1
  143. package/dist/starters/apps/base-ts-twilio-mysql/_gitignore +10 -0
  144. package/dist/starters/apps/base-ts-twilio-mysql/package.json +5 -3
  145. package/dist/starters/apps/base-ts-twilio-postgres/Dockerfile +2 -1
  146. package/dist/starters/apps/base-ts-twilio-postgres/_gitignore +10 -0
  147. package/dist/starters/apps/base-ts-twilio-postgres/package.json +5 -3
  148. package/dist/starters/apps/base-ts-venom-json/Dockerfile +2 -1
  149. package/dist/starters/apps/base-ts-venom-json/_gitignore +10 -0
  150. package/dist/starters/apps/base-ts-venom-json/package.json +5 -3
  151. package/dist/starters/apps/base-ts-venom-memory/Dockerfile +2 -1
  152. package/dist/starters/apps/base-ts-venom-memory/_gitignore +10 -0
  153. package/dist/starters/apps/base-ts-venom-memory/package.json +5 -3
  154. package/dist/starters/apps/base-ts-venom-mongo/Dockerfile +2 -1
  155. package/dist/starters/apps/base-ts-venom-mongo/_gitignore +10 -0
  156. package/dist/starters/apps/base-ts-venom-mongo/package.json +5 -3
  157. package/dist/starters/apps/base-ts-venom-mysql/Dockerfile +2 -1
  158. package/dist/starters/apps/base-ts-venom-mysql/_gitignore +10 -0
  159. package/dist/starters/apps/base-ts-venom-mysql/package.json +5 -3
  160. package/dist/starters/apps/base-ts-venom-postgres/Dockerfile +2 -1
  161. package/dist/starters/apps/base-ts-venom-postgres/_gitignore +10 -0
  162. package/dist/starters/apps/base-ts-venom-postgres/package.json +5 -3
  163. package/dist/starters/apps/base-ts-wppconnect-json/Dockerfile +2 -1
  164. package/dist/starters/apps/base-ts-wppconnect-json/_gitignore +10 -0
  165. package/dist/starters/apps/base-ts-wppconnect-json/package.json +5 -3
  166. package/dist/starters/apps/base-ts-wppconnect-memory/Dockerfile +2 -1
  167. package/dist/starters/apps/base-ts-wppconnect-memory/_gitignore +10 -0
  168. package/dist/starters/apps/base-ts-wppconnect-memory/package.json +5 -3
  169. package/dist/starters/apps/base-ts-wppconnect-mongo/Dockerfile +2 -1
  170. package/dist/starters/apps/base-ts-wppconnect-mongo/_gitignore +10 -0
  171. package/dist/starters/apps/base-ts-wppconnect-mongo/package.json +5 -3
  172. package/dist/starters/apps/base-ts-wppconnect-mysql/Dockerfile +2 -1
  173. package/dist/starters/apps/base-ts-wppconnect-mysql/_gitignore +10 -0
  174. package/dist/starters/apps/base-ts-wppconnect-mysql/package.json +5 -3
  175. package/dist/starters/apps/base-ts-wppconnect-postgres/Dockerfile +2 -1
  176. package/dist/starters/apps/base-ts-wppconnect-postgres/_gitignore +10 -0
  177. package/dist/starters/apps/base-ts-wppconnect-postgres/package.json +5 -3
  178. package/package.json +2 -3
@@ -1,121 +1,121 @@
1
- import { join } from 'path'
2
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
1
+ import { join } from 'path'
2
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
3
3
  import { MongoAdapter as Database } from '@builderbot/database-mongo'
4
4
  import { TwilioProvider as Provider } from '@builderbot/provider-twilio'
5
-
6
- const PORT = process.env.PORT ?? 3008
7
-
8
- const discordFlow = addKeyword('doc').addAnswer(
9
- ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
10
- '\n'
11
- ),
12
- { capture: true },
13
- async (ctx, { gotoFlow, flowDynamic }) => {
14
- if (ctx.body.toLocaleLowerCase().includes('yes')) {
15
- return gotoFlow(registerFlow)
16
- }
17
- await flowDynamic('Thanks!')
18
- return
19
- }
20
- )
21
-
22
- const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
23
- .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
24
- .addAnswer(
25
- [
26
- 'I share with you the following links of interest about the project',
27
- '👉 *doc* to view the documentation',
28
- ].join('\n'),
29
- { delay: 800, capture: true },
30
- async (ctx, { fallBack }) => {
31
- if (!ctx.body.toLocaleLowerCase().includes('doc')) {
32
- return fallBack('You should type *doc*')
33
- }
34
- return
35
- },
36
- [discordFlow]
37
- )
38
-
39
- const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
40
- .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
41
- await state.update({ name: ctx.body })
42
- })
43
- .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
44
- await state.update({ age: ctx.body })
45
- })
46
- .addAction(async (_, { flowDynamic, state }) => {
47
- await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
48
- })
49
-
50
- const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
51
- .addAnswer(`💪 I'll send you a lot files...`)
52
- .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
53
- .addAnswer(`Send video from URL`, {
54
- media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
55
- })
56
- .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
57
- .addAnswer(`Send file from URL`, {
58
- media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
59
- })
60
-
61
- const main = async () => {
62
- const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
5
+
6
+ const PORT = process.env.PORT ?? 3008
7
+
8
+ const discordFlow = addKeyword('doc').addAnswer(
9
+ ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
10
+ '\n'
11
+ ),
12
+ { capture: true },
13
+ async (ctx, { gotoFlow, flowDynamic }) => {
14
+ if (ctx.body.toLocaleLowerCase().includes('yes')) {
15
+ return gotoFlow(registerFlow)
16
+ }
17
+ await flowDynamic('Thanks!')
18
+ return
19
+ }
20
+ )
21
+
22
+ const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
23
+ .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
24
+ .addAnswer(
25
+ [
26
+ 'I share with you the following links of interest about the project',
27
+ '👉 *doc* to view the documentation',
28
+ ].join('\n'),
29
+ { delay: 800, capture: true },
30
+ async (ctx, { fallBack }) => {
31
+ if (!ctx.body.toLocaleLowerCase().includes('doc')) {
32
+ return fallBack('You should type *doc*')
33
+ }
34
+ return
35
+ },
36
+ [discordFlow]
37
+ )
38
+
39
+ const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
40
+ .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
41
+ await state.update({ name: ctx.body })
42
+ })
43
+ .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
44
+ await state.update({ age: ctx.body })
45
+ })
46
+ .addAction(async (_, { flowDynamic, state }) => {
47
+ await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
48
+ })
49
+
50
+ const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
51
+ .addAnswer(`💪 I'll send you a lot files...`)
52
+ .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
53
+ .addAnswer(`Send video from URL`, {
54
+ media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
55
+ })
56
+ .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
57
+ .addAnswer(`Send file from URL`, {
58
+ media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
59
+ })
60
+
61
+ const main = async () => {
62
+ const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
63
63
  const adapterProvider = createProvider(Provider, {
64
64
  accountSid: 'YOUR_ACCOUNT_SID',
65
65
  authToken: 'YOUR_ACCOUNT_TOKEN',
66
66
  vendorNumber: '+14100000000',
67
- })
67
+ })
68
68
  const adapterDB = new Database({
69
69
  dbUri: process.env.MONGO_DB_URI,
70
70
  dbName: process.env.MONGO_DB_NAME,
71
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()
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()
@@ -31,7 +31,8 @@ COPY --from=builder /app .
31
31
  RUN corepack enable && corepack prepare pnpm@latest --activate
32
32
  ENV PNPM_HOME=/usr/local/bin
33
33
 
34
- RUN npm cache clean --force && pnpm install --frozen-lockfile --production --ignore-scripts \
34
+ RUN npm cache clean --force && pnpm install --production --ignore-scripts \
35
+ && addgroup -g 1001 -S nodejs && adduser -S -u 1001 nodejs \
35
36
  && rm -rf $PNPM_HOME/.npm $PNPM_HOME/.node-gyp
36
37
 
37
38
  CMD ["npm", "start"]
@@ -0,0 +1,10 @@
1
+ dist/*
2
+ node_modules
3
+ .env
4
+
5
+ *_sessions
6
+ *tokens
7
+ .wwebjs*
8
+
9
+ *.log
10
+ *qr.png
@@ -6,7 +6,7 @@
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "lint": "eslint . --no-ignore",
9
- "dev": "node --no-warnings --watch-path=./src ./src/app.js",
9
+ "dev": "npm run lint && node --no-warnings --watch-path=./src ./src/app.js",
10
10
  "start": "node ./src/app.js"
11
11
  },
12
12
  "keywords": [],
@@ -1,123 +1,123 @@
1
- import { join } from 'path'
2
- import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
1
+ import { join } from 'path'
2
+ import { createBot, createProvider, createFlow, addKeyword, utils } from '@builderbot/bot'
3
3
  import { MysqlAdapter as Database } from '@builderbot/database-mysql'
4
4
  import { TwilioProvider as Provider } from '@builderbot/provider-twilio'
5
-
6
- const PORT = process.env.PORT ?? 3008
7
-
8
- const discordFlow = addKeyword('doc').addAnswer(
9
- ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
10
- '\n'
11
- ),
12
- { capture: true },
13
- async (ctx, { gotoFlow, flowDynamic }) => {
14
- if (ctx.body.toLocaleLowerCase().includes('yes')) {
15
- return gotoFlow(registerFlow)
16
- }
17
- await flowDynamic('Thanks!')
18
- return
19
- }
20
- )
21
-
22
- const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
23
- .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
24
- .addAnswer(
25
- [
26
- 'I share with you the following links of interest about the project',
27
- '👉 *doc* to view the documentation',
28
- ].join('\n'),
29
- { delay: 800, capture: true },
30
- async (ctx, { fallBack }) => {
31
- if (!ctx.body.toLocaleLowerCase().includes('doc')) {
32
- return fallBack('You should type *doc*')
33
- }
34
- return
35
- },
36
- [discordFlow]
37
- )
38
-
39
- const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
40
- .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
41
- await state.update({ name: ctx.body })
42
- })
43
- .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
44
- await state.update({ age: ctx.body })
45
- })
46
- .addAction(async (_, { flowDynamic, state }) => {
47
- await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
48
- })
49
-
50
- const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
51
- .addAnswer(`💪 I'll send you a lot files...`)
52
- .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
53
- .addAnswer(`Send video from URL`, {
54
- media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
55
- })
56
- .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
57
- .addAnswer(`Send file from URL`, {
58
- media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
59
- })
60
-
61
- const main = async () => {
62
- const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
5
+
6
+ const PORT = process.env.PORT ?? 3008
7
+
8
+ const discordFlow = addKeyword('doc').addAnswer(
9
+ ['You can see the documentation here', '📄 https://builderbot.app/docs \n', 'Do you want to continue? *yes*'].join(
10
+ '\n'
11
+ ),
12
+ { capture: true },
13
+ async (ctx, { gotoFlow, flowDynamic }) => {
14
+ if (ctx.body.toLocaleLowerCase().includes('yes')) {
15
+ return gotoFlow(registerFlow)
16
+ }
17
+ await flowDynamic('Thanks!')
18
+ return
19
+ }
20
+ )
21
+
22
+ const welcomeFlow = addKeyword(['hi', 'hello', 'hola'])
23
+ .addAnswer(`🙌 Hello welcome to this *Chatbot*`)
24
+ .addAnswer(
25
+ [
26
+ 'I share with you the following links of interest about the project',
27
+ '👉 *doc* to view the documentation',
28
+ ].join('\n'),
29
+ { delay: 800, capture: true },
30
+ async (ctx, { fallBack }) => {
31
+ if (!ctx.body.toLocaleLowerCase().includes('doc')) {
32
+ return fallBack('You should type *doc*')
33
+ }
34
+ return
35
+ },
36
+ [discordFlow]
37
+ )
38
+
39
+ const registerFlow = addKeyword(utils.setEvent('REGISTER_FLOW'))
40
+ .addAnswer(`What is your name?`, { capture: true }, async (ctx, { state }) => {
41
+ await state.update({ name: ctx.body })
42
+ })
43
+ .addAnswer('What is your age?', { capture: true }, async (ctx, { state }) => {
44
+ await state.update({ age: ctx.body })
45
+ })
46
+ .addAction(async (_, { flowDynamic, state }) => {
47
+ await flowDynamic(`${state.get('name')}, thanks for your information!: Your age: ${state.get('age')}`)
48
+ })
49
+
50
+ const fullSamplesFlow = addKeyword(['samples', utils.setEvent('SAMPLES')])
51
+ .addAnswer(`💪 I'll send you a lot files...`)
52
+ .addAnswer(`Send image from Local`, { media: join(process.cwd(), 'assets', 'sample.png') })
53
+ .addAnswer(`Send video from URL`, {
54
+ media: 'https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYTJ0ZGdjd2syeXAwMjQ4aWdkcW04OWlqcXI3Ynh1ODkwZ25zZWZ1dCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/LCohAb657pSdHv0Q5h/giphy.mp4',
55
+ })
56
+ .addAnswer(`Send audio from URL`, { media: 'https://cdn.freesound.org/previews/728/728142_11861866-lq.mp3' })
57
+ .addAnswer(`Send file from URL`, {
58
+ media: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
59
+ })
60
+
61
+ const main = async () => {
62
+ const adapterFlow = createFlow([welcomeFlow, registerFlow, fullSamplesFlow])
63
63
  const adapterProvider = createProvider(Provider, {
64
64
  accountSid: 'YOUR_ACCOUNT_SID',
65
65
  authToken: 'YOUR_ACCOUNT_TOKEN',
66
66
  vendorNumber: '+14100000000',
67
- })
67
+ })
68
68
  const adapterDB = new Database({
69
69
  host: process.env.MYSQL_DB_HOST,
70
70
  user: process.env.MYSQL_DB_USER,
71
71
  database: process.env.MYSQL_DB_NAME,
72
72
  password: process.env.MYSQL_DB_PASSWORD,
73
73
  })
74
-
75
- const { handleCtx, httpServer } = await createBot({
76
- flow: adapterFlow,
77
- provider: adapterProvider,
78
- database: adapterDB,
79
- })
80
-
81
- adapterProvider.server.post(
82
- '/v1/messages',
83
- handleCtx(async (bot, req, res) => {
84
- const { number, message, urlMedia } = req.body
85
- await bot.sendMessage(number, message, { media: urlMedia ?? null })
86
- return res.end('sended')
87
- })
88
- )
89
-
90
- adapterProvider.server.post(
91
- '/v1/register',
92
- handleCtx(async (bot, req, res) => {
93
- const { number, name } = req.body
94
- await bot.dispatch('REGISTER_FLOW', { from: number, name })
95
- return res.end('trigger')
96
- })
97
- )
98
-
99
- adapterProvider.server.post(
100
- '/v1/samples',
101
- handleCtx(async (bot, req, res) => {
102
- const { number, name } = req.body
103
- await bot.dispatch('SAMPLES', { from: number, name })
104
- return res.end('trigger')
105
- })
106
- )
107
-
108
- adapterProvider.server.post(
109
- '/v1/blacklist',
110
- handleCtx(async (bot, req, res) => {
111
- const { number, intent } = req.body
112
- if (intent === 'remove') bot.blacklist.remove(number)
113
- if (intent === 'add') bot.blacklist.add(number)
114
-
115
- res.writeHead(200, { 'Content-Type': 'application/json' })
116
- return res.end(JSON.stringify({ status: 'ok', number, intent }))
117
- })
118
- )
119
-
120
- httpServer(+PORT)
121
- }
122
-
123
- main()
74
+
75
+ const { handleCtx, httpServer } = await createBot({
76
+ flow: adapterFlow,
77
+ provider: adapterProvider,
78
+ database: adapterDB,
79
+ })
80
+
81
+ adapterProvider.server.post(
82
+ '/v1/messages',
83
+ handleCtx(async (bot, req, res) => {
84
+ const { number, message, urlMedia } = req.body
85
+ await bot.sendMessage(number, message, { media: urlMedia ?? null })
86
+ return res.end('sended')
87
+ })
88
+ )
89
+
90
+ adapterProvider.server.post(
91
+ '/v1/register',
92
+ handleCtx(async (bot, req, res) => {
93
+ const { number, name } = req.body
94
+ await bot.dispatch('REGISTER_FLOW', { from: number, name })
95
+ return res.end('trigger')
96
+ })
97
+ )
98
+
99
+ adapterProvider.server.post(
100
+ '/v1/samples',
101
+ handleCtx(async (bot, req, res) => {
102
+ const { number, name } = req.body
103
+ await bot.dispatch('SAMPLES', { from: number, name })
104
+ return res.end('trigger')
105
+ })
106
+ )
107
+
108
+ adapterProvider.server.post(
109
+ '/v1/blacklist',
110
+ handleCtx(async (bot, req, res) => {
111
+ const { number, intent } = req.body
112
+ if (intent === 'remove') bot.blacklist.remove(number)
113
+ if (intent === 'add') bot.blacklist.add(number)
114
+
115
+ res.writeHead(200, { 'Content-Type': 'application/json' })
116
+ return res.end(JSON.stringify({ status: 'ok', number, intent }))
117
+ })
118
+ )
119
+
120
+ httpServer(+PORT)
121
+ }
122
+
123
+ main()
@@ -31,7 +31,8 @@ COPY --from=builder /app .
31
31
  RUN corepack enable && corepack prepare pnpm@latest --activate
32
32
  ENV PNPM_HOME=/usr/local/bin
33
33
 
34
- RUN npm cache clean --force && pnpm install --frozen-lockfile --production --ignore-scripts \
34
+ RUN npm cache clean --force && pnpm install --production --ignore-scripts \
35
+ && addgroup -g 1001 -S nodejs && adduser -S -u 1001 nodejs \
35
36
  && rm -rf $PNPM_HOME/.npm $PNPM_HOME/.node-gyp
36
37
 
37
38
  CMD ["npm", "start"]
@@ -0,0 +1,10 @@
1
+ dist/*
2
+ node_modules
3
+ .env
4
+
5
+ *_sessions
6
+ *tokens
7
+ .wwebjs*
8
+
9
+ *.log
10
+ *qr.png
@@ -6,7 +6,7 @@
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "lint": "eslint . --no-ignore",
9
- "dev": "node --no-warnings --watch-path=./src ./src/app.js",
9
+ "dev": "npm run lint && node --no-warnings --watch-path=./src ./src/app.js",
10
10
  "start": "node ./src/app.js"
11
11
  },
12
12
  "keywords": [],