diff --git a/packages/cli/interactive/index.js b/packages/cli/interactive/index.js index 7da0029..f7360ce 100644 --- a/packages/cli/interactive/index.js +++ b/packages/cli/interactive/index.js @@ -33,10 +33,10 @@ const startInteractive = async () => { message: '¿Cuál proveedor de whatsapp quieres utilizar?', choices: [ { title: 'whatsapp-web.js (gratis)', value: 'wweb' }, - { title: 'Twilio', value: 'twilio' }, { title: 'Venom (gratis)', value: 'venom' }, { title: 'Baileys (gratis)', value: 'bailey' }, - { title: 'API Oficial (Meta)', value: 'meta', disabled: true }, + { title: 'Twilio', value: 'twilio' }, + { title: 'API Oficial (Meta)', value: 'meta' }, ], max: 1, hint: 'Espacio para seleccionar', diff --git a/packages/provider/src/meta/index.js b/packages/provider/src/meta/index.js index e32ec51..f6b9ae6 100644 --- a/packages/provider/src/meta/index.js +++ b/packages/provider/src/meta/index.js @@ -32,7 +32,7 @@ class MetaProvider extends ProviderClass { } /** - * Mapeamos los eventos nativos de whatsapp-web.js a los que la clase Provider espera + * Mapeamos los eventos nativos a los que la clase Provider espera * para tener un standar de eventos * @returns */ @@ -53,7 +53,7 @@ class MetaProvider extends ProviderClass { }, ] - async sendMessageMeta(body) { + sendMessageMeta = async (body) => { try { const response = await axios.post( `${URL}/${this.numberId}/messages`, @@ -70,7 +70,7 @@ class MetaProvider extends ProviderClass { } } - async sendtext(number, message) { + sendtext = async (number, message) => { const body = { messaging_product: 'whatsapp', to: number, @@ -83,7 +83,7 @@ class MetaProvider extends ProviderClass { await this.sendMessageMeta(body) } - async sendMedia(number, message, mediaInput = null) { + sendMedia = async (number, _, mediaInput = null) => { if (!mediaInput) throw new Error(`MEDIA_INPUT_NULL_: ${mediaInput}`) const body = { messaging_product: 'whatsapp', diff --git a/starters/apps/base-meta-memory/README.md b/starters/apps/base-meta-memory/README.md new file mode 100644 index 0000000..f8e0e90 --- /dev/null +++ b/starters/apps/base-meta-memory/README.md @@ -0,0 +1,12 @@ +### BASE APP + +Este bot contiene un flujo basico en el cual una persona (cliente) escribe **"hola"** y el bot responde. +- Bienvenido a mi tienda +- Como puedo ayudarte? +- Tengo: Zapatos Bolsos etc.. + +------ +- [Discord](https://link.codigoencasa.com/DISCORD) +- [Twitter](https://twitter.com/leifermendez) +- [Youtube](https://www.youtube.com/watch?v=5lEMCeWEJ8o&list=PL_WGMLcL4jzWPhdhcUyhbFU6bC0oJd2BR) +- [Telegram](https://t.me/leifermendez) diff --git a/starters/apps/base-meta-memory/app.js b/starters/apps/base-meta-memory/app.js new file mode 100644 index 0000000..6f932f0 --- /dev/null +++ b/starters/apps/base-meta-memory/app.js @@ -0,0 +1,88 @@ +const { + createBot, + createProvider, + createFlow, + addKeyword, + addChild, +} = require('@bot-whatsapp/bot') + +const TwilioProvider = require('@bot-whatsapp/provider/twilio') +const MockAdapter = require('@bot-whatsapp/database/mock') + +/** + * Declarando flujo hijo + */ + +const flowBolsos2 = addKeyword(['bolsos2', '2']) + .addAnswer('🤯 *MUCHOS* bolsos ...') + .addAnswer('y mas bolsos... bla bla') + +const flowZapatos2 = addKeyword(['zapatos2', '2']) + .addAnswer('🤯 repito que tengo *MUCHOS* zapatos.') + .addAnswer('y algunas otras cosas.') + +const flowZapatos = addKeyword(['zapatos', 'ZAPATOS']) + .addAnswer('🤯 Veo que elegiste zapatos') + .addAnswer('Tengo muchos zapatos...bla bla') + .addAnswer( + ['Manda:', '*2*', 'o', '*zapatos2*', 'para mas información'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [...addChild(flowZapatos2)] + ) + +const flowBolsos = addKeyword(['bolsos', 'BOLSOS']) + .addAnswer('🙌 Veo que elegiste bolsos') + .addAnswer('Tengo muchos bolsos...bla bla') + .addAnswer( + ['Manda:', '*2*', 'o', '*bolsos2*', 'para mas información.'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + }, + [...addChild(flowBolsos2)] + ) + +/** + * Declarando flujo principal + */ +const flowPrincipal = addKeyword(['hola', 'ole', 'alo']) + .addAnswer('Hola, bienvenido a mi tienda') + .addAnswer('Como puedo ayudarte?') + .addAnswer(['Tengo:', 'Zapatos', 'Bolsos', 'etc..']) + .addAnswer( + ['Para continuar escribe:', '*Zapatos*', 'o', '*Bolsos*'], + { capture: true }, + (ctx) => { + console.log('Aqui puedes ver más info del usuario...') + console.log('Puedes enviar un mail, hook, etc..') + console.log(ctx) + console.log(ctx['_data']['notifyName']) + }, + [...addChild(flowBolsos), ...addChild(flowZapatos)] + ) + +const main = async () => { + const adapterDB = new MockAdapter() + const adapterFlow = createFlow([flowPrincipal]) + + const adapterProvider = createProvider(TwilioProvider, { + accountSid: 'YOUR_ACCOUNT_SID', + authToken: 'YOUR_ACCOUNT_TOKEN', + vendorNumber: '+14155238886', + }) + + createBot({ + flow: adapterFlow, + provider: adapterProvider, + database: adapterDB, + }) +} + +main() diff --git a/starters/apps/base-meta-memory/package.json b/starters/apps/base-meta-memory/package.json new file mode 100644 index 0000000..d0af65c --- /dev/null +++ b/starters/apps/base-meta-memory/package.json @@ -0,0 +1,22 @@ +{ + "name": "bot-whatsapp-base-meta-memory", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "pre-copy": "cd .. && yarn run copy.lib base-meta-memory", + "start": "node app.js" + }, + "keywords": [], + "dependencies": { + "body-parser": "^1.20.1", + "polka": "^0.5.2", + "twilio": "^3.83.4", + "@bot-whatsapp/bot": "latest", + "@bot-whatsapp/cli": "latest", + "@bot-whatsapp/database": "latest", + "@bot-whatsapp/provider": "latest" + }, + "author": "", + "license": "ISC" +}