mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 04:29:16 +00:00
Merge pull request #469 from cheveguerra/dev
[feat] Modificación de Starters para agregar el portal del código QR
This commit is contained in:
@@ -9,31 +9,59 @@ const QRPortalWeb = require('@bot-whatsapp/portal')
|
|||||||
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
|
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
|
||||||
const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
||||||
|
|
||||||
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
|
])
|
||||||
|
|
||||||
const flowDocs = addKeyword([
|
const flowDocs = addKeyword([
|
||||||
'doc',
|
'doc',
|
||||||
'documentacion',
|
'documentacion',
|
||||||
'documentación',
|
'documentación',
|
||||||
]).addAnswer([
|
]).addAnswer(
|
||||||
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
[
|
||||||
'https://bot-whatsapp.netlify.app/',
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
])
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer([
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
'🙌 Aquí encontras un ejemplo rapido',
|
[
|
||||||
'https://bot-whatsapp.netlify.app/docs/example/',
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
])
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer([
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
[
|
||||||
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
'[*patreon*] https://www.patreon.com/leifermendez',
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
])
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowDiscord = addKeyword(['discord']).addAnswer([
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
'🤪 Únete al discord',
|
[
|
||||||
'https://link.codigoencasa.com/DISCORD',
|
'🤪 Únete al discord',
|
||||||
])
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
|
|||||||
@@ -9,31 +9,59 @@ const QRPortalWeb = require('@bot-whatsapp/portal')
|
|||||||
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
|
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
|
||||||
const MockAdapter = require('@bot-whatsapp/database/mock')
|
const MockAdapter = require('@bot-whatsapp/database/mock')
|
||||||
|
|
||||||
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
|
])
|
||||||
|
|
||||||
const flowDocs = addKeyword([
|
const flowDocs = addKeyword([
|
||||||
'doc',
|
'doc',
|
||||||
'documentacion',
|
'documentacion',
|
||||||
'documentación',
|
'documentación',
|
||||||
]).addAnswer([
|
]).addAnswer(
|
||||||
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
[
|
||||||
'https://bot-whatsapp.netlify.app/',
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
])
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer([
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
'🙌 Aquí encontras un ejemplo rapido',
|
[
|
||||||
'https://bot-whatsapp.netlify.app/docs/example/',
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
])
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer([
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
[
|
||||||
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
'[*patreon*] https://www.patreon.com/leifermendez',
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
])
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowDiscord = addKeyword(['discord']).addAnswer([
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
'🤪 Únete al discord',
|
[
|
||||||
'https://link.codigoencasa.com/DISCORD',
|
'🤪 Únete al discord',
|
||||||
])
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
|
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
|
||||||
const MongoAdapter = require('@bot-whatsapp/database/mongo')
|
const MongoAdapter = require('@bot-whatsapp/database/mongo')
|
||||||
|
|
||||||
@@ -29,58 +28,72 @@ const MONGO_DB_NAME = 'db_bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -95,6 +108,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
|
const BaileysProvider = require('@bot-whatsapp/provider/baileys')
|
||||||
const MySQLAdapter = require('@bot-whatsapp/database/mysql')
|
const MySQLAdapter = require('@bot-whatsapp/database/mysql')
|
||||||
|
|
||||||
@@ -30,58 +29,72 @@ const MYSQL_DB_NAME = 'bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -98,6 +111,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
@@ -20,58 +20,72 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|||||||
@@ -20,58 +20,72 @@ const MockAdapter = require('@bot-whatsapp/database/mock')
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|||||||
@@ -27,58 +27,72 @@ const MONGO_DB_NAME = 'db_bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|||||||
@@ -28,58 +28,72 @@ const MYSQL_DB_NAME = 'bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|||||||
@@ -20,58 +20,72 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|||||||
@@ -20,58 +20,72 @@ const MockAdapter = require('@bot-whatsapp/database/mock')
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|||||||
@@ -27,58 +27,72 @@ const MONGO_DB_NAME = 'db_bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|||||||
@@ -29,58 +29,72 @@ const MYSQL_DB_NAME = 'bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const VenomProvider = require('@bot-whatsapp/provider/venom')
|
const VenomProvider = require('@bot-whatsapp/provider/venom')
|
||||||
const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
||||||
|
|
||||||
@@ -22,58 +21,72 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -85,6 +98,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const VenomProvider = require('@bot-whatsapp/provider/venom')
|
const VenomProvider = require('@bot-whatsapp/provider/venom')
|
||||||
const MockAdapter = require('@bot-whatsapp/database/mock')
|
const MockAdapter = require('@bot-whatsapp/database/mock')
|
||||||
|
|
||||||
@@ -22,58 +21,72 @@ const MockAdapter = require('@bot-whatsapp/database/mock')
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -85,6 +98,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const VenomProvider = require('@bot-whatsapp/provider/venom')
|
const VenomProvider = require('@bot-whatsapp/provider/venom')
|
||||||
const MongoAdapter = require('@bot-whatsapp/database/mongo')
|
const MongoAdapter = require('@bot-whatsapp/database/mongo')
|
||||||
|
|
||||||
@@ -29,58 +28,72 @@ const MONGO_DB_NAME = 'db_bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -95,6 +108,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const VenomProvider = require('@bot-whatsapp/provider/venom')
|
const VenomProvider = require('@bot-whatsapp/provider/venom')
|
||||||
const MySQLAdapter = require('@bot-whatsapp/database/mysql')
|
const MySQLAdapter = require('@bot-whatsapp/database/mysql')
|
||||||
|
|
||||||
@@ -31,58 +30,72 @@ const MYSQL_DB_NAME = 'bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -99,6 +112,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
||||||
const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
||||||
|
|
||||||
@@ -22,58 +21,72 @@ const JsonFileAdapter = require('@bot-whatsapp/database/json')
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -85,6 +98,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
||||||
const MockAdapter = require('@bot-whatsapp/database/mock')
|
const MockAdapter = require('@bot-whatsapp/database/mock')
|
||||||
|
|
||||||
@@ -22,58 +21,72 @@ const MockAdapter = require('@bot-whatsapp/database/mock')
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -85,6 +98,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
@@ -5,11 +5,10 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
||||||
const MongoAdapter = require('@bot-whatsapp/database/mongo')
|
const MongoAdapter = require('@bot-whatsapp/database/mongo')
|
||||||
|
|
||||||
require('./server.http')
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Declaramos las conexiones de Mongo
|
* Declaramos las conexiones de Mongo
|
||||||
*/
|
*/
|
||||||
@@ -29,58 +28,72 @@ const MONGO_DB_NAME = 'db_bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -95,6 +108,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
@@ -5,8 +5,7 @@ const {
|
|||||||
addKeyword,
|
addKeyword,
|
||||||
} = require('@bot-whatsapp/bot')
|
} = require('@bot-whatsapp/bot')
|
||||||
|
|
||||||
require('./server.http')
|
const QRPortalWeb = require('@bot-whatsapp/portal')
|
||||||
|
|
||||||
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
const WebWhatsappProvider = require('@bot-whatsapp/provider/web-whatsapp')
|
||||||
const MySQLAdapter = require('@bot-whatsapp/database/mysql')
|
const MySQLAdapter = require('@bot-whatsapp/database/mysql')
|
||||||
|
|
||||||
@@ -31,58 +30,72 @@ const MYSQL_DB_NAME = 'bot'
|
|||||||
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
* Primero declaras los submenus 1.1 y 2.1, luego el 1 y 2 y al final el principal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const flowBolsos2 = addKeyword(['bolsos2', '2'])
|
const flowSecundario = addKeyword(['2', 'siguiente']).addAnswer([
|
||||||
.addAnswer('🤯 *MUCHOS* bolsos ...')
|
'📄 Aquí tenemos el flujo secundario',
|
||||||
.addAnswer('y mas bolsos... bla bla')
|
])
|
||||||
|
|
||||||
const flowZapatos2 = addKeyword(['zapatos2', '2'])
|
const flowDocs = addKeyword([
|
||||||
.addAnswer('🤯 repito que tengo *MUCHOS* zapatos.')
|
'doc',
|
||||||
.addAnswer('y algunas otras cosas.')
|
'documentacion',
|
||||||
|
'documentación',
|
||||||
|
]).addAnswer(
|
||||||
|
[
|
||||||
|
'📄 Aquí encontras las documentación recuerda que puedes mejorarla',
|
||||||
|
'https://bot-whatsapp.netlify.app/',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowZapatos = addKeyword(['1', 'zapatos', 'ZAPATOS'])
|
const flowTuto = addKeyword(['tutorial', 'tuto']).addAnswer(
|
||||||
.addAnswer('🤯 Veo que elegiste zapatos')
|
[
|
||||||
.addAnswer('Tengo muchos zapatos...bla bla')
|
'🙌 Aquí encontras un ejemplo rapido',
|
||||||
.addAnswer(
|
'https://bot-whatsapp.netlify.app/docs/example/',
|
||||||
['Manda:', '*(2) Zapatos2*', 'para mas información'],
|
'\n*2* Para siguiente paso.',
|
||||||
{ capture: true },
|
],
|
||||||
(ctx) => {
|
null,
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
null,
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
[flowSecundario]
|
||||||
console.log(ctx)
|
)
|
||||||
},
|
|
||||||
[flowZapatos2]
|
|
||||||
)
|
|
||||||
|
|
||||||
const flowBolsos = addKeyword(['2', 'bolsos', 'BOLSOS'])
|
const flowGracias = addKeyword(['gracias', 'grac']).addAnswer(
|
||||||
.addAnswer('🙌 Veo que elegiste bolsos')
|
[
|
||||||
.addAnswer('Tengo muchos bolsos...bla bla')
|
'🚀 Puedes aportar tu granito de arena a este proyecto',
|
||||||
.addAnswer(
|
'[*opencollective*] https://opencollective.com/bot-whatsapp',
|
||||||
['Manda:', '*(2) Bolsos2*', 'para mas información.'],
|
'[*buymeacoffee*] https://www.buymeacoffee.com/leifermendez',
|
||||||
{ capture: true },
|
'[*patreon*] https://www.patreon.com/leifermendez',
|
||||||
(ctx) => {
|
'\n*2* Para siguiente paso.',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
],
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
null,
|
||||||
console.log(ctx)
|
null,
|
||||||
},
|
[flowSecundario]
|
||||||
[flowBolsos2]
|
)
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
const flowDiscord = addKeyword(['discord']).addAnswer(
|
||||||
* Declarando flujo principal
|
[
|
||||||
*/
|
'🤪 Únete al discord',
|
||||||
|
'https://link.codigoencasa.com/DISCORD',
|
||||||
|
'\n*2* Para siguiente paso.',
|
||||||
|
],
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
[flowSecundario]
|
||||||
|
)
|
||||||
|
|
||||||
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
const flowPrincipal = addKeyword(['hola', 'ole', 'alo'])
|
||||||
.addAnswer(['Hola, bienvenido a mi tienda', '¿Como puedo ayudarte?'])
|
.addAnswer('🙌 Hola bienvenido a este *Chatbot*')
|
||||||
.addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc ...'])
|
|
||||||
.addAnswer(
|
.addAnswer(
|
||||||
['Para continuar escribe:', '*(1) Zapatos*', '*(2) Bolsos*'],
|
[
|
||||||
{ capture: true },
|
'te comparto los siguientes links de interes sobre el proyecto',
|
||||||
(ctx) => {
|
'👉 *doc* para ver la documentación',
|
||||||
console.log('Aqui puedes ver más info del usuario...')
|
'👉 *gracias* para ver la lista de videos',
|
||||||
console.log('Puedes enviar un mail, hook, etc..')
|
'👉 *discord* unirte al discord',
|
||||||
console.log(ctx)
|
],
|
||||||
},
|
null,
|
||||||
[flowBolsos, flowZapatos]
|
null,
|
||||||
|
[flowDocs, flowGracias, flowTuto, flowDiscord]
|
||||||
)
|
)
|
||||||
|
|
||||||
const main = async () => {
|
const main = async () => {
|
||||||
@@ -99,6 +112,7 @@ const main = async () => {
|
|||||||
provider: adapterProvider,
|
provider: adapterProvider,
|
||||||
database: adapterDB,
|
database: adapterDB,
|
||||||
})
|
})
|
||||||
|
QRPortalWeb()
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -1,80 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="es">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="preconnect" href="https://rsms.me/" />
|
|
||||||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
|
||||||
<title>🤖 Crear chatbot WhatsApp en minutos</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
justify-content: center;
|
|
||||||
align-self: center;
|
|
||||||
align-items: center;
|
|
||||||
font-family: 'Inter', sans-serif;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div
|
|
||||||
style="
|
|
||||||
display: flex;
|
|
||||||
gap: 2rem;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
style="
|
|
||||||
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px,
|
|
||||||
rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
||||||
border-radius: 15px;
|
|
||||||
object-fit: contain;
|
|
||||||
"
|
|
||||||
width="400"
|
|
||||||
height="400"
|
|
||||||
src="qr.png"
|
|
||||||
alt="Escanear QR"
|
|
||||||
/>
|
|
||||||
<div style="width: 400px; display: grid; gap: 1rem">
|
|
||||||
<h1 style="margin: 0">Whatsapp QR</h1>
|
|
||||||
<p>
|
|
||||||
<strong
|
|
||||||
>F5 para actualizar, el codigo se actualiza cada minuto. </strong
|
|
||||||
><br />
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
target="_blank"
|
|
||||||
style="
|
|
||||||
background: white;
|
|
||||||
box-shadow: rgb(0 0 0 / 16%) 0px 10px 36px 0px,
|
|
||||||
rgb(0 0 0 / 6%) 0px 0px 0px 1px;
|
|
||||||
padding: 10px;
|
|
||||||
border-radius: 5px;
|
|
||||||
font-weight: 600;
|
|
||||||
text-decoration: none;
|
|
||||||
color: #1a1a1a;
|
|
||||||
border: solid 1px #afafaf;
|
|
||||||
"
|
|
||||||
href="https://bot-whatsapp.netlify.app/"
|
|
||||||
>Ver documentación</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -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}`))
|
|
||||||
Reference in New Issue
Block a user