From c793890c500f37fcd63474cfa86a7d517e3fbb95 Mon Sep 17 00:00:00 2001 From: leifermendez Date: Tue, 10 Jan 2023 18:16:18 +0000 Subject: [PATCH 1/9] =?UTF-8?q?ci(providers):=20=F0=9F=91=8D=20updated=20v?= =?UTF-8?q?ersions=20stable=20providers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From c913d5ee5c45da4f079b983a751e80dcdd38a868 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 10 Jan 2023 19:21:02 +0100 Subject: [PATCH 2/9] ci: :zap: change set commit --- .github/workflows/releases.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 1c2c263..77abeb9 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -27,6 +27,12 @@ jobs: - run: corepack enable + - name: Set User + run: git config --global user.email "leifer.contacto@gmail.com" && git config --global user.name "Leifer Mendez" + + - name: Set CHANGELOG + run: yarn release + - name: Install NPM Dependencies run: yarn install --immutable --network-timeout 300000 @@ -51,12 +57,6 @@ jobs: - name: Release @bot-whatsapp/portal run: yarn node ./scripts/release.js --name=portal --version="${{ steps.vars.outputs.tag }}" --token="${{ secrets.NPM_TOKEN }}" - - name: Set User - run: git config --global user.email "leifer.contacto@gmail.com" && git config --global user.name "Leifer Mendez" - - - name: Set CHANGELOG - run: yarn release - - name: Commit Versioning & Push changes uses: stefanzweifel/git-auto-commit-action@v4 with: From ac72c5e4e736ea8320747e439a92f13e53ea4c30 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 10 Jan 2023 19:25:17 +0100 Subject: [PATCH 3/9] ci: :zap: change set commit --- .github/workflows/releases.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 77abeb9..b2b0c96 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -1,10 +1,8 @@ name: 🚀⚡ Liberando versiones on: - push: - tags: - - 'pre-v*.*.*' - + release: + types: [created] jobs: ############ RELEASE ############ release: From 44dfe8ed1aeff0172fc994d6f1d4d2f39f9c874a Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 10 Jan 2023 19:28:00 +0100 Subject: [PATCH 4/9] ci(version): :zap: automatic - "${date}" updated versions every packages --- .github/workflows/releases.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index b2b0c96..0ab449d 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -28,12 +28,12 @@ jobs: - name: Set User run: git config --global user.email "leifer.contacto@gmail.com" && git config --global user.name "Leifer Mendez" - - name: Set CHANGELOG - run: yarn release - - name: Install NPM Dependencies run: yarn install --immutable --network-timeout 300000 + - name: Set CHANGELOG + run: yarn release + - name: Build Package run: yarn build:full From bfb76c87a104a411d35acab6f228d8f1c5d961b3 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 10 Jan 2023 19:42:35 +0100 Subject: [PATCH 5/9] ci: :zap: change set commit --- .github/workflows/releases.yml | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 0ab449d..d692ee3 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -34,29 +34,33 @@ jobs: - name: Set CHANGELOG run: yarn release + - name: get-npm-version + id: package-version + uses: martinbeentjes/npm-get-version-action@main + - name: Build Package run: yarn build:full - name: Release @bot-whatsapp/bot - run: yarn node ./scripts/release.js --name=bot --version="${{ steps.vars.outputs.tag }}" --token="${{ secrets.NPM_TOKEN }}" + run: yarn node ./scripts/release.js --name=bot --version="${{ steps.package-version.outputs.current-version}}" --token="${{ secrets.NPM_TOKEN }}" - name: Release @bot-whatsapp/cli - run: yarn node ./scripts/release.js --name=cli --version="${{ steps.vars.outputs.tag }}" --token="${{ secrets.NPM_TOKEN }}" + run: yarn node ./scripts/release.js --name=cli --version="${{ steps.package-version.outputs.current-version}}" --token="${{ secrets.NPM_TOKEN }}" - name: Release @bot-whatsapp/create-bot-whatsapp - run: yarn node ./scripts/release.js --name=create-bot-whatsapp --version="${{ steps.vars.outputs.tag }}" --token="${{ secrets.NPM_TOKEN }}" + run: yarn node ./scripts/release.js --name=create-bot-whatsapp --version="${{ steps.package-version.outputs.current-version}}" --token="${{ secrets.NPM_TOKEN }}" - name: Release @bot-whatsapp/database - run: yarn node ./scripts/release.js --name=database --version="${{ steps.vars.outputs.tag }}" --token="${{ secrets.NPM_TOKEN }}" + run: yarn node ./scripts/release.js --name=database --version="${{ steps.package-version.outputs.current-version}}" --token="${{ secrets.NPM_TOKEN }}" - name: Release @bot-whatsapp/provider - run: yarn node ./scripts/release.js --name=provider --version="${{ steps.vars.outputs.tag }}" --token="${{ secrets.NPM_TOKEN }}" + run: yarn node ./scripts/release.js --name=provider --version="${{ steps.package-version.outputs.current-version}}" --token="${{ secrets.NPM_TOKEN }}" - name: Release @bot-whatsapp/portal - run: yarn node ./scripts/release.js --name=portal --version="${{ steps.vars.outputs.tag }}" --token="${{ secrets.NPM_TOKEN }}" + run: yarn node ./scripts/release.js --name=portal --version="${{ steps.package-version.outputs.current-version}}" --token="${{ secrets.NPM_TOKEN }}" - - name: Commit Versioning & Push changes - uses: stefanzweifel/git-auto-commit-action@v4 + - name: Commit and push changes + uses: devops-infra/action-commit-push@master with: - commit_message: 'release(version): 🚀 - "${{ steps.vars.outputs.tag }}" release' - branch: dev + github_token: ${{ secrets.GITHUB_TOKEN }} + commit_message: 'release(version): 🚀 - "${{ steps.package-version.outputs.current-version}}" release' From 74a13013421bc12ba79301cd61aaf74e27fe6648 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 10 Jan 2023 19:45:17 +0100 Subject: [PATCH 6/9] chore(release): 0.1.7 --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e32af1a..2b71991 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.1.7](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.7-pre...v0.1.7) (2023-01-10) + ### [0.1.6](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.5...v0.1.6) (2023-01-10) diff --git a/package.json b/package.json index 58efaba..278145e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/root", - "version": "0.1.6", + "version": "0.1.7", "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "private": true, From 16e4575777cf5e581f89b8693d57f4ef15783860 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 10 Jan 2023 19:45:31 +0100 Subject: [PATCH 7/9] chore(release): 0.1.8 --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b71991..eae6a68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.1.8](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.7-pre...v0.1.8) (2023-01-10) + ### [0.1.7](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.7-pre...v0.1.7) (2023-01-10) ### [0.1.6](https://github.com/leifermendez/bot-whatsapp/compare/v0.1.5...v0.1.6) (2023-01-10) diff --git a/package.json b/package.json index 278145e..b15b835 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bot-whatsapp/root", - "version": "0.1.7", + "version": "0.1.8", "description": "Bot de wahtsapp open source para MVP o pequeños negocios", "main": "app.js", "private": true, From ecde23fdea65def209aa874af35a3f293e6b1a91 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Tue, 10 Jan 2023 22:46:08 +0100 Subject: [PATCH 8/9] fix: :fire: update qr package --- .github/workflows/netlify.yml | 1 - .github/workflows/releases.yml | 5 +- starters/apps/base-baileys-json/Dockerfile | 4 +- starters/apps/base-baileys-json/README.md | 20 +--- starters/apps/base-baileys-json/app.js | 96 +++++++------------ starters/apps/base-baileys-json/package.json | 3 +- .../apps/base-baileys-json/public/index.html | 80 ---------------- .../apps/base-baileys-json/server.http.js | 34 ------- starters/apps/base-baileys-memory/Dockerfile | 4 +- starters/apps/base-baileys-memory/README.md | 20 +--- starters/apps/base-baileys-memory/app.js | 96 +++++++------------ .../apps/base-baileys-memory/package.json | 3 +- .../base-baileys-memory/public/index.html | 80 ---------------- .../apps/base-baileys-memory/server.http.js | 34 ------- starters/apps/base-baileys-mongo/package.json | 2 +- .../apps/base-baileys-mongo/public/index.html | 80 ---------------- .../apps/base-baileys-mongo/server.http.js | 34 ------- starters/apps/base-baileys-mysql/package.json | 2 +- starters/apps/base-meta-json/package.json | 2 +- starters/apps/base-meta-memory/package.json | 2 +- starters/apps/base-meta-mongo/package.json | 2 +- starters/apps/base-meta-mysql/package.json | 2 +- starters/apps/base-twilio-json/package.json | 2 +- starters/apps/base-twilio-memory/package.json | 2 +- starters/apps/base-twilio-mongo/package.json | 2 +- starters/apps/base-twilio-mysql/package.json | 2 +- starters/apps/base-venom-json/package.json | 2 +- starters/apps/base-venom-memory/package.json | 2 +- starters/apps/base-venom-mongo/package.json | 2 +- starters/apps/base-venom-mysql/package.json | 2 +- starters/apps/base-wweb-json/package.json | 2 +- starters/apps/base-wweb-memory/package.json | 2 +- starters/apps/base-wweb-mongo/package.json | 2 +- starters/apps/base-wweb-mysql/package.json | 2 +- 34 files changed, 105 insertions(+), 525 deletions(-) delete mode 100644 starters/apps/base-baileys-json/public/index.html delete mode 100644 starters/apps/base-baileys-json/server.http.js delete mode 100644 starters/apps/base-baileys-memory/public/index.html delete mode 100644 starters/apps/base-baileys-memory/server.http.js delete mode 100644 starters/apps/base-baileys-mongo/public/index.html delete mode 100644 starters/apps/base-baileys-mongo/server.http.js diff --git a/.github/workflows/netlify.yml b/.github/workflows/netlify.yml index bdb51ab..76d5383 100644 --- a/.github/workflows/netlify.yml +++ b/.github/workflows/netlify.yml @@ -3,7 +3,6 @@ name: 📄 (PROD) Desplegando documentacion on: push: branches: - - main - next-release jobs: diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index d692ee3..df211d4 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -1,8 +1,9 @@ name: 🚀⚡ Liberando versiones on: - release: - types: [created] + push: + branches: + - production-release jobs: ############ RELEASE ############ release: diff --git a/starters/apps/base-baileys-json/Dockerfile b/starters/apps/base-baileys-json/Dockerfile index 14b07b2..7fb6d5d 100644 --- a/starters/apps/base-baileys-json/Dockerfile +++ b/starters/apps/base-baileys-json/Dockerfile @@ -1,7 +1,9 @@ -FROM node:lts-bullseye as bot +FROM node:18-bullseye as bot WORKDIR /app COPY package*.json ./ RUN npm i COPY . . +ARG RAILWAY_STATIC_URL +ARG PUBLIC_URL ARG PORT CMD ["npm", "start"] diff --git a/starters/apps/base-baileys-json/README.md b/starters/apps/base-baileys-json/README.md index a31dc9f..13d73f2 100644 --- a/starters/apps/base-baileys-json/README.md +++ b/starters/apps/base-baileys-json/README.md @@ -5,26 +5,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/)** +**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 documentación](https://bot-whatsapp.netlify.app/)** -```js -const main = async () => { - const adapterDB = new MockAdapter() - const adapterFlow = createFlow([flowPrincipal]) - - const adapterProvider = createProvider(BaileysProvider, { - accountSid: process.env.ACC_SID, - authToken: process.env.ACC_TOKEN, - vendorNumber: process.env.ACC_VENDOR, - }) - - createBot({ - flow: adapterFlow, - provider: adapterProvider, - database: adapterDB, - }) -} -``` ``` npm install diff --git a/starters/apps/base-baileys-json/app.js b/starters/apps/base-baileys-json/app.js index 99ecf65..67d4be6 100644 --- a/starters/apps/base-baileys-json/app.js +++ b/starters/apps/base-baileys-json/app.js @@ -5,86 +5,62 @@ const { addKeyword, } = require('@bot-whatsapp/bot') -require('./server.http') - +const QRPortalWeb = require('@bot-whatsapp/portal') const BaileysProvider = require('@bot-whatsapp/provider/baileys') const JsonFileAdapter = require('@bot-whatsapp/database/json') -/** - * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: - * - * Menu Principal - * - SubMenu 1 - * - Submenu 1.1 - * - Submenu 2 - * - Submenu 2.1 - * - * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. - */ +const flowDocs = addKeyword([ + 'doc', + 'documentacion', + 'documentación', +]).addAnswer([ + '📄 Aquí encontras las documentación recuerda que puedes mejorarla', + 'https://bot-whatsapp.netlify.app/', +]) -const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') - .addAnswer('y mas bolsos... bla bla') +const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer([ + '🙌 Aquí encontras un ejemplo rapido', + 'https://bot-whatsapp.netlify.app/docs/example/', +]) -const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') - .addAnswer('y algunas otras cosas.') +const flowGracias = addKeyword(['gracias', 'grac']).addAnswer([ + '🚀 Puedes aportar tu granito de arena a este proyecto', + '[*opencollective*] https://opencollective.com/bot-whatsapp', + '[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez', + '[*patreon*] https://www.patreon.com/leifermendez', +]) -const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') - .addAnswer('Tengo muchos zapatos...bla bla') - .addAnswer( - ['Manda:', '*(2) Zapatos2*', 'para mas información'], - { capture: true }, - (ctx) => { - console.log('Aqui puedes ver más info del usuario...') - console.log('Puedes enviar un mail, hook, etc..') - console.log(ctx) - }, - [flowZapatos2] - ) - -const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') - .addAnswer('Tengo muchos bolsos...bla bla') - .addAnswer( - ['Manda:', '*(2) Bolsos2*', 'para mas información.'], - { capture: true }, - (ctx) => { - console.log('Aqui puedes ver más info del usuario...') - console.log('Puedes enviar un mail, hook, etc..') - console.log(ctx) - }, - [flowBolsos2] - ) - -/** - * Declarando flujo principal - */ +const flowDiscord = addKeyword(['discord']).addAnswer([ + '🤪 Únete al discord', + 'https://link.codigoencasa.com/DISCORD', +]) const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer('🙌 Hola bienvenido a este *Chatbot*') .addAnswer( - ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], - { capture: true }, - (ctx) => { - console.log('Aqui puedes ver más info del usuario...') - console.log('Puedes enviar un mail, hook, etc..') - console.log(ctx) - }, - [flowBolsos, flowZapatos] + [ + 'te comparto los siguientes links de interes sobre el proyecto', + '👉 *doc* para ver la documentación', + '👉 *gracias* para ver la lista de videos', + '👉 *discord* unirte al discord', + ], + null, + null, + [flowDocs, flowGracias, flowTuto, flowDiscord] ) const main = async () => { const adapterDB = new JsonFileAdapter() const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(BaileysProvider) + createBot({ flow: adapterFlow, provider: adapterProvider, database: adapterDB, }) + + QRPortalWeb() } main() diff --git a/starters/apps/base-baileys-json/package.json b/starters/apps/base-baileys-json/package.json index 7693630..1ecbe56 100644 --- a/starters/apps/base-baileys-json/package.json +++ b/starters/apps/base-baileys-json/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-bailey-json", + "name": "base-bailey-json", "version": "1.0.0", "description": "", "main": "app.js", @@ -13,6 +13,7 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", + "@bot-whatsapp/portal": "latest", "@adiwajshing/baileys": "4.4.0", "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" diff --git a/starters/apps/base-baileys-json/public/index.html b/starters/apps/base-baileys-json/public/index.html deleted file mode 100644 index 202b50c..0000000 --- a/starters/apps/base-baileys-json/public/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - 🤖 Crear chatbot WhatsApp en minutos - - - -
- Escanear QR -
-

Whatsapp QR

-

- F5 para actualizar, el codigo se actualiza cada minuto.
- Con esta libreria, puedes 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, - nuestro Chatbot se integra fácilmente con otros sistemas y - herramientas que ya esté utilizando en su negocio. -

- -
-
- - diff --git a/starters/apps/base-baileys-json/server.http.js b/starters/apps/base-baileys-json/server.http.js deleted file mode 100644 index 217bd71..0000000 --- a/starters/apps/base-baileys-json/server.http.js +++ /dev/null @@ -1,34 +0,0 @@ -const http = require('http') -const fs = require('fs') -const path = require('path') - -const PORT = process.env.PORT || 3000 - -/** - * Levantar un HTTP Server - */ -http.createServer(function (req, res) { - var cssPath = undefined - var fileStream = undefined - var imagePath = undefined - - if (req.url === '/') { - fs.readFile('./public/index.html', 'UTF-8', function (err, html) { - res.writeHead(200, { 'Content-Type': 'text/html' }) - res.end(html) - }) - } else if (req.url.match('.css$')) { - cssPath = path.join(__dirname, 'public', req.url) - fileStream = fs.createReadStream(cssPath, 'UTF-8') - res.writeHead(200, { 'Content-Type': 'text/css' }) - fileStream.pipe(res) - } else if (req.url.match('.png$')) { - imagePath = path.join(__dirname, req.url) - fileStream = fs.createReadStream(imagePath) - res.writeHead(200, { 'Content-Type': 'image/png' }) - fileStream.pipe(res) - } else { - res.writeHead(404, { 'Content-Type': 'text/html' }) - res.end('No Page Found') - } -}).listen(PORT, () => console.log(`Escanear QR Code http://localhost:${PORT}`)) diff --git a/starters/apps/base-baileys-memory/Dockerfile b/starters/apps/base-baileys-memory/Dockerfile index 14b07b2..7fb6d5d 100644 --- a/starters/apps/base-baileys-memory/Dockerfile +++ b/starters/apps/base-baileys-memory/Dockerfile @@ -1,7 +1,9 @@ -FROM node:lts-bullseye as bot +FROM node:18-bullseye as bot WORKDIR /app COPY package*.json ./ RUN npm i COPY . . +ARG RAILWAY_STATIC_URL +ARG PUBLIC_URL ARG PORT CMD ["npm", "start"] diff --git a/starters/apps/base-baileys-memory/README.md b/starters/apps/base-baileys-memory/README.md index a31dc9f..13d73f2 100644 --- a/starters/apps/base-baileys-memory/README.md +++ b/starters/apps/base-baileys-memory/README.md @@ -5,26 +5,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/)** +**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 documentación](https://bot-whatsapp.netlify.app/)** -```js -const main = async () => { - const adapterDB = new MockAdapter() - const adapterFlow = createFlow([flowPrincipal]) - - const adapterProvider = createProvider(BaileysProvider, { - accountSid: process.env.ACC_SID, - authToken: process.env.ACC_TOKEN, - vendorNumber: process.env.ACC_VENDOR, - }) - - createBot({ - flow: adapterFlow, - provider: adapterProvider, - database: adapterDB, - }) -} -``` ``` npm install diff --git a/starters/apps/base-baileys-memory/app.js b/starters/apps/base-baileys-memory/app.js index 522bb6c..a8fbd00 100644 --- a/starters/apps/base-baileys-memory/app.js +++ b/starters/apps/base-baileys-memory/app.js @@ -5,86 +5,62 @@ const { addKeyword, } = require('@bot-whatsapp/bot') -require('./server.http') - +const QRPortalWeb = require('@bot-whatsapp/portal') const BaileysProvider = require('@bot-whatsapp/provider/baileys') const MockAdapter = require('@bot-whatsapp/database/mock') -/** - * Aqui declaramos los flujos hijos, los flujos se declaran de atras para adelante, es decir que si tienes un flujo de este tipo: - * - * Menu Principal - * - SubMenu 1 - * - Submenu 1.1 - * - Submenu 2 - * - Submenu 2.1 - * - * Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal. - */ +const flowDocs = addKeyword([ + 'doc', + 'documentacion', + 'documentación', +]).addAnswer([ + '📄 Aquí encontras las documentación recuerda que puedes mejorarla', + 'https://bot-whatsapp.netlify.app/', +]) -const flowBolsos2 = addKeyword(['bolsos2', '2']) - .addAnswer('🤯 *MUCHOS* bolsos ...') - .addAnswer('y mas bolsos... bla bla') +const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer([ + '🙌 Aquí encontras un ejemplo rapido', + 'https://bot-whatsapp.netlify.app/docs/example/', +]) -const flowZapatos2 = addKeyword(['zapatos2', '2']) - .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') - .addAnswer('y algunas otras cosas.') +const flowGracias = addKeyword(['gracias', 'grac']).addAnswer([ + '🚀 Puedes aportar tu granito de arena a este proyecto', + '[*opencollective*] https://opencollective.com/bot-whatsapp', + '[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez', + '[*patreon*] https://www.patreon.com/leifermendez', +]) -const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS']) - .addAnswer('🤯 Veo que elegiste zapatos') - .addAnswer('Tengo muchos zapatos...bla bla') - .addAnswer( - ['Manda:', '*(2) Zapatos2*', 'para mas información'], - { capture: true }, - (ctx) => { - console.log('Aqui puedes ver más info del usuario...') - console.log('Puedes enviar un mail, hook, etc..') - console.log(ctx) - }, - [flowZapatos2] - ) - -const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS']) - .addAnswer('🙌 Veo que elegiste bolsos') - .addAnswer('Tengo muchos bolsos...bla bla') - .addAnswer( - ['Manda:', '*(2) Bolsos2*', 'para mas información.'], - { capture: true }, - (ctx) => { - console.log('Aqui puedes ver más info del usuario...') - console.log('Puedes enviar un mail, hook, etc..') - console.log(ctx) - }, - [flowBolsos2] - ) - -/** - * Declarando flujo principal - */ +const flowDiscord = addKeyword(['discord']).addAnswer([ + '🤪 Únete al discord', + 'https://link.codigoencasa.com/DISCORD', +]) const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) - .addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?']) - .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...']) + .addAnswer('🙌 Hola bienvenido a este *Chatbot*') .addAnswer( - ['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'], - { capture: true }, - (ctx) => { - console.log('Aqui puedes ver más info del usuario...') - console.log('Puedes enviar un mail, hook, etc..') - console.log(ctx) - }, - [flowBolsos, flowZapatos] + [ + 'te comparto los siguientes links de interes sobre el proyecto', + '👉 *doc* para ver la documentación', + '👉 *gracias* para ver la lista de videos', + '👉 *discord* unirte al discord', + ], + null, + null, + [flowDocs, flowGracias, flowTuto, flowDiscord] ) const main = async () => { const adapterDB = new MockAdapter() const adapterFlow = createFlow([flowPrincipal]) const adapterProvider = createProvider(BaileysProvider) + createBot({ flow: adapterFlow, provider: adapterProvider, database: adapterDB, }) + + QRPortalWeb() } main() diff --git a/starters/apps/base-baileys-memory/package.json b/starters/apps/base-baileys-memory/package.json index 481e00a..2d01103 100644 --- a/starters/apps/base-baileys-memory/package.json +++ b/starters/apps/base-baileys-memory/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-bailey-memory", + "name": "base-bailey-memory", "version": "1.0.0", "description": "", "main": "app.js", @@ -13,6 +13,7 @@ "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", "@bot-whatsapp/provider": "latest", + "@bot-whatsapp/portal": "latest", "@adiwajshing/baileys": "4.4.0", "mime-types": "2.1.35", "wa-sticker-formatter": "4.3.2" diff --git a/starters/apps/base-baileys-memory/public/index.html b/starters/apps/base-baileys-memory/public/index.html deleted file mode 100644 index 202b50c..0000000 --- a/starters/apps/base-baileys-memory/public/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - 🤖 Crear chatbot WhatsApp en minutos - - - -
- Escanear QR -
-

Whatsapp QR

-

- F5 para actualizar, el codigo se actualiza cada minuto.
- Con esta libreria, puedes 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, - nuestro Chatbot se integra fácilmente con otros sistemas y - herramientas que ya esté utilizando en su negocio. -

- -
-
- - diff --git a/starters/apps/base-baileys-memory/server.http.js b/starters/apps/base-baileys-memory/server.http.js deleted file mode 100644 index 217bd71..0000000 --- a/starters/apps/base-baileys-memory/server.http.js +++ /dev/null @@ -1,34 +0,0 @@ -const http = require('http') -const fs = require('fs') -const path = require('path') - -const PORT = process.env.PORT || 3000 - -/** - * Levantar un HTTP Server - */ -http.createServer(function (req, res) { - var cssPath = undefined - var fileStream = undefined - var imagePath = undefined - - if (req.url === '/') { - fs.readFile('./public/index.html', 'UTF-8', function (err, html) { - res.writeHead(200, { 'Content-Type': 'text/html' }) - res.end(html) - }) - } else if (req.url.match('.css$')) { - cssPath = path.join(__dirname, 'public', req.url) - fileStream = fs.createReadStream(cssPath, 'UTF-8') - res.writeHead(200, { 'Content-Type': 'text/css' }) - fileStream.pipe(res) - } else if (req.url.match('.png$')) { - imagePath = path.join(__dirname, req.url) - fileStream = fs.createReadStream(imagePath) - res.writeHead(200, { 'Content-Type': 'image/png' }) - fileStream.pipe(res) - } else { - res.writeHead(404, { 'Content-Type': 'text/html' }) - res.end('No Page Found') - } -}).listen(PORT, () => console.log(`Escanear QR Code http://localhost:${PORT}`)) diff --git a/starters/apps/base-baileys-mongo/package.json b/starters/apps/base-baileys-mongo/package.json index d828a88..c2f8624 100644 --- a/starters/apps/base-baileys-mongo/package.json +++ b/starters/apps/base-baileys-mongo/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-bailey-mongo", + "name": "base-bailey-mongo", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-baileys-mongo/public/index.html b/starters/apps/base-baileys-mongo/public/index.html deleted file mode 100644 index 202b50c..0000000 --- a/starters/apps/base-baileys-mongo/public/index.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - 🤖 Crear chatbot WhatsApp en minutos - - - -
- Escanear QR -
-

Whatsapp QR

-

- F5 para actualizar, el codigo se actualiza cada minuto.
- Con esta libreria, puedes 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, - nuestro Chatbot se integra fácilmente con otros sistemas y - herramientas que ya esté utilizando en su negocio. -

- -
-
- - diff --git a/starters/apps/base-baileys-mongo/server.http.js b/starters/apps/base-baileys-mongo/server.http.js deleted file mode 100644 index 217bd71..0000000 --- a/starters/apps/base-baileys-mongo/server.http.js +++ /dev/null @@ -1,34 +0,0 @@ -const http = require('http') -const fs = require('fs') -const path = require('path') - -const PORT = process.env.PORT || 3000 - -/** - * Levantar un HTTP Server - */ -http.createServer(function (req, res) { - var cssPath = undefined - var fileStream = undefined - var imagePath = undefined - - if (req.url === '/') { - fs.readFile('./public/index.html', 'UTF-8', function (err, html) { - res.writeHead(200, { 'Content-Type': 'text/html' }) - res.end(html) - }) - } else if (req.url.match('.css$')) { - cssPath = path.join(__dirname, 'public', req.url) - fileStream = fs.createReadStream(cssPath, 'UTF-8') - res.writeHead(200, { 'Content-Type': 'text/css' }) - fileStream.pipe(res) - } else if (req.url.match('.png$')) { - imagePath = path.join(__dirname, req.url) - fileStream = fs.createReadStream(imagePath) - res.writeHead(200, { 'Content-Type': 'image/png' }) - fileStream.pipe(res) - } else { - res.writeHead(404, { 'Content-Type': 'text/html' }) - res.end('No Page Found') - } -}).listen(PORT, () => console.log(`Escanear QR Code http://localhost:${PORT}`)) diff --git a/starters/apps/base-baileys-mysql/package.json b/starters/apps/base-baileys-mysql/package.json index 4a7b07a..7ecb417 100644 --- a/starters/apps/base-baileys-mysql/package.json +++ b/starters/apps/base-baileys-mysql/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-bailey-mysql", + "name": "base-bailey-mysql", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-meta-json/package.json b/starters/apps/base-meta-json/package.json index 3243406..e034a53 100644 --- a/starters/apps/base-meta-json/package.json +++ b/starters/apps/base-meta-json/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-meta-json", + "name": "base-meta-json", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-meta-memory/package.json b/starters/apps/base-meta-memory/package.json index f86e916..51da345 100644 --- a/starters/apps/base-meta-memory/package.json +++ b/starters/apps/base-meta-memory/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-meta-memory", + "name": "base-meta-memory", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-meta-mongo/package.json b/starters/apps/base-meta-mongo/package.json index 94055f8..686ac63 100644 --- a/starters/apps/base-meta-mongo/package.json +++ b/starters/apps/base-meta-mongo/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-meta-mongo", + "name": "base-meta-mongo", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-meta-mysql/package.json b/starters/apps/base-meta-mysql/package.json index a9a71b0..45fe39e 100644 --- a/starters/apps/base-meta-mysql/package.json +++ b/starters/apps/base-meta-mysql/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-meta-mysql", + "name": "base-meta-mysql", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-twilio-json/package.json b/starters/apps/base-twilio-json/package.json index 4f5fdf4..00ab354 100644 --- a/starters/apps/base-twilio-json/package.json +++ b/starters/apps/base-twilio-json/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-twilio-json", + "name": "base-twilio-json", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-twilio-memory/package.json b/starters/apps/base-twilio-memory/package.json index e71ca5a..cdfaf65 100644 --- a/starters/apps/base-twilio-memory/package.json +++ b/starters/apps/base-twilio-memory/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-twilio-memory", + "name": "base-twilio-memory", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-twilio-mongo/package.json b/starters/apps/base-twilio-mongo/package.json index 4a8c063..69a05bb 100644 --- a/starters/apps/base-twilio-mongo/package.json +++ b/starters/apps/base-twilio-mongo/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-twilio-mongo", + "name": "base-twilio-mongo", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-twilio-mysql/package.json b/starters/apps/base-twilio-mysql/package.json index d4c4d37..453955b 100644 --- a/starters/apps/base-twilio-mysql/package.json +++ b/starters/apps/base-twilio-mysql/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-twilio-mysql", + "name": "base-twilio-mysql", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-venom-json/package.json b/starters/apps/base-venom-json/package.json index 88d7f6f..4d10427 100644 --- a/starters/apps/base-venom-json/package.json +++ b/starters/apps/base-venom-json/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-venom-json", + "name": "base-venom-json", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-venom-memory/package.json b/starters/apps/base-venom-memory/package.json index dfe5408..57af4e1 100644 --- a/starters/apps/base-venom-memory/package.json +++ b/starters/apps/base-venom-memory/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-venom-memory", + "name": "base-venom-memory", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-venom-mongo/package.json b/starters/apps/base-venom-mongo/package.json index 3b46613..0d84d2b 100644 --- a/starters/apps/base-venom-mongo/package.json +++ b/starters/apps/base-venom-mongo/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-venom-mongo", + "name": "base-venom-mongo", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-venom-mysql/package.json b/starters/apps/base-venom-mysql/package.json index 670fd00..a029a70 100644 --- a/starters/apps/base-venom-mysql/package.json +++ b/starters/apps/base-venom-mysql/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-venom-mysql", + "name": "base-venom-mysql", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-wweb-json/package.json b/starters/apps/base-wweb-json/package.json index 9abc893..d55dfeb 100644 --- a/starters/apps/base-wweb-json/package.json +++ b/starters/apps/base-wweb-json/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-wweb-json", + "name": "base-wweb-json", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-wweb-memory/package.json b/starters/apps/base-wweb-memory/package.json index fbf9400..d9c3ee0 100644 --- a/starters/apps/base-wweb-memory/package.json +++ b/starters/apps/base-wweb-memory/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-wweb-memory", + "name": "base-wweb-memory", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-wweb-mongo/package.json b/starters/apps/base-wweb-mongo/package.json index c58767a..e7ecebb 100644 --- a/starters/apps/base-wweb-mongo/package.json +++ b/starters/apps/base-wweb-mongo/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-wweb-mongo", + "name": "base-wweb-mongo", "version": "1.0.0", "description": "", "main": "app.js", diff --git a/starters/apps/base-wweb-mysql/package.json b/starters/apps/base-wweb-mysql/package.json index b1c44ff..3ab34d5 100644 --- a/starters/apps/base-wweb-mysql/package.json +++ b/starters/apps/base-wweb-mysql/package.json @@ -1,5 +1,5 @@ { - "name": "bot-whatsapp-base-wweb-mysql", + "name": "base-wweb-mysql", "version": "1.0.0", "description": "", "main": "app.js", From 2fc274725df91d5e83b4f3eab233c149b4715d05 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 11 Jan 2023 11:58:25 +0100 Subject: [PATCH 9/9] docs: :memo: meta added --- .../docs/src/routes/docs/providers/index.mdx | 6 + .../src/routes/docs/providers/meta/index.mdx | 158 +++++++++++++++++- 2 files changed, 163 insertions(+), 1 deletion(-) diff --git a/packages/docs/src/routes/docs/providers/index.mdx b/packages/docs/src/routes/docs/providers/index.mdx index 26241ec..0f6db6a 100644 --- a/packages/docs/src/routes/docs/providers/index.mdx +++ b/packages/docs/src/routes/docs/providers/index.mdx @@ -39,6 +39,12 @@ Estamos trabajando en el apartado de la documentación lo más claro posible. Pu --- +### Meta: Configuración + +Estamos trabajando en el apartado de la documentación lo más claro posible. Puedes encontrar los [detalles aquí](/docs/providers/meta) + +--- + + En el ejemplo de abajo puedes ver como una sugerencia de como puede ser + utilizando variables de entorno + + +```js +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) + + const adapterProvider = createProvider(MetaProvider, { + jwtToken: process.env.JWTOKEN, //EAARBW3ZBGU0UBAACDjtQIzI8JuEa............. + numberId: process.env.NUMBER_ID, //103975305758520 + verifyToken: process.env.VERIFY_TOKEN, //LO_QUE_SEA + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() +``` + +--- + +Luego de ejecutar el bot encontraras un mensaje en la consola similar al siguiente. +Donde podrás encontrar la URL para tu **webhook** + +```shell +$ npm start + +> bot-whatsapp-base-meta-memory@1.0.0 start +> node app.js + + +[meta]: Agregar esta url "WHEN A MESSAGE COMES IN" +[meta]: POST http://localhost:3000/webhook +[meta]: Más información en la documentacion +``` + +--- + +## ¿Ahora que hago? + +Podrás observar que el bot inicia un servicio HTTP (endpoint) que debe estar en un servidor en linea para que puedas conectarlo con Meta. + +--- + +### Opción 1: + +Puedes hacer pruebas en local atrevés de un servidor proxy tunnel.  +Descarga **[ngork](https://ngrok.com/download)** es una herramienta gratuita que nos ayudara con esto. + +![](https://i.imgur.com/TjjBtRh.png) + +--- + +Esto genera una URL en línea que podemos usar en la parte de **WebHook** de Meta + +![](https://i.imgur.com/NXHMDsf.png) + +--- + +![](https://i.imgur.com/tpov3D1.png) + +--- + +![](https://i.imgur.com/haRGylR.png) + +--- + +![](https://i.imgur.com/cMaIzeC.png) + +--- + +### Opción 2: + +Si ya tienes desplegado tu bot en un servidor tienes que obtener la IP publica o subdominio que te proporcionaron. **Ejemplo** si estas usando +[Railway](https://railway.app/) puedes ir a la seccion de ajustes y generar un subdominio. Ya tendriamos el **WebHook** +`https://base-twilio-memory-production.up.railway.app/twilio-hook` + +![](https://i.imgur.com/Yg2BYqB.png) + +--- + +![](https://i.imgur.com/dIbyEwp.png) + +--- + +