const loadCRM = require('./loadCRM') const lookupContactByPhone = require('./lookupCRMContactByPhone') const createContact = require('./createContact') const findProperty = require('./findProperty') const CRM_Contact = require('../models/CRM_Contact') const CRM_Ticket = require('../models/CRM_Ticket') const CRM = require('../models/CRM') const createTicket = require('./createTicket') const lookupCRMTicket = require('./lookupCRMTicket') const sendEventTicketCreatedToSocket = require('./sendEventTicketCreatedToSocket') const journalingRequest = require('./journalingRequest') const omnihitV2Integration = require('../data/omihitV2IntegrationCRM.json') async function whatsappJournalingCRM(companyId, crmPhone, crmAgent, crmFirstName = 'Username', ticketId=null) { const crmFiles = await loadCRM(companyId) const crmContactIds = [] for (const crmConfig of crmFiles) { const { crmRest: rest, authentication } = crmConfig.crm // Record whatsapp conversation that happened in omnihit v2 let chatJournaling = findProperty(rest, 'chatJournaling') console.log('===============> chatJournaling: ', chatJournaling) if (chatJournaling) { let contact = await _lookupContact(rest, authentication, crmPhone, companyId, crmFirstName) const { contactId, created } = contact let { request, chats, response } = chatJournaling let body = findProperty(chats, 'chatDone') const obj = omnihitV2Integration.find(o => o.companyId == companyId) if (ticketId && obj) { const { companyId, omnihit: { accountId, api: { url, urlHttps, token } = {}, createConversation: { inbox_id, status, team_id } = {} } = {} } = obj console.log('===============> body1: ', body) body = JSON.stringify(body) if (body.includes('chatLink')) { body = body.replace('chatLink', `${urlHttps}/app/accounts/${accountId}/conversations/${ticketId}`) } console.log('===============> body2: ', body) body = JSON.parse(body) console.log('===============> body3: ', body) } await journalingRequest(request, body, crmCallDuration = 0, contact, crmAgent, crmPhone, authentication, rest, companyId) } // } return crmContactIds } module.exports = whatsappJournalingCRM async function _lookupContact(rest, authentication, crmPhone, companyId, crmFirstName) { let contact = await lookupContactByPhone(rest, authentication, crmPhone, companyId) if (contact?.exist) { return { created: false, contactId: contact.contactId } } if (!contact?.exist) { contact = await createContact(companyId, rest, authentication, crmPhone, crmFirstName) } return { created: true, contactId: contact.contactId } }