mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-18 03:29:15 +00:00
se agregaron ejemplos de regExp
This commit is contained in:
39
README.md
39
README.md
@@ -1,18 +1,51 @@
|
||||
## Chatbot Whatsapp (OpenSource)
|
||||
#### Actualizado Diciembre 2022
|
||||
|
||||
Este proyecto es un fork del de [Leifer Mendez](https://github.com/leifermendez/bot-whatsapp), y tiene las siguientes modificaciones:
|
||||
Este proyecto es un clon del de [Leifer Mendez](https://github.com/leifermendez/bot-whatsapp) y tiene las siguientes modificaciones:
|
||||
|
||||
- Permite menus y submenus
|
||||
- Los submenus se logran agregando el parametro "pasoRequerido" en el **response.json**.
|
||||
```json
|
||||
"menu":{
|
||||
"replyMessage":[
|
||||
"%saludo%\nHoy es %dia_semana%.\n"
|
||||
],
|
||||
"media":null,
|
||||
"trigger":null
|
||||
},
|
||||
"submenu":{
|
||||
"replyMessage":[
|
||||
"Este submenu solo se dispara si **ANTES** se disparó la regla 'menu'"
|
||||
],
|
||||
"media":null,
|
||||
"trigger":null,
|
||||
"pasoRequerido":"menu"
|
||||
}
|
||||
```
|
||||
- Permite expresiones regulares en las palabras predefinidas en el initial.json.
|
||||
- Si queremos usar RegExp, en los "keywords" de **inital.json**, en lugar de un arreglo usamos un string (quitamos los [])
|
||||
y en él usamos "*" para significar cualquier texto y "|" para significar "OR", esto nos permite ser mas flexibles
|
||||
con los "keywords", por ejemplo, si queremos que el mensaje pueda decir:
|
||||
|
||||
"Hola quiero info del paquete" o "Requiero mas informacion"
|
||||
|
||||
ponemos ```*info*``` y la regla se va a disparar porque los dos contienen "info", o si queremos que se dispare con:
|
||||
"Quiero info del paquete numero 3" o "Me gusto el paquete de Angular"
|
||||
ponemos ```*paquete*3*|*paquete*angular*``` y la regla se dispara porque contiene "paquete" Y "3" -O- "paquete" Y "angular".
|
||||
```json
|
||||
{
|
||||
"keywords": "*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*",
|
||||
"key": "paq3"
|
||||
}
|
||||
```
|
||||
- Permite remplazos en el texto de los mensajes por ejemplo:
|
||||
- __%saludo%__ para que aparezca "Buenos días, tardes o noches" dependiendo de la hora.
|
||||
- __%dia_semana%__ para que aparezca "lunes, martes, miercoles, etc" dependiendo del día de la semana.
|
||||
- __%msjant_XX%__ para que aparezca el mensaje xx anterior, es decir, si quieres mostrar el texto de 2 mensajes anteriores se pone %msjant_2%.
|
||||
- etc, etc, se pueden agregar mas remplazos en la funcion "remplazos" en el archivo "adapter\index.js".
|
||||
- Las modificaciones están enfocadas al uso de los archivos __initial.json__ y __response.json__, yo no uso MySQL o DialogFlow, así que no sé si las modificaciones funcionen con esos modulos, en particular el __remplazo %msjant_x%__ depende de los archivos __JSON__ que se crean en el directorio "chats".
|
||||
- Tiene agregado el parche de botones y listas, así que funcionan sin problema.
|
||||
- Tiene los ultimos parches de DialogFlow (27-dic-2022) (When Dialogflow asks for an Image, then Upload it to Google Drive a then generate Shared Link)
|
||||
- Tiene agregado el parche de botones y listas, así que funcionan sin problema (las listas no funcionan si el bot esta ligado a un número que use Whatsapp Business).
|
||||
- Tiene los ultimos parches de DialogFlow (27-dic-2022) (When Dialogflow asks for an Image, then Upload it to Google Drive and then generate Shared Link)
|
||||
|
||||
## INICIA DOCUMENTACION DEL PROYECTO ORIGINAL
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ const get = (message, num) => new Promise((resolve, reject) => { //MOD by CHV -
|
||||
|
||||
"Hola quiero info del paquete" o "Requiero mas informacion"
|
||||
|
||||
ponemos "info" y la regla se va a disparar porque los dos contienen "info", o si queremos que se dispare con:
|
||||
ponemos "*info*" y la regla se va a disparar porque los dos contienen "info", o si queremos que se dispare con:
|
||||
|
||||
"Quiero info del paquete numero 3" o "Me gusto el paquete de Angular"
|
||||
|
||||
|
||||
@@ -51,6 +51,10 @@
|
||||
"keywords": ["5"],
|
||||
"key": "botones"
|
||||
},
|
||||
{
|
||||
"keywords": ["6"],
|
||||
"key": "botonespaq3"
|
||||
},
|
||||
{
|
||||
"keywords": ["cursos"],
|
||||
"key": "cursos"
|
||||
@@ -74,5 +78,9 @@
|
||||
{
|
||||
"keywords": ["platano"],
|
||||
"key": "platano"
|
||||
},
|
||||
{
|
||||
"keywords": "*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*",
|
||||
"key": "paq3"
|
||||
}
|
||||
]
|
||||
@@ -17,8 +17,9 @@
|
||||
"Pon *1* para mensajes anteriores.\n",
|
||||
"Pon *2* para ver remplazos.\n",
|
||||
"Pon *3* para pedir nombre (RegExp).\n",
|
||||
"Pon *4* para un ejemplo de listas.\n",
|
||||
"Pon *5* para un ejemplo de botones.\n"
|
||||
"Pon *4* para un ejemplo de listas y expresiones regulares.\n",
|
||||
"Pon *5* para un ejemplo de botones.\n",
|
||||
"Pon *6* para un ejemplo de botones y regExp.\n"
|
||||
],
|
||||
"media":null,
|
||||
"trigger":null
|
||||
@@ -118,14 +119,15 @@
|
||||
"media":null,
|
||||
"trigger":null,
|
||||
"actions":{
|
||||
"body":"Hola *%primer_nombre%*, aqui está nuestra lista de productos al 50% de descuento,\n\nAutomáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.",
|
||||
"buttonText":"Ver todos los productos",
|
||||
"body":"Hola *%primer_nombre%*, estos son ejemplos del uso de expresiones regulares, todas las opciones de la lista disparan la misma regla:\n\n'*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*'\n\nAutomáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.",
|
||||
"buttonText":"Ver los ejemplos de RegEx",
|
||||
"sections": [
|
||||
{"title":"Lista de productos",
|
||||
{"title":"Selecciona un mensaje:",
|
||||
"rows":[
|
||||
{"id": "manzana", "title": "manzana"},
|
||||
{"id": "mango", "title": "mango"},
|
||||
{"id": "platano", "title": "platano"}
|
||||
{"id": "paq3", "title": "Me gusta el paquete 3"},
|
||||
{"id": "paqA", "title": "Por favor mas info del paquete de Angular"},
|
||||
{"id": "pakA", "title": "Me gustó el pak de Angular"},
|
||||
{"id": "pak3", "title": "Estoy interesado en el pak 3"}
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -188,5 +190,30 @@
|
||||
"trigger":null,
|
||||
"pasoRequerido":"menu",
|
||||
"goto":"menu"
|
||||
},
|
||||
"paq3":{
|
||||
"replyMessage":["*%saludo% %primer_nombre%*, seleccionaste el *paquete 3 de Angular*\n\n","Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*."],
|
||||
"trigger":null,
|
||||
"pasoRequerido":"menu",
|
||||
"goto":"menu"
|
||||
},
|
||||
"botonespaq3":{
|
||||
"replyMessage":[
|
||||
"*%saludo%*, este es un ejemplo de botones y regExp"
|
||||
],
|
||||
"media":null,
|
||||
"trigger":null,
|
||||
"actions":{
|
||||
"title":"Hola %primer_nombre%, escoge un mensaje:",
|
||||
"message":"Estos son ejemplos del uso de expresiones regulares, todas las opciones de la lista disparan la misma regla:\n\n'*pak*3*|*pak*angular*|*paquete*3*|*paquete*angular*'\n\n",
|
||||
"footer":"Automáticamente el flujo se regresa al *menú*, asi que puedes poner nuevamente un número del 1 al 5 sin necesidad de volver a iniciar con */menu*.",
|
||||
"buttons":[
|
||||
{"body":"Me gusta el paquete 3"},
|
||||
{"body":"Mas info del paquete de Angular"},
|
||||
{"body":"Quiero mas información del pak 3"}
|
||||
]
|
||||
},
|
||||
"pasoRequerido":"menu",
|
||||
"goto":"menu"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user