This commit is contained in:
2023-02-25 06:50:48 -06:00
parent ef591431f3
commit f010a2a6e4
6 changed files with 368 additions and 344 deletions

2
.env
View File

@@ -13,4 +13,4 @@ KEEP_DIALOG_FLOW=false
MULTI_DEVICE=true
DIALOGFLOW_MEDIA_FOR_SLOT_FILLING=false
GDRIVE_FOLDER_ID=
PROVIDER=wwebjs
PROVIDER=baileys

View File

@@ -80,21 +80,14 @@ const createClient = () => {
});
}
const isValidNumber_wwebjs = (rawNumber) => {
const isValidNumber = (rawNumber) => {
const regexGroup = /\@g.us\b/gm;
const exist = rawNumber.match(regexGroup);
console.log("IsValidWawebJS", rawNumber, exist, !exist)
return !exist
}
const isValidNumber_baileys = (rawNumber) => {
const regexGroup = /\@g.us\b/gm;
const exist = rawNumber.match(regexGroup);
// console.log("IsValidBaileys", rawNumber, exist, !exist)
return !exist
}
const isValidNumber = eval(`isValidNumber_${provider}`)
// const isValidNumber = eval(`isValidNumber_${provider}`)
const cleanNumber = eval(`cleanNumber_${provider}`)
module.exports = {cleanNumber, saveExternalFile, generateImage, checkIsUrl, checkEnvFile, createClient, isValidNumber }

View File

@@ -1,7 +1,7 @@
const mimeDb = require('mime-db');
// const { uploadSingleFile } = require('../adapter/gdrive') // Para Goole Drive y DialogFlow
const mimeDb = require('mime-db')
const GDRIVE_FOLDER_ID = process.env.GDRIVE_FOLDER_ID || 'false'
if(GDRIVE_FOLDER_ID == true) { const { uploadSingleFile } = require('../adapter/gdrive') }
const fs = require('fs');
var fileName;
/**

View File

@@ -114,6 +114,33 @@ const sendMessageButton2 = async (client, number = null, text = null, actionButt
* @example await sendMessage("+XXXXXXXXXXX", "Your Text", "Your Footer", [{"buttonId": "id", "buttonText": {"displayText": "Button"}, "type": 1}])
*/
const sendMessageButton = async (client, number, text = null, actionButtons) => {
number = cleanNumber(number)
const { title = null, message = null, footer = null, buttons = [] } = actionButtons;
const templateButtons = buttons.map((btn, i) => ({
buttonId: `id-btn-${i}`,
buttonText: { displayText: btn.body },
type: 1,
}))
let mensaje2 = ""
if (title != null) { mensaje2 = "*" + title + "*\n\n" + message }
else { mensaje2 = message }
text = remplazos(mensaje2, client)
const buttonMessage = { text, footer, buttons: templateButtons, headerType: 1 }
console.log("sendMessageButton:", buttonMessage)
console.log(templateButtons)
return client.sendMessage(number, buttonMessage)
await readChat(number, message)
}
/**
*
* @param {string} number
* @param {string} text
* @param {string} footer
* @param {Array} buttons
* @example await sendMessage("+XXXXXXXXXXX", "Your Text", "Your Footer", [{"buttonId": "id", "buttonText": {"displayText": "Button"}, "type": 1}])
*/
const sendMessageButtonTemplate = async (client, number, text = null, actionButtons) => {
number = cleanNumber(number)
const { title = null, message = null, footer = null, buttons = [] } = actionButtons;
const templateButtons = buttons.map((btn, i) => ({

View File

@@ -4,19 +4,19 @@ const { sendMedia, sendMessage, sendMessageButton, sendMessageList, readChat } =
const { vamosA, traeUltimaVisita } = require('../adapter/index')
/**
* LAS FUNCIONES SE DECLARAN COMO UN OBJETO DENTRO DE MODULE.EXPORTS, DE LA SIGUIENTE MANERA:
*
* nombreFuncion1 : function nombreFuncion1(ctx) { // Aqui va el código de la funcion },
* nombreFuncion2 : function nombreFuncion2(ctx) { // Aqui va el código de la funcion }
*
* SE PUEDE USAR LA FUNCION traeVariablesFromClient(ctx) PARA OBTENER LAS VARIABLES from, body, name, hasMedia y step:
*
* const { from, body, name, hasMedia, step } = traeVariablesFromClient(ctx)
*
* O SE PUEDEN OBTENER DIRECTAMENTE DEL OBJETO ctx QUE RECIBE LA FUNCION:
*
* const from = ctx.theMsg.from
*/
* LAS FUNCIONES SE DECLARAN COMO UN OBJETO DENTRO DE MODULE.EXPORTS, DE LA SIGUIENTE MANERA:
*
* nombreFuncion1 : function nombreFuncion1(ctx) { // Aqui va el código de la funcion },
* nombreFuncion2 : function nombreFuncion2(ctx) { // Aqui va el código de la funcion }
*
* SE PUEDE USAR LA FUNCION traeVariablesFromClient(ctx) PARA OBTENER LAS VARIABLES from, body, name, hasMedia y step:
*
* const { from, body, name, hasMedia, step } = traeVariablesFromClient(ctx)
*
* O SE PUEDEN OBTENER DIRECTAMENTE DEL OBJETO ctx QUE RECIBE LA FUNCION:
*
* const from = ctx.theMsg.from
*/
module.exports = {
/**
@@ -327,5 +327,6 @@ module.exports = {
// return error
// });
}
}
// module.exports = new funcsClass()

View File

@@ -210,7 +210,7 @@ function traeVariablesFromMsg(msg){
function traeVariablesFromMsgBaileys(msg){
const { remoteJid } = msg.messages[0].key
const { pushName } = msg.messages[0]
let theBody = msg.messages[0].message?.conversation || msg.messages[0].message?.buttonsResponseMessage?.selectedDisplayText || msg.messages[0].message?.listResponseMessage?.title
let theBody = msg.messages[0].message?.conversation || msg.messages[0].message?.templateButtonReplyMessage?.selectedDisplayText || msg.messages[0].message?.buttonsResponseMessage?.selectedDisplayText || msg.messages[0].message?.listResponseMessage?.title
let from = remoteJid
let body = theBody
let name = pushName
@@ -227,15 +227,15 @@ function traeVariablesFromMsgWWebJS(msg){
}
/**
* Regresa las variables from, body, name, hasMedia y steps del objeto del cliente.
* Regresa las variables from, body, name, hasMedia, step y number del objeto del cliente.
* @param {*} client
* @returns from, body, name, hasMedia y step
* @returns from, body, name, hasMedia, step y number
*/
function traeVariablesFromClient(client){
// console.log(client)
const { body, from, name, hasMedia, step } = client.theMsg
const { pushName } = client.theMsg
return {"from":from, "body":body, "name":name, "hasMedia":hasMedia, "step":step}
const { body, from, name, hasMedia, step, number } = client.theMsg
// const { pushName } = client.theMsg
return {"from":from, "body":body, "name":name, "hasMedia":hasMedia, "step":step, "number":number}
}
/**
@@ -264,7 +264,7 @@ function agregaVars(client, msg, vars){
client.theMsg['from'] = from
client.theMsg['hasMedia'] = hasMedia
client.theMsg['name'] = name
client.theMsg['numero'] = soloNumero(from)
client.theMsg['number'] = soloNumero(from)
return client
}
@@ -500,10 +500,13 @@ for (var i=0; i < defaultDiacriticsRemovalMap .length; i++){
}
// "what?" version ... http://jsperf.com/diacritics/12
function removeDiacritics (str) {
return str.replace(/[^\u0000-\u007E]/g, function(a){
function removeDiacritics(str) {
if (str !== undefined) {
return str.replace(/[^\u0000-\u007E]/g, function (a) {
return diacriticsMap[a] || a;
});
}
else { return "" }
}
// var paragraph = "L'avantage d'utiliser le lorem ipsum est bien évidemment de pouvoir créer des maquettes ou de remplir un site internet de contenus qui présentent un rendu s'approchant un maximum du rendu final. \n Par défaut lorem ipsum ne contient pas d'accent ni de caractères spéciaux contrairement à la langue française qui en contient beaucoup. C'est sur ce critère que nous proposons une solution avec cet outil qui générant du faux-texte lorem ipsum mais avec en plus, des caractères spéciaux tel que les accents ou certains symboles utiles pour la langue française. \n L'utilisation du lorem standard est facile dutilisation mais lorsque le futur client utilisera votre logiciel il se peut que certains caractères spéciaux ou qu'un accent ne soient pas codés correctement. \n Cette page a pour but donc de pouvoir perdre le moins de temps possible et donc de tester directement si tous les encodages de base de donnée ou des sites sont les bons de plus il permet de récuperer un code css avec le texte formaté !";
// alert(removeDiacritics(paragraph));