refactor: apply feedback and finalize PR #2

analisando_gabriel-poc
Eduxavier88 2025-06-20 08:57:01 -03:00
parent ce94c22f0a
commit 8b83c7613c
3 changed files with 33 additions and 11 deletions

View File

@ -5,15 +5,29 @@ const hubspotService = new HubspotService();
const receiveTranscription = async (req, res) => { const receiveTranscription = async (req, res) => {
try { try {
console.log('Payload recebido:', JSON.stringify(req.body, null, 2));
const { crmPhone, uniqueId, transcription, recordingUrl, companyId, clientTranscription, agentTranscription } = req.body;
console.log('=========> crmPhone: ', crmPhone, "===> uniqueId: ", uniqueId, "===> transcription: ", transcription, "===> recordingUrl: ", recordingUrl, "===> companyId: ", companyId )
const { crmPhone, uniqueId, transcription, recordingUrl, companyId } = req.body;
if (!crmPhone || !uniqueId || !transcription || !recordingUrl) { if (!crmPhone || !uniqueId || !transcription || !recordingUrl) {
console.log('Campos faltando:', {
crmPhone: !crmPhone,
uniqueId: !uniqueId,
transcription: !transcription,
recordingUrl: !recordingUrl
});
return res.status(400).json({ error: 'Campos obrigatórios ausentes.' }); return res.status(400).json({ error: 'Campos obrigatórios ausentes.' });
} }
console.log(`Recebida transcrição para crmPhone: ${crmPhone}, uniqueId: ${uniqueId}`); console.log(`Recebida transcrição para crmPhone: ${crmPhone}, uniqueId: ${uniqueId}`);
console.log('Transcrição:', transcription.summary); console.log('Transcrição Resumo:', transcription);
console.log('Transcrição Cliente:', clientTranscription);
console.log('Transcrição Agente:', agentTranscription);
// 1. Buscar ticketId no Redis // 1. Buscar ticketId no Redis
const ticketId = await get(crmPhone); const ticketId = await get(crmPhone);
@ -27,15 +41,15 @@ const receiveTranscription = async (req, res) => {
// 3. Criar nota no HubSpot e associar ao contato e ao ticket (se existir) // 3. Criar nota no HubSpot e associar ao contato e ao ticket (se existir)
await hubspotService.createCallNote(contact.contactId, { await hubspotService.createCallNote(contact.contactId, {
transcription: `${transcription.client || ''}\n${transcription.agent || ''}`, transcription: `${clientTranscription || ''}\n${agentTranscription || ''}`,
summary: transcription.summary, summary: transcription,
recordingUrl, recordingUrl,
crmPhone, crmPhone,
uniqueId, uniqueId,
ticketId ticketId
}); });
await del(crmPhone) // await del(crmPhone)
return res.status(200).json({ message: 'Transcrição recebida e processada com sucesso!' }); return res.status(200).json({ message: 'Transcrição recebida e processada com sucesso!' });
} catch (error) { } catch (error) {

View File

@ -40,12 +40,12 @@ class HubspotService {
*/ */
async createCallNote(contactId, callData) { async createCallNote(contactId, callData) {
try { try {
const { transcription, summary, recordingUrl, callerId, uniqueId, ticketId } = callData; const { transcription, summary, recordingUrl, crmPhone, uniqueId, ticketId } = callData;
const noteContent = ` const noteContent = `
Chamada Recebida Chamada Recebida
------------------ ------------------
Número: ${callerId} Número: ${crmPhone}
ID da Chamada: ${uniqueId} ID da Chamada: ${uniqueId}
Data/Hora: ${new Date().toLocaleString('pt-BR', { timeZone: 'America/Sao_Paulo' })} Data/Hora: ${new Date().toLocaleString('pt-BR', { timeZone: 'America/Sao_Paulo' })}
@ -90,8 +90,8 @@ Link da Gravação: ${recordingUrl}
/** /**
* Busca um contato no HubSpot pelo número de telefone. * Busca um contato no HubSpot pelo número de telefone.
* *
* @param {string} phoneNumber - Número de telefone para buscar. * @param {string} phoneNumber
* @returns {Promise<Object|null>} - Contato encontrado ou null. * @returns {Promise<Object|null>}
*/ */
async findContactByPhone(phoneNumber) { async findContactByPhone(phoneNumber) {
try { try {
@ -120,8 +120,12 @@ Link da Gravação: ${recordingUrl}
*/ */
async createContactIfNotExists(companyId, crmPhone) { async createContactIfNotExists(companyId, crmPhone) {
console.log('=========> companyId: ', companyId)
const crmFiles = await loadCRM(companyId) const crmFiles = await loadCRM(companyId)
console.log('=========> crmFiles: ', crmFiles)
if (crmFiles.length > 0) { if (crmFiles.length > 0) {
const { crmRest: rest, authentication } = crmFiles[0].crm const { crmRest: rest, authentication } = crmFiles[0].crm
@ -130,11 +134,12 @@ Link da Gravação: ${recordingUrl}
if (!contact.exist) { if (!contact.exist) {
contact = await createContact(companyId, rest, authentication, crmPhone) contact = await createContact(companyId, rest, authentication, crmPhone)
}
}
console.log('========> contact', contact)
return contact return contact
} }
return null
} }
} }

View File

@ -25,6 +25,9 @@ async function get(key) {
// Function to delete a token // Function to delete a token
async function del(key) { async function del(key) {
console.log('=========> key: ', key)
const deletedCount = await redis.del(key) const deletedCount = await redis.del(key)
if (deletedCount === 1) { if (deletedCount === 1) {
console.log(`Token ${key} deleted successfully!`) console.log(`Token ${key} deleted successfully!`)