Compare commits
3 Commits
6762c8041d
...
6450fb6ea7
Author | SHA1 | Date |
---|---|---|
adriano | 6450fb6ea7 | |
adriano | d59d2bf395 | |
adriano | e44efb45d9 |
|
@ -257,10 +257,10 @@ export const contacsBulkInsertOnQueue = async (
|
|||
};
|
||||
|
||||
function addStartPhoneNumber(phoneNumber: string) {
|
||||
const regex = /^55/;
|
||||
const regex = /^57/;
|
||||
|
||||
if (!regex.test(phoneNumber)) {
|
||||
phoneNumber = "55" + phoneNumber;
|
||||
phoneNumber = "57" + phoneNumber;
|
||||
}
|
||||
|
||||
return phoneNumber;
|
||||
|
|
|
@ -51,10 +51,10 @@ const schedule = async () => {
|
|||
} catch (error) {
|
||||
console.log("error on schedule: ", error);
|
||||
} finally {
|
||||
timer = setInterval(schedule, 180000);
|
||||
timer = setInterval(schedule, 299999);
|
||||
}
|
||||
};
|
||||
|
||||
timer = setInterval(schedule, 180000);
|
||||
timer = setInterval(schedule, 299999);
|
||||
|
||||
export default schedule;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { MessageMedia, Message as WbotMessage } from "whatsapp-web.js";
|
||||
import AppError from "../../errors/AppError";
|
||||
import GetTicketWbot from "../../helpers/GetTicketWbot";
|
||||
|
@ -14,51 +15,108 @@ import { mediaTypeWhatsappOfficial } from "./wbotMessageListener";
|
|||
import { bytesToMB } from "../../helpers/BytesToMB";
|
||||
|
||||
interface Request {
|
||||
media: Express.Multer.File;
|
||||
media?: Express.Multer.File;
|
||||
ticket: Ticket;
|
||||
mic_audio?: any
|
||||
mic_audio?: any;
|
||||
filePath?: string;
|
||||
}
|
||||
|
||||
const SendWhatsAppMedia = async ({
|
||||
media,
|
||||
ticket,
|
||||
mic_audio
|
||||
mic_audio,
|
||||
filePath
|
||||
}: Request): Promise<WbotMessage | any> => {
|
||||
const { phoneNumberId } = ticket;
|
||||
|
||||
if (phoneNumberId) {
|
||||
const { type, mbMaxSize }: any = mediaTypeWhatsappOfficial(media.mimetype);
|
||||
if (media) {
|
||||
const { type, mbMaxSize }: any = mediaTypeWhatsappOfficial(media.mimetype);
|
||||
|
||||
const filesize: any = bytesToMB(media.size);
|
||||
const filesize: any = bytesToMB(media.size);
|
||||
|
||||
if (filesize > mbMaxSize) {
|
||||
throw new AppError("FILE TOO LARGE!");
|
||||
if (filesize > mbMaxSize) {
|
||||
throw new AppError("FILE TOO LARGE!");
|
||||
}
|
||||
if (!type) {
|
||||
throw new AppError("FILE TYPE NOT SUPPORTED!");
|
||||
}
|
||||
|
||||
sendWhatsMediaOfficialAPI(ticket, media, type, mic_audio);
|
||||
return;
|
||||
}
|
||||
if (!type) {
|
||||
throw new AppError("FILE TYPE NOT SUPPORTED!");
|
||||
}
|
||||
|
||||
sendWhatsMediaOfficialAPI(ticket, media, type, mic_audio);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const newMedia = MessageMedia.fromFilePath(media.path);
|
||||
let newMedia: MessageMedia;
|
||||
if (filePath) {
|
||||
newMedia = MessageMedia.fromFilePath(filePath);
|
||||
} else if (media) {
|
||||
newMedia = MessageMedia.fromFilePath(media.path);
|
||||
} else {
|
||||
throw new AppError("No media provided!");
|
||||
}
|
||||
|
||||
sendWhatsAppMediaSocket(ticket, newMedia);
|
||||
|
||||
await ticket.update({ lastMessage: media.filename });
|
||||
const lastMessage = filePath ? path.basename(filePath) : media?.filename;
|
||||
|
||||
await ticket.update({ lastMessage });
|
||||
|
||||
await updateTicketCacheByTicketId(ticket.id, {
|
||||
lastMessage: media.filename,
|
||||
lastMessage,
|
||||
updatedAt: new Date(ticket.updatedAt).toISOString()
|
||||
});
|
||||
|
||||
console.log("media.path: ", media.path);
|
||||
fs.unlinkSync(media.path);
|
||||
if (media) {
|
||||
fs.unlinkSync(media.path);
|
||||
}
|
||||
} catch (err) {
|
||||
throw new AppError("ERR_SENDING_WAPP_MSG");
|
||||
}
|
||||
// const { phoneNumberId } = ticket;
|
||||
|
||||
// if (phoneNumberId) {
|
||||
// const { type, mbMaxSize }: any = mediaTypeWhatsappOfficial(media.mimetype);
|
||||
|
||||
// const filesize: any = bytesToMB(media.size);
|
||||
|
||||
// if (filesize > mbMaxSize) {
|
||||
// throw new AppError("FILE TOO LARGE!");
|
||||
// }
|
||||
// if (!type) {
|
||||
// throw new AppError("FILE TYPE NOT SUPPORTED!");
|
||||
// }
|
||||
|
||||
// sendWhatsMediaOfficialAPI(ticket, media, type, mic_audio);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// try {
|
||||
// //const newMedia = MessageMedia.fromFilePath(media.path);
|
||||
// let newMedia: MessageMedia;
|
||||
// if (filePath) {
|
||||
// newMedia = MessageMedia.fromFilePath(filePath);
|
||||
// } else if (media) {
|
||||
// newMedia = MessageMedia.fromFilePath(media.path);
|
||||
// } else {
|
||||
// throw new AppError("No media provided!");
|
||||
// }
|
||||
|
||||
// sendWhatsAppMediaSocket(ticket, newMedia);
|
||||
|
||||
// await ticket.update({ lastMessage: media.filename });
|
||||
|
||||
// await updateTicketCacheByTicketId(ticket.id, {
|
||||
// lastMessage: media.filename,
|
||||
// updatedAt: new Date(ticket.updatedAt).toISOString()
|
||||
// });
|
||||
|
||||
// console.log("media.path: ", media.path);
|
||||
// fs.unlinkSync(media.path);
|
||||
// } catch (err) {
|
||||
// throw new AppError("ERR_SENDING_WAPP_MSG");
|
||||
// }
|
||||
};
|
||||
|
||||
export default SendWhatsAppMedia;
|
||||
|
|
|
@ -110,7 +110,7 @@ import AssociateContatctQueue from "../ContactServices/AssociateContatctQueue";
|
|||
import ContactQueue from "../../models/ContactQueues";
|
||||
import { encodeFileToBase64 } from "../../helpers/EncodeFileToBase64";
|
||||
import { Json } from "sequelize/types/lib/utils";
|
||||
|
||||
import SendWhatsAppMedia from "./SendWhatsAppMedia";
|
||||
var lst: any[] = getWhatsappIds();
|
||||
|
||||
interface Session extends Client {
|
||||
|
@ -278,7 +278,7 @@ const question = async (
|
|||
) {
|
||||
await botSendMessage(
|
||||
ticket,
|
||||
"¡Envía uno o más archivos simultáneamente!"
|
||||
"Por favor adjuntar evidencias.\n¡Envía uno o más archivos simultáneamente!"
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
@ -327,22 +327,9 @@ const question = async (
|
|||
}
|
||||
}
|
||||
|
||||
// currentId = await get({ key: `form:${ticket.id}:current` });
|
||||
|
||||
let index = ask.findIndex((obj: any) => obj.id == currentId);
|
||||
|
||||
if (index != -1) {
|
||||
console.log(
|
||||
"msg?.body: ",
|
||||
msg?.body,
|
||||
" | sendFile?.filePath: ",
|
||||
sendFile?.filePath,
|
||||
" | index: ",
|
||||
index,
|
||||
" | ask[index]?.item?.file: ",
|
||||
ask[index]?.item?.file
|
||||
);
|
||||
|
||||
if (!ask[index]?.item?.file && !sendFile) {
|
||||
ask[index].value = msg?.body;
|
||||
}
|
||||
|
@ -352,18 +339,22 @@ const question = async (
|
|||
|
||||
if (index + 1 <= ask.length - 1) {
|
||||
if (ask[index + 1]?.item?.file && !sendFile) {
|
||||
await botSendMessage(
|
||||
ticket,
|
||||
"¿Quieres enviar archivo? Ingrese *Sí* o *No*"
|
||||
);
|
||||
// await botSendMessage(
|
||||
// ticket,
|
||||
// "¿Quieres enviar archivo? Ingrese *Sí* o *No*"
|
||||
// );
|
||||
await set(
|
||||
`form:${ticket.id}:file`,
|
||||
JSON.stringify({ status: "waiting" })
|
||||
);
|
||||
return;
|
||||
set(
|
||||
`form:${ticket.id}:file`,
|
||||
JSON.stringify({ ...sendFile, status: "yes" })
|
||||
);
|
||||
// return;
|
||||
}
|
||||
|
||||
// Next question
|
||||
|
||||
await botSendMessage(ticket, ask[index + 1].question);
|
||||
await set(`form:${ticket.id}:current`, `${ask[index + 1].id}`);
|
||||
} else {
|
||||
|
@ -478,13 +469,13 @@ const verifyMediaMessage = async (
|
|||
phoneNumberId: msg?.phoneNumberId,
|
||||
fromAgent: false
|
||||
};
|
||||
if (
|
||||
messageData.mediaType === "video" ||
|
||||
(messageData.mediaType === "audio" &&
|
||||
getSettingValue("blockAudioVideoMedia")?.value === "enabled")
|
||||
) {
|
||||
mediaAuthorized = false;
|
||||
}
|
||||
// if (
|
||||
// messageData.mediaType === "video" ||
|
||||
// (messageData.mediaType === "audio" &&
|
||||
// getSettingValue("blockAudioVideoMedia")?.value === "enabled")
|
||||
// ) {
|
||||
// mediaAuthorized = false;
|
||||
// }
|
||||
if (msg?.fromMe) {
|
||||
messageData = { ...messageData, fromAgent: true };
|
||||
}
|
||||
|
@ -1257,7 +1248,7 @@ const handleMessage = async (
|
|||
if (msg.type == "chat" && String(msg.body).length > 120) {
|
||||
botSendMessage(
|
||||
ticket,
|
||||
`Desculpe, nao compreendi!\nTexto acima de 120 caracteres!\n _Digite *0* para voltar ao menu principal._`
|
||||
`¡Disculpa, no comprendí!\n\n¡El mensaje tiene más de 120 caracteres!\n\n_Digite 0 para volver al menú principal._`
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
@ -1394,14 +1385,14 @@ const handleMessage = async (
|
|||
return;
|
||||
}
|
||||
|
||||
const menuMsg: any = await menu(msg.body, wbot.id, contact.id);
|
||||
const menuMsg: any = await menu(msg.body, wbot.id, contact.id, ticket);
|
||||
|
||||
console.log("menuMsg: ", menuMsg);
|
||||
|
||||
await botSendMessage(
|
||||
ticket,
|
||||
menuMsg.value +
|
||||
"\n\nSi desea volver al menú principal, escriba *0* o *#* para volver al menú anterior"
|
||||
"\n\nSi deseas volver al menú principal, escriba *0* o *#* para volver al menú anterior"
|
||||
);
|
||||
|
||||
if (
|
||||
|
@ -1484,7 +1475,7 @@ const handleMessage = async (
|
|||
},
|
||||
ticketId: ticket.id
|
||||
});
|
||||
const menuMsg: any = await menu(msg.body, wbot.id, contact.id);
|
||||
const menuMsg: any = await menu(msg.body, wbot.id, contact.id, ticket);
|
||||
await botSendMessage(ticket, menuMsg.value);
|
||||
}
|
||||
|
||||
|
@ -1507,7 +1498,7 @@ const handleMessage = async (
|
|||
ticketId: ticket.id
|
||||
});
|
||||
|
||||
const menuMsg: any = await menu(msg.body, wbot.id, contact.id);
|
||||
const menuMsg: any = await menu(msg.body, wbot.id, contact.id, ticket);
|
||||
|
||||
await botSendMessage(ticket, menuMsg.value);
|
||||
|
||||
|
@ -1549,7 +1540,7 @@ const handleMessage = async (
|
|||
};
|
||||
|
||||
async function previousUra(wbot: any, contact: Contact, ticket: any) {
|
||||
const menuMsg: any = await menu("#", wbot.id, contact.id);
|
||||
const menuMsg: any = await menu("#", wbot.id, contact.id, ticket);
|
||||
botSendMessage(ticket, menuMsg.value);
|
||||
}
|
||||
|
||||
|
@ -1602,7 +1593,7 @@ function delForm(ticket: any) {
|
|||
del(`form:${ticket.id}:confirmation`);
|
||||
}
|
||||
|
||||
const menu = async (userTyped: string, whatsappId: any, contactId: any) => {
|
||||
const menu = async (userTyped: string, whatsappId: any, contactId: any, ticket: any) => {
|
||||
let whatsapp = await whatsappCache(whatsappId);
|
||||
|
||||
let lastId = await findObject(
|
||||
|
@ -1624,6 +1615,21 @@ const menu = async (userTyped: string, whatsappId: any, contactId: any) => {
|
|||
value: data[1].id,
|
||||
history: `|${data[1].id}`
|
||||
});
|
||||
if(whatsapp && whatsapp.number === '573168762241'){
|
||||
const imagePath = path.join(__dirname, '..','..','utils','OET_inicio.jpg');
|
||||
await SendWhatsAppMedia({
|
||||
ticket,
|
||||
filePath: imagePath
|
||||
});
|
||||
console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Send image init')
|
||||
}else if(whatsapp && whatsapp.number === '573159260397'){
|
||||
const imagePath = path.join(__dirname, '..','..','utils','Faro_inicio.jpeg');
|
||||
await SendWhatsAppMedia({
|
||||
ticket,
|
||||
filePath: imagePath
|
||||
});
|
||||
console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Send image init')
|
||||
}
|
||||
}
|
||||
|
||||
lastId = await findObject(
|
||||
|
@ -1884,10 +1890,13 @@ async function whatsappCache(whatsappId: any) {
|
|||
let whatsapp = await get({ key: "whatsapp:*", parse: true });
|
||||
|
||||
let uraByNumber = await get({ key: "ura_*", parse: true });
|
||||
// console.log("------------------------> uraByNumber: ", uraByNumber);
|
||||
|
||||
|
||||
whatsapp = whatsapp.filter((w: any) => +w?.id == +whatsappId);
|
||||
|
||||
console.log("------------------------> whatsapp: ", whatsapp);
|
||||
|
||||
|
||||
if (whatsapp && whatsapp.length > 0 && uraByNumber) return whatsapp[0];
|
||||
}
|
||||
|
||||
|
@ -2205,6 +2214,13 @@ async function setSoport(ticket: any, wbot: any, contact: any) {
|
|||
})
|
||||
.join("");
|
||||
|
||||
let request = await get({
|
||||
key: `form:${ticket.id}:request`,
|
||||
parse: true
|
||||
});
|
||||
|
||||
payload += `<nit_transp>${request.nit}</nit_transp>`;
|
||||
|
||||
let payloadFile = fillingOutForm.ask.find((a: any) => a?.item?.file);
|
||||
|
||||
let files = "";
|
||||
|
@ -2251,7 +2267,7 @@ async function setSoport(ticket: any, wbot: any, contact: any) {
|
|||
</soapenv:Body>
|
||||
</soapenv:Envelope>`;
|
||||
|
||||
// console.log("DATA: ", data);
|
||||
console.log("DATA REQUEST: ", data);
|
||||
|
||||
// return;
|
||||
var config = {
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 137 KiB |
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
|
@ -247,7 +247,7 @@ const MessageInput = ({ ticketStatus, ticketLastMessage, ticketIsRemote }) => {
|
|||
setInputMessage(ticketLastMessage)
|
||||
}
|
||||
else {
|
||||
setInputMessage("")
|
||||
//setInputMessage("")
|
||||
}
|
||||
}, [countTicketMsg, ticketIsRemote, ticketLastMessage])
|
||||
|
||||
|
|
|
@ -229,7 +229,7 @@ const TicketListItem = ({ ticket, remoteTicketsControll, settings }) => {
|
|||
variant="body2"
|
||||
color="textPrimary"
|
||||
>
|
||||
{ticket.contact.name}
|
||||
{ticket?.contact?.name}
|
||||
</Typography>
|
||||
{ticket.status === "closed" && (
|
||||
<Badge
|
||||
|
|
Loading…
Reference in New Issue