create-builderbot 0.0.1
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/bin/create.cjs +3 -0
- package/dist/index.cjs +15 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/package.json +34 -0
- package/starters/apps/base-baileys-json/.eslintrc.js +23 -0
- package/starters/apps/base-baileys-json/Dockerfile +9 -0
- package/starters/apps/base-baileys-json/README.md +22 -0
- package/starters/apps/base-baileys-json/app.js +79 -0
- package/starters/apps/base-baileys-json/package.json +29 -0
- package/starters/apps/base-baileys-memory/.eslintrc.js +23 -0
- package/starters/apps/base-baileys-memory/Dockerfile +9 -0
- package/starters/apps/base-baileys-memory/README.md +22 -0
- package/starters/apps/base-baileys-memory/app.js +79 -0
- package/starters/apps/base-baileys-memory/package.json +28 -0
- package/starters/apps/base-baileys-mongo/.eslintrc.js +23 -0
- package/starters/apps/base-baileys-mongo/Dockerfile +9 -0
- package/starters/apps/base-baileys-mongo/README.md +40 -0
- package/starters/apps/base-baileys-mongo/app.js +99 -0
- package/starters/apps/base-baileys-mongo/package.json +30 -0
- package/starters/apps/base-baileys-mysql/.eslintrc.js +23 -0
- package/starters/apps/base-baileys-mysql/Dockerfile +9 -0
- package/starters/apps/base-baileys-mysql/README.md +40 -0
- package/starters/apps/base-baileys-mysql/app.js +104 -0
- package/starters/apps/base-baileys-mysql/package.json +29 -0
- package/starters/apps/base-baileys-postgres/.eslintrc.js +23 -0
- package/starters/apps/base-baileys-postgres/Dockerfile +9 -0
- package/starters/apps/base-baileys-postgres/README.md +40 -0
- package/starters/apps/base-baileys-postgres/app.js +105 -0
- package/starters/apps/base-baileys-postgres/package.json +29 -0
- package/starters/apps/base-meta-json/.eslintrc.js +23 -0
- package/starters/apps/base-meta-json/Dockerfile +9 -0
- package/starters/apps/base-meta-json/README.md +40 -0
- package/starters/apps/base-meta-json/app.js +94 -0
- package/starters/apps/base-meta-json/package.json +29 -0
- package/starters/apps/base-meta-memory/.eslintrc.js +23 -0
- package/starters/apps/base-meta-memory/Dockerfile +9 -0
- package/starters/apps/base-meta-memory/README.md +40 -0
- package/starters/apps/base-meta-memory/app.js +94 -0
- package/starters/apps/base-meta-memory/package.json +29 -0
- package/starters/apps/base-meta-mongo/.eslintrc.js +23 -0
- package/starters/apps/base-meta-mongo/Dockerfile +9 -0
- package/starters/apps/base-meta-mongo/README.md +40 -0
- package/starters/apps/base-meta-mongo/app.js +105 -0
- package/starters/apps/base-meta-mongo/package.json +30 -0
- package/starters/apps/base-meta-mysql/.eslintrc.js +23 -0
- package/starters/apps/base-meta-mysql/Dockerfile +9 -0
- package/starters/apps/base-meta-mysql/README.md +40 -0
- package/starters/apps/base-meta-mysql/app.js +109 -0
- package/starters/apps/base-meta-mysql/package.json +30 -0
- package/starters/apps/base-meta-postgres/.eslintrc.js +23 -0
- package/starters/apps/base-meta-postgres/Dockerfile +9 -0
- package/starters/apps/base-meta-postgres/README.md +40 -0
- package/starters/apps/base-meta-postgres/app.js +110 -0
- package/starters/apps/base-meta-postgres/package.json +30 -0
- package/starters/apps/base-twilio-json/.eslintrc.js +23 -0
- package/starters/apps/base-twilio-json/Dockerfile +9 -0
- package/starters/apps/base-twilio-json/README.md +40 -0
- package/starters/apps/base-twilio-json/app.js +93 -0
- package/starters/apps/base-twilio-json/package.json +27 -0
- package/starters/apps/base-twilio-memory/.eslintrc.js +23 -0
- package/starters/apps/base-twilio-memory/Dockerfile +9 -0
- package/starters/apps/base-twilio-memory/README.md +40 -0
- package/starters/apps/base-twilio-memory/app.js +93 -0
- package/starters/apps/base-twilio-memory/package.json +27 -0
- package/starters/apps/base-twilio-mongo/.eslintrc.js +23 -0
- package/starters/apps/base-twilio-mongo/Dockerfile +9 -0
- package/starters/apps/base-twilio-mongo/README.md +40 -0
- package/starters/apps/base-twilio-mongo/app.js +102 -0
- package/starters/apps/base-twilio-mongo/package.json +29 -0
- package/starters/apps/base-twilio-mysql/.eslintrc.js +23 -0
- package/starters/apps/base-twilio-mysql/Dockerfile +9 -0
- package/starters/apps/base-twilio-mysql/README.md +40 -0
- package/starters/apps/base-twilio-mysql/app.js +107 -0
- package/starters/apps/base-twilio-mysql/package.json +28 -0
- package/starters/apps/base-twilio-postgres/.eslintrc.js +23 -0
- package/starters/apps/base-twilio-postgres/Dockerfile +9 -0
- package/starters/apps/base-twilio-postgres/README.md +40 -0
- package/starters/apps/base-twilio-postgres/app.js +105 -0
- package/starters/apps/base-twilio-postgres/package.json +28 -0
- package/starters/apps/base-venom-json/.eslintrc.js +23 -0
- package/starters/apps/base-venom-json/Dockerfile +24 -0
- package/starters/apps/base-venom-json/README.md +40 -0
- package/starters/apps/base-venom-json/app.js +89 -0
- package/starters/apps/base-venom-json/package.json +27 -0
- package/starters/apps/base-venom-memory/.eslintrc.js +23 -0
- package/starters/apps/base-venom-memory/Dockerfile +24 -0
- package/starters/apps/base-venom-memory/README.md +40 -0
- package/starters/apps/base-venom-memory/app.js +89 -0
- package/starters/apps/base-venom-memory/package.json +27 -0
- package/starters/apps/base-venom-mongo/.eslintrc.js +23 -0
- package/starters/apps/base-venom-mongo/Dockerfile +24 -0
- package/starters/apps/base-venom-mongo/README.md +40 -0
- package/starters/apps/base-venom-mongo/app.js +99 -0
- package/starters/apps/base-venom-mongo/package.json +28 -0
- package/starters/apps/base-venom-mysql/.eslintrc.js +23 -0
- package/starters/apps/base-venom-mysql/Dockerfile +24 -0
- package/starters/apps/base-venom-mysql/README.md +40 -0
- package/starters/apps/base-venom-mysql/app.js +105 -0
- package/starters/apps/base-venom-mysql/package.json +28 -0
- package/starters/apps/base-venom-postgres/.eslintrc.js +23 -0
- package/starters/apps/base-venom-postgres/Dockerfile +9 -0
- package/starters/apps/base-venom-postgres/README.md +40 -0
- package/starters/apps/base-venom-postgres/app.js +105 -0
- package/starters/apps/base-venom-postgres/package.json +28 -0
- package/starters/apps/base-wppconnect-json/.eslintrc.js +23 -0
- package/starters/apps/base-wppconnect-json/README.md +22 -0
- package/starters/apps/base-wppconnect-json/app.js +79 -0
- package/starters/apps/base-wppconnect-json/package.json +27 -0
- package/starters/apps/base-wppconnect-memory/.eslintrc.js +23 -0
- package/starters/apps/base-wppconnect-memory/README.md +22 -0
- package/starters/apps/base-wppconnect-memory/app.js +79 -0
- package/starters/apps/base-wppconnect-memory/package.json +27 -0
- package/starters/apps/base-wppconnect-mongo/.eslintrc.js +23 -0
- package/starters/apps/base-wppconnect-mongo/README.md +40 -0
- package/starters/apps/base-wppconnect-mongo/app.js +99 -0
- package/starters/apps/base-wppconnect-mongo/package.json +28 -0
- package/starters/apps/base-wppconnect-mysql/.eslintrc.js +23 -0
- package/starters/apps/base-wppconnect-mysql/README.md +40 -0
- package/starters/apps/base-wppconnect-mysql/app.js +104 -0
- package/starters/apps/base-wppconnect-mysql/package.json +28 -0
- package/starters/apps/base-wppconnect-postgres/.eslintrc.js +23 -0
- package/starters/apps/base-wppconnect-postgres/README.md +40 -0
- package/starters/apps/base-wppconnect-postgres/app.js +105 -0
- package/starters/apps/base-wppconnect-postgres/package.json +28 -0
- package/starters/apps/base-wweb-json/.eslintrc.js +23 -0
- package/starters/apps/base-wweb-json/Dockerfile +24 -0
- package/starters/apps/base-wweb-json/README.md +40 -0
- package/starters/apps/base-wweb-json/app.js +89 -0
- package/starters/apps/base-wweb-json/package.json +26 -0
- package/starters/apps/base-wweb-memory/.eslintrc.js +23 -0
- package/starters/apps/base-wweb-memory/Dockerfile +24 -0
- package/starters/apps/base-wweb-memory/README.md +40 -0
- package/starters/apps/base-wweb-memory/app.js +89 -0
- package/starters/apps/base-wweb-memory/package.json +26 -0
- package/starters/apps/base-wweb-mongo/.eslintrc.js +23 -0
- package/starters/apps/base-wweb-mongo/Dockerfile +24 -0
- package/starters/apps/base-wweb-mongo/README.md +40 -0
- package/starters/apps/base-wweb-mongo/app.js +99 -0
- package/starters/apps/base-wweb-mongo/package.json +28 -0
- package/starters/apps/base-wweb-mysql/.eslintrc.js +23 -0
- package/starters/apps/base-wweb-mysql/Dockerfile +24 -0
- package/starters/apps/base-wweb-mysql/README.md +40 -0
- package/starters/apps/base-wweb-mysql/app.js +105 -0
- package/starters/apps/base-wweb-mysql/package.json +27 -0
- package/starters/apps/base-wweb-postgres/.eslintrc.js +23 -0
- package/starters/apps/base-wweb-postgres/Dockerfile +24 -0
- package/starters/apps/base-wweb-postgres/README.md +40 -0
- package/starters/apps/base-wweb-postgres/app.js +105 -0
- package/starters/apps/base-wweb-postgres/package.json +27 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot')
|
|
2
|
+
|
|
3
|
+
const QRPortalWeb = require('@bot-whatsapp/portal')
|
|
4
|
+
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
|
5
|
+
const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo:
|
|
9
|
+
*
|
|
10
|
+
* Menu Principal
|
|
11
|
+
* - SubMenu 1
|
|
12
|
+
* - Submenu 1.1
|
|
13
|
+
* - Submenu 2
|
|
14
|
+
* - Submenu 2.1
|
|
15
|
+
*
|
|
16
|
+
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquà tenemos el flujo secundario'])
|
|
20
|
+
|
|
21
|
+
const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer(
|
|
22
|
+
[
|
|
23
|
+
'📄 Aquà encontras las documentación recuerda que puedes mejorarla',
|
|
24
|
+
'https://bot-whatsapp.netlify.app/',
|
|
25
|
+
'\n*2* Para siguiente paso.',
|
|
26
|
+
],
|
|
27
|
+
null,
|
|
28
|
+
null,
|
|
29
|
+
[flowSecundario]
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
|
33
|
+
[
|
|
34
|
+
'🙌 Aquà encontras un ejemplo rapido',
|
|
35
|
+
'https://bot-whatsapp.netlify.app/docs/example/',
|
|
36
|
+
'\n*2* Para siguiente paso.',
|
|
37
|
+
],
|
|
38
|
+
null,
|
|
39
|
+
null,
|
|
40
|
+
[flowSecundario]
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
|
44
|
+
[
|
|
45
|
+
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
|
46
|
+
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
|
47
|
+
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
|
48
|
+
'[*patreon*] https://www.patreon.com/leifermendez',
|
|
49
|
+
'\n*2* Para siguiente paso.',
|
|
50
|
+
],
|
|
51
|
+
null,
|
|
52
|
+
null,
|
|
53
|
+
[flowSecundario]
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
const flowDiscord = addKeyword(['discord']).addAnswer(
|
|
57
|
+
['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'],
|
|
58
|
+
null,
|
|
59
|
+
null,
|
|
60
|
+
[flowSecundario]
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
|
64
|
+
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
|
65
|
+
.addAnswer(
|
|
66
|
+
[
|
|
67
|
+
'te comparto los siguientes links de interes sobre el proyecto',
|
|
68
|
+
'👉 *doc* para ver la documentación',
|
|
69
|
+
'👉 *gracias* para ver la lista de videos',
|
|
70
|
+
'👉 *discord* unirte al discord',
|
|
71
|
+
],
|
|
72
|
+
null,
|
|
73
|
+
null,
|
|
74
|
+
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
const main = async () => {
|
|
78
|
+
const adapterDB = new JsonFileAdapter()
|
|
79
|
+
const adapterFlow = createFlow([flowPrincipal])
|
|
80
|
+
const adapterProvider = createProvider(WebWhatsappProvider)
|
|
81
|
+
createBot({
|
|
82
|
+
flow: adapterFlow,
|
|
83
|
+
provider: adapterProvider,
|
|
84
|
+
database: adapterDB,
|
|
85
|
+
})
|
|
86
|
+
QRPortalWeb()
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
main()
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "base-wweb-json",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "app.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"prestart": "npx eslint . --no-ignore",
|
|
8
|
+
"pre-copy": "cd .. && npm run copy.lib base-wweb-json",
|
|
9
|
+
"start": "node app.js"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [],
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@bot-whatsapp/bot": "latest",
|
|
14
|
+
"@bot-whatsapp/cli": "latest",
|
|
15
|
+
"@bot-whatsapp/database": "latest",
|
|
16
|
+
"@bot-whatsapp/provider": "latest",
|
|
17
|
+
"@bot-whatsapp/portal": "latest",
|
|
18
|
+
"whatsapp-web.js": "1.23.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"eslint-plugin-bot-whatsapp": "latest",
|
|
22
|
+
"eslint": "^8.52.0"
|
|
23
|
+
},
|
|
24
|
+
"author": "",
|
|
25
|
+
"license": "ISC"
|
|
26
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
env: {
|
|
3
|
+
browser: true,
|
|
4
|
+
commonjs: true,
|
|
5
|
+
es2021: true,
|
|
6
|
+
},
|
|
7
|
+
overrides: [
|
|
8
|
+
{
|
|
9
|
+
env: {
|
|
10
|
+
node: true,
|
|
11
|
+
},
|
|
12
|
+
files: ['.eslintrc.{js,cjs}'],
|
|
13
|
+
parserOptions: {
|
|
14
|
+
sourceType: 'script',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
parserOptions: {
|
|
19
|
+
ecmaVersion: 'latest',
|
|
20
|
+
},
|
|
21
|
+
plugins: ['bot-whatsapp'],
|
|
22
|
+
extends: ['plugin:bot-whatsapp/recommended'],
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
FROM node:18-alpine as node
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
# Installs latest Chromium (92) package.
|
|
5
|
+
RUN apk add --no-cache \
|
|
6
|
+
chromium \
|
|
7
|
+
nss \
|
|
8
|
+
freetype \
|
|
9
|
+
harfbuzz \
|
|
10
|
+
ca-certificates \
|
|
11
|
+
ttf-freefont \
|
|
12
|
+
nodejs \
|
|
13
|
+
yarn
|
|
14
|
+
|
|
15
|
+
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
|
|
16
|
+
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
|
|
17
|
+
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
|
18
|
+
|
|
19
|
+
# Puppeteer v10.0.0 works with Chromium 92.
|
|
20
|
+
COPY . .
|
|
21
|
+
RUN npm install puppeteer@10.0.0
|
|
22
|
+
RUN npm install
|
|
23
|
+
|
|
24
|
+
CMD ["npm", "start"]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
### CHATBOT Whatsapp (WebWhatsapp Provider)
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img width="300" src="https://i.imgur.com/Oauef6t.png">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
**Con esta librerÃa, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes. Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin lÃmites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)**
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
const main = async () => {
|
|
12
|
+
const adapterDB = new MockAdapter()
|
|
13
|
+
const adapterFlow = createFlow([flowPrincipal])
|
|
14
|
+
|
|
15
|
+
const adapterProvider = createProvider(WebWhatsappProvider, {
|
|
16
|
+
accountSid: process.env.ACC_SID,
|
|
17
|
+
authToken: process.env.ACC_TOKEN,
|
|
18
|
+
vendorNumber: process.env.ACC_VENDOR,
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
createBot({
|
|
22
|
+
flow: adapterFlow,
|
|
23
|
+
provider: adapterProvider,
|
|
24
|
+
database: adapterDB,
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
npm install
|
|
31
|
+
npm start
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
## Recursos
|
|
36
|
+
- [📄 Documentación](https://bot-whatsapp.netlify.app/)
|
|
37
|
+
- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1)
|
|
38
|
+
- [💻 Discord](https://link.codigoencasa.com/DISCORD)
|
|
39
|
+
- [👌 Twitter](https://twitter.com/leifermendez)
|
|
40
|
+
- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot')
|
|
2
|
+
|
|
3
|
+
const QRPortalWeb = require('@bot-whatsapp/portal')
|
|
4
|
+
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
|
5
|
+
const MockAdapter = require('@bot-whatsapp/database/mock')
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo:
|
|
9
|
+
*
|
|
10
|
+
* Menu Principal
|
|
11
|
+
* - SubMenu 1
|
|
12
|
+
* - Submenu 1.1
|
|
13
|
+
* - Submenu 2
|
|
14
|
+
* - Submenu 2.1
|
|
15
|
+
*
|
|
16
|
+
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquà tenemos el flujo secundario'])
|
|
20
|
+
|
|
21
|
+
const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer(
|
|
22
|
+
[
|
|
23
|
+
'📄 Aquà encontras las documentación recuerda que puedes mejorarla',
|
|
24
|
+
'https://bot-whatsapp.netlify.app/',
|
|
25
|
+
'\n*2* Para siguiente paso.',
|
|
26
|
+
],
|
|
27
|
+
null,
|
|
28
|
+
null,
|
|
29
|
+
[flowSecundario]
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
|
33
|
+
[
|
|
34
|
+
'🙌 Aquà encontras un ejemplo rapido',
|
|
35
|
+
'https://bot-whatsapp.netlify.app/docs/example/',
|
|
36
|
+
'\n*2* Para siguiente paso.',
|
|
37
|
+
],
|
|
38
|
+
null,
|
|
39
|
+
null,
|
|
40
|
+
[flowSecundario]
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
|
44
|
+
[
|
|
45
|
+
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
|
46
|
+
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
|
47
|
+
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
|
48
|
+
'[*patreon*] https://www.patreon.com/leifermendez',
|
|
49
|
+
'\n*2* Para siguiente paso.',
|
|
50
|
+
],
|
|
51
|
+
null,
|
|
52
|
+
null,
|
|
53
|
+
[flowSecundario]
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
const flowDiscord = addKeyword(['discord']).addAnswer(
|
|
57
|
+
['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'],
|
|
58
|
+
null,
|
|
59
|
+
null,
|
|
60
|
+
[flowSecundario]
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
|
64
|
+
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
|
65
|
+
.addAnswer(
|
|
66
|
+
[
|
|
67
|
+
'te comparto los siguientes links de interes sobre el proyecto',
|
|
68
|
+
'👉 *doc* para ver la documentación',
|
|
69
|
+
'👉 *gracias* para ver la lista de videos',
|
|
70
|
+
'👉 *discord* unirte al discord',
|
|
71
|
+
],
|
|
72
|
+
null,
|
|
73
|
+
null,
|
|
74
|
+
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
const main = async () => {
|
|
78
|
+
const adapterDB = new MockAdapter()
|
|
79
|
+
const adapterFlow = createFlow([flowPrincipal])
|
|
80
|
+
const adapterProvider = createProvider(WebWhatsappProvider)
|
|
81
|
+
createBot({
|
|
82
|
+
flow: adapterFlow,
|
|
83
|
+
provider: adapterProvider,
|
|
84
|
+
database: adapterDB,
|
|
85
|
+
})
|
|
86
|
+
QRPortalWeb()
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
main()
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "base-wweb-memory",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "app.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"prestart": "npx eslint . --no-ignore",
|
|
8
|
+
"pre-copy": "cd .. && npm run copy.lib base-wweb-memory",
|
|
9
|
+
"start": "node app.js"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [],
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@bot-whatsapp/bot": "latest",
|
|
14
|
+
"@bot-whatsapp/cli": "latest",
|
|
15
|
+
"@bot-whatsapp/database": "latest",
|
|
16
|
+
"@bot-whatsapp/provider": "latest",
|
|
17
|
+
"@bot-whatsapp/portal": "latest",
|
|
18
|
+
"whatsapp-web.js": "1.23.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"eslint-plugin-bot-whatsapp": "latest",
|
|
22
|
+
"eslint": "^8.52.0"
|
|
23
|
+
},
|
|
24
|
+
"author": "",
|
|
25
|
+
"license": "ISC"
|
|
26
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
env: {
|
|
3
|
+
browser: true,
|
|
4
|
+
commonjs: true,
|
|
5
|
+
es2021: true,
|
|
6
|
+
},
|
|
7
|
+
overrides: [
|
|
8
|
+
{
|
|
9
|
+
env: {
|
|
10
|
+
node: true,
|
|
11
|
+
},
|
|
12
|
+
files: ['.eslintrc.{js,cjs}'],
|
|
13
|
+
parserOptions: {
|
|
14
|
+
sourceType: 'script',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
parserOptions: {
|
|
19
|
+
ecmaVersion: 'latest',
|
|
20
|
+
},
|
|
21
|
+
plugins: ['bot-whatsapp'],
|
|
22
|
+
extends: ['plugin:bot-whatsapp/recommended'],
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
FROM node:18-alpine as node
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
# Installs latest Chromium (92) package.
|
|
5
|
+
RUN apk add --no-cache \
|
|
6
|
+
chromium \
|
|
7
|
+
nss \
|
|
8
|
+
freetype \
|
|
9
|
+
harfbuzz \
|
|
10
|
+
ca-certificates \
|
|
11
|
+
ttf-freefont \
|
|
12
|
+
nodejs \
|
|
13
|
+
yarn
|
|
14
|
+
|
|
15
|
+
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
|
|
16
|
+
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
|
|
17
|
+
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
|
18
|
+
|
|
19
|
+
# Puppeteer v10.0.0 works with Chromium 92.
|
|
20
|
+
COPY . .
|
|
21
|
+
RUN npm install puppeteer@10.0.0
|
|
22
|
+
RUN npm install
|
|
23
|
+
|
|
24
|
+
CMD ["npm", "start"]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
### CHATBOT Whatsapp (WebWhatsapp Provider)
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img width="300" src="https://i.imgur.com/Oauef6t.png">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
**Con esta librerÃa, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes. Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin lÃmites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)**
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
const main = async () => {
|
|
12
|
+
const adapterDB = new MockAdapter()
|
|
13
|
+
const adapterFlow = createFlow([flowPrincipal])
|
|
14
|
+
|
|
15
|
+
const adapterProvider = createProvider(WebWhatsappProvider, {
|
|
16
|
+
accountSid: process.env.ACC_SID,
|
|
17
|
+
authToken: process.env.ACC_TOKEN,
|
|
18
|
+
vendorNumber: process.env.ACC_VENDOR,
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
createBot({
|
|
22
|
+
flow: adapterFlow,
|
|
23
|
+
provider: adapterProvider,
|
|
24
|
+
database: adapterDB,
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
npm install
|
|
31
|
+
npm start
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
## Recursos
|
|
36
|
+
- [📄 Documentación](https://bot-whatsapp.netlify.app/)
|
|
37
|
+
- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1)
|
|
38
|
+
- [💻 Discord](https://link.codigoencasa.com/DISCORD)
|
|
39
|
+
- [👌 Twitter](https://twitter.com/leifermendez)
|
|
40
|
+
- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
const { createBot, createProvider, createFlow, addKeyword } = require('@bot-whatsapp/bot')
|
|
2
|
+
|
|
3
|
+
const QRPortalWeb = require('@bot-whatsapp/portal')
|
|
4
|
+
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
|
5
|
+
const MongoAdapter = require('@bot-whatsapp/database/mongo')
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Declaramos las conexiones de Mongo
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const MONGO_DB_URI = 'mongodb://0.0.0.0:27017'
|
|
12
|
+
const MONGO_DB_NAME = 'db_bot'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo:
|
|
16
|
+
*
|
|
17
|
+
* Menu Principal
|
|
18
|
+
* - SubMenu 1
|
|
19
|
+
* - Submenu 1.1
|
|
20
|
+
* - Submenu 2
|
|
21
|
+
* - Submenu 2.1
|
|
22
|
+
*
|
|
23
|
+
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer(['📄 Aquà tenemos el flujo secundario'])
|
|
27
|
+
|
|
28
|
+
const flowDocs = addKeyword(['doc', 'documentacion', 'documentación']).addAnswer(
|
|
29
|
+
[
|
|
30
|
+
'📄 Aquà encontras las documentación recuerda que puedes mejorarla',
|
|
31
|
+
'https://bot-whatsapp.netlify.app/',
|
|
32
|
+
'\n*2* Para siguiente paso.',
|
|
33
|
+
],
|
|
34
|
+
null,
|
|
35
|
+
null,
|
|
36
|
+
[flowSecundario]
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
|
40
|
+
[
|
|
41
|
+
'🙌 Aquà encontras un ejemplo rapido',
|
|
42
|
+
'https://bot-whatsapp.netlify.app/docs/example/',
|
|
43
|
+
'\n*2* Para siguiente paso.',
|
|
44
|
+
],
|
|
45
|
+
null,
|
|
46
|
+
null,
|
|
47
|
+
[flowSecundario]
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
|
51
|
+
[
|
|
52
|
+
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
|
53
|
+
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
|
54
|
+
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
|
55
|
+
'[*patreon*] https://www.patreon.com/leifermendez',
|
|
56
|
+
'\n*2* Para siguiente paso.',
|
|
57
|
+
],
|
|
58
|
+
null,
|
|
59
|
+
null,
|
|
60
|
+
[flowSecundario]
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
const flowDiscord = addKeyword(['discord']).addAnswer(
|
|
64
|
+
['🤪 Únete al discord', 'https://link.codigoencasa.com/DISCORD', '\n*2* Para siguiente paso.'],
|
|
65
|
+
null,
|
|
66
|
+
null,
|
|
67
|
+
[flowSecundario]
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
|
71
|
+
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
|
72
|
+
.addAnswer(
|
|
73
|
+
[
|
|
74
|
+
'te comparto los siguientes links de interes sobre el proyecto',
|
|
75
|
+
'👉 *doc* para ver la documentación',
|
|
76
|
+
'👉 *gracias* para ver la lista de videos',
|
|
77
|
+
'👉 *discord* unirte al discord',
|
|
78
|
+
],
|
|
79
|
+
null,
|
|
80
|
+
null,
|
|
81
|
+
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
const main = async () => {
|
|
85
|
+
const adapterDB = new MongoAdapter({
|
|
86
|
+
dbUri: MONGO_DB_URI,
|
|
87
|
+
dbName: MONGO_DB_NAME,
|
|
88
|
+
})
|
|
89
|
+
const adapterFlow = createFlow([flowPrincipal])
|
|
90
|
+
const adapterProvider = createProvider(WebWhatsappProvider)
|
|
91
|
+
createBot({
|
|
92
|
+
flow: adapterFlow,
|
|
93
|
+
provider: adapterProvider,
|
|
94
|
+
database: adapterDB,
|
|
95
|
+
})
|
|
96
|
+
QRPortalWeb()
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
main()
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "base-wweb-mongo",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "app.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"prestart": "npx eslint . --no-ignore",
|
|
8
|
+
"pre-copy": "cd .. && npm run copy.lib base-wweb-mongo",
|
|
9
|
+
"start": "node app.js"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [],
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"whatsapp-web.js": "1.23.0",
|
|
14
|
+
"@bot-whatsapp/bot": "latest",
|
|
15
|
+
"@bot-whatsapp/cli": "latest",
|
|
16
|
+
"@bot-whatsapp/database": "latest",
|
|
17
|
+
"@bot-whatsapp/provider": "latest",
|
|
18
|
+
"@bot-whatsapp/portal": "latest",
|
|
19
|
+
"mime-types": "^2.1.35",
|
|
20
|
+
"mongodb": "^4.12.1"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"eslint-plugin-bot-whatsapp": "latest",
|
|
24
|
+
"eslint": "^8.52.0"
|
|
25
|
+
},
|
|
26
|
+
"author": "",
|
|
27
|
+
"license": "ISC"
|
|
28
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
env: {
|
|
3
|
+
browser: true,
|
|
4
|
+
commonjs: true,
|
|
5
|
+
es2021: true,
|
|
6
|
+
},
|
|
7
|
+
overrides: [
|
|
8
|
+
{
|
|
9
|
+
env: {
|
|
10
|
+
node: true,
|
|
11
|
+
},
|
|
12
|
+
files: ['.eslintrc.{js,cjs}'],
|
|
13
|
+
parserOptions: {
|
|
14
|
+
sourceType: 'script',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
parserOptions: {
|
|
19
|
+
ecmaVersion: 'latest',
|
|
20
|
+
},
|
|
21
|
+
plugins: ['bot-whatsapp'],
|
|
22
|
+
extends: ['plugin:bot-whatsapp/recommended'],
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
FROM node:18-alpine as node
|
|
2
|
+
|
|
3
|
+
WORKDIR /app
|
|
4
|
+
# Installs latest Chromium (92) package.
|
|
5
|
+
RUN apk add --no-cache \
|
|
6
|
+
chromium \
|
|
7
|
+
nss \
|
|
8
|
+
freetype \
|
|
9
|
+
harfbuzz \
|
|
10
|
+
ca-certificates \
|
|
11
|
+
ttf-freefont \
|
|
12
|
+
nodejs \
|
|
13
|
+
yarn
|
|
14
|
+
|
|
15
|
+
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
|
|
16
|
+
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
|
|
17
|
+
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
|
|
18
|
+
|
|
19
|
+
# Puppeteer v10.0.0 works with Chromium 92.
|
|
20
|
+
COPY . .
|
|
21
|
+
RUN npm install puppeteer@10.0.0
|
|
22
|
+
RUN npm install
|
|
23
|
+
|
|
24
|
+
CMD ["npm", "start"]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
### CHATBOT Whatsapp (WebWhatsapp Provider)
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img width="300" src="https://i.imgur.com/Oauef6t.png">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
**Con esta librerÃa, puedes construir flujos automatizados de conversación de manera agnóstica al proveedor de WhatsApp,** configurar respuestas automatizadas para preguntas frecuentes, recibir y responder mensajes de manera automatizada, y hacer un seguimiento de las interacciones con los clientes. Además, puedes configurar fácilmente disparadores que te ayudaran a expandir las funcionalidades sin lÃmites. **[Ver más informacion](https://bot-whatsapp.netlify.app/)**
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
const main = async () => {
|
|
12
|
+
const adapterDB = new MockAdapter()
|
|
13
|
+
const adapterFlow = createFlow([flowPrincipal])
|
|
14
|
+
|
|
15
|
+
const adapterProvider = createProvider(WebWhatsappProvider, {
|
|
16
|
+
accountSid: process.env.ACC_SID,
|
|
17
|
+
authToken: process.env.ACC_TOKEN,
|
|
18
|
+
vendorNumber: process.env.ACC_VENDOR,
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
createBot({
|
|
22
|
+
flow: adapterFlow,
|
|
23
|
+
provider: adapterProvider,
|
|
24
|
+
database: adapterDB,
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
npm install
|
|
31
|
+
npm start
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
## Recursos
|
|
36
|
+
- [📄 Documentación](https://bot-whatsapp.netlify.app/)
|
|
37
|
+
- [🚀 Roadmap](https://github.com/orgs/codigoencasa/projects/1)
|
|
38
|
+
- [💻 Discord](https://link.codigoencasa.com/DISCORD)
|
|
39
|
+
- [👌 Twitter](https://twitter.com/leifermendez)
|
|
40
|
+
- [🎥 Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR)
|