se agregaron ejemplos de regExp

This commit is contained in:
2023-01-06 00:39:46 -06:00
parent 7b9906f18f
commit 1f92c0802a
4 changed files with 80 additions and 12 deletions

View File

@@ -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

View File

@@ -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"

View File

@@ -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"
}
]

View File

@@ -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"
}
}