You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Global-sales/wai-server/core/services/messageHandler.js

44 lines
1.3 KiB
JavaScript

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',
webhooksource: 'wai',
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 {
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');
}
});
}
module.exports = { setupMessageHandler };