|
|
|
@ -1,12 +1,38 @@
|
|
|
|
|
const generateId = require('./../../utils/generateId.util');
|
|
|
|
|
const whatsappEvents = require('../emitter');
|
|
|
|
|
const { callWebhook } = require('../webhook');
|
|
|
|
|
|
|
|
|
|
const logger = console;
|
|
|
|
|
|
|
|
|
|
const eventTypeMapped = {
|
|
|
|
|
'message:received': 'wai.message.received',
|
|
|
|
|
'message:updated': 'wai.message.updated',
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const webhookBodyBuilder = (messageData, messageType) => {
|
|
|
|
|
const message = {
|
|
|
|
|
id: `evt_${generateId().replace(/-/g, '')}`,
|
|
|
|
|
type: eventTypeMapped[messageType],
|
|
|
|
|
apiVersion: 'v2',
|
|
|
|
|
createTime: new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toISOString(), // GMT +8
|
|
|
|
|
waiMessage: messageData,
|
|
|
|
|
};
|
|
|
|
|
return message;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function setupMessageHandler() {
|
|
|
|
|
whatsappEvents.on('message:received', async messageData => {
|
|
|
|
|
try {
|
|
|
|
|
await callWebhook(messageData);
|
|
|
|
|
const x = webhookBodyBuilder(messageData, 'message:received');
|
|
|
|
|
await callWebhook(x);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
logger.error({ messageData, error }, 'error call webhook');
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
whatsappEvents.on('message:updated', async messageData => {
|
|
|
|
|
try {
|
|
|
|
|
const x = webhookBodyBuilder(messageData, 'message:updated');
|
|
|
|
|
await callWebhook(x);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
logger.error({ messageData, error }, 'error call webhook');
|
|
|
|
|
}
|
|
|
|
|