diff --git a/adapter/diaglogflow.js b/adapter/diaglogflow.js index 1d0d9a8..9a4586c 100644 --- a/adapter/diaglogflow.js +++ b/adapter/diaglogflow.js @@ -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 } \ No newline at end of file +module.exports = { getDataIa } diff --git a/app.js b/app.js index 36580c1..77d773a 100644 --- a/app.js +++ b/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(); \ No newline at end of file +checkEnvFile(); diff --git a/controllers/save.js b/controllers/save.js index 92555e0..3adfda0 100644 --- a/controllers/save.js +++ b/controllers/save.js @@ -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} \ No newline at end of file +module.exports = {saveMedia} diff --git a/controllers/send.js b/controllers/send.js index d081381..5cda9ac 100644 --- a/controllers/send.js +++ b/controllers/send.js @@ -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) } diff --git a/package-lock.json b/package-lock.json index 589ad0f..af9632e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index 20a8d94..fcb275f 100644 --- a/package.json +++ b/package.json @@ -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",