mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-18 03:29:15 +00:00
@@ -1,5 +1,6 @@
|
||||
const dialogflow = require('@google-cloud/dialogflow');
|
||||
const fs = require('fs')
|
||||
const {struct} = require('pb-util');
|
||||
|
||||
/**
|
||||
* Debes de tener tu archivo con el nombre "chatbot-account.json" en la raíz del proyecto
|
||||
@@ -32,6 +33,7 @@ const checkFileCredentials = () => {
|
||||
// Detect intent method
|
||||
const detectIntent = async (queryText, waPhoneNumber) => {
|
||||
let media = null;
|
||||
let actions = null;
|
||||
const sessionId = KEEP_DIALOG_FLOW ? 1 : waPhoneNumber;
|
||||
const sessionPath = sessionClient.projectAgentSessionPath(PROJECID, sessionId);
|
||||
const languageCode = process.env.LANGUAGE
|
||||
@@ -54,6 +56,7 @@ const detectIntent = async (queryText, waPhoneNumber) => {
|
||||
// console.log(singleResponse)
|
||||
if (parsePayload && parsePayload.payload) {
|
||||
const { fields } = parsePayload.payload
|
||||
actions = struct.decode(fields.actions.structValue) || null;
|
||||
media = fields.media.stringValue || null
|
||||
}
|
||||
const customPayload = parsePayload ? parsePayload['payload'] : null
|
||||
@@ -61,6 +64,7 @@ const detectIntent = async (queryText, waPhoneNumber) => {
|
||||
const parseData = {
|
||||
replyMessage: queryResult.fulfillmentText,
|
||||
media,
|
||||
actions,
|
||||
trigger: null
|
||||
}
|
||||
return parseData
|
||||
@@ -74,4 +78,4 @@ const getDataIa = (message = '', sessionId = '', cb = () => { }) => {
|
||||
|
||||
checkFileCredentials();
|
||||
|
||||
module.exports = { getDataIa }
|
||||
module.exports = { getDataIa }
|
||||
|
||||
8
app.js
8
app.js
@@ -57,8 +57,12 @@ const listenMessage = () => client.on('message', async msg => {
|
||||
|
||||
if (process.env.DATABASE === 'dialogflow') {
|
||||
if (!message.length) return;
|
||||
const response = await bothResponse(message, number);
|
||||
const response = await bothResponse(message.substring(256,-1), number);
|
||||
await sendMessage(client, from, response.replyMessage);
|
||||
if(response.actions){
|
||||
await sendMessageButton(client, from, null, response.actions);
|
||||
return
|
||||
}
|
||||
if (response.media) {
|
||||
sendMedia(client, from, response.media);
|
||||
}
|
||||
@@ -168,4 +172,4 @@ if (process.env.DATABASE === 'mysql') {
|
||||
server.listen(port, () => {
|
||||
console.log(`El server esta listo por el puerto ${port}`);
|
||||
})
|
||||
checkEnvFile();
|
||||
checkEnvFile();
|
||||
|
||||
@@ -8,11 +8,17 @@ const fs = require('fs')
|
||||
|
||||
|
||||
const saveMedia = (media) => {
|
||||
const extensionProcess = mimeDb[media.mimetype]
|
||||
const ext = extensionProcess.extensions[0]
|
||||
const extensionProcess = mimeDb[media.mimetype];
|
||||
let ext;
|
||||
if (!extensionProcess) {
|
||||
const fileType = media.mimetype.split('/');
|
||||
ext = fileType[1].split(';')[0];
|
||||
} else {
|
||||
ext = extensionProcess.extensions[0];
|
||||
}
|
||||
fs.writeFile(`./media/${Date.now()}.${ext}`, media.data, { encoding: 'base64' }, function (err) {
|
||||
console.log('** Archivo Media Guardado **');
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {saveMedia}
|
||||
module.exports = {saveMedia}
|
||||
|
||||
@@ -69,12 +69,14 @@ const sendMessage = async (client, number = null, text = null, trigger = null) =
|
||||
* @param {*} number
|
||||
*/
|
||||
const sendMessageButton = async (client, number = null, text = null, actionButtons) => {
|
||||
setTimeout(async () => {
|
||||
number = cleanNumber(number)
|
||||
const { title = null, message = null, footer = null, buttons = [] } = actionButtons;
|
||||
let button = new Buttons(message,[...buttons], title, footer);
|
||||
client.sendMessage(number, button);
|
||||
|
||||
await readChat(number, message, actionButtons)
|
||||
console.log(`⚡⚡⚡ Enviando mensajes....`);
|
||||
}, DELAY_TIME)
|
||||
}
|
||||
|
||||
|
||||
|
||||
11
package-lock.json
generated
11
package-lock.json
generated
@@ -18,6 +18,7 @@
|
||||
"mime-db": "^1.52.0",
|
||||
"moment": "^2.29.4",
|
||||
"mysql": "^2.18.1",
|
||||
"pb-util": "^1.0.3",
|
||||
"qr-image": "^3.2.0",
|
||||
"qrcode-terminal": "^0.12.0",
|
||||
"socket.io": "^4.5.1",
|
||||
@@ -3415,6 +3416,11 @@
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||
},
|
||||
"node_modules/pb-util": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/pb-util/-/pb-util-1.0.3.tgz",
|
||||
"integrity": "sha512-8+weUH2YEYnPf5sTpZ3q7Drq41tSEL8vDSU96/CzSvu2qrbspbjbbuKLjHocAQpmyMbICTcvovVl3cETwxwIkQ=="
|
||||
},
|
||||
"node_modules/peek-readable": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz",
|
||||
@@ -7965,6 +7971,11 @@
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
|
||||
},
|
||||
"pb-util": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/pb-util/-/pb-util-1.0.3.tgz",
|
||||
"integrity": "sha512-8+weUH2YEYnPf5sTpZ3q7Drq41tSEL8vDSU96/CzSvu2qrbspbjbbuKLjHocAQpmyMbICTcvovVl3cETwxwIkQ=="
|
||||
},
|
||||
"peek-readable": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz",
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"mime-db": "^1.52.0",
|
||||
"moment": "^2.29.4",
|
||||
"mysql": "^2.18.1",
|
||||
"pb-util": "^1.0.3",
|
||||
"qr-image": "^3.2.0",
|
||||
"qrcode-terminal": "^0.12.0",
|
||||
"socket.io": "^4.5.1",
|
||||
|
||||
Reference in New Issue
Block a user