Merge pull request #1 from HKong31/main

DialogFlow buttons per Payload
This commit is contained in:
jzvi12
2022-12-08 16:09:11 -05:00
committed by GitHub
6 changed files with 35 additions and 7 deletions

View File

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

@@ -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();

View File

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

View File

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

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

View File

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