refactor: apply feedback and finalize PR #2
parent
ce94c22f0a
commit
8b83c7613c
|
@ -5,15 +5,29 @@ const hubspotService = new HubspotService();
|
|||
|
||||
const receiveTranscription = async (req, res) => {
|
||||
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) {
|
||||
console.log('Campos faltando:', {
|
||||
crmPhone: !crmPhone,
|
||||
uniqueId: !uniqueId,
|
||||
transcription: !transcription,
|
||||
recordingUrl: !recordingUrl
|
||||
});
|
||||
return res.status(400).json({ error: 'Campos obrigatórios ausentes.' });
|
||||
}
|
||||
|
||||
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
|
||||
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)
|
||||
await hubspotService.createCallNote(contact.contactId, {
|
||||
transcription: `${transcription.client || ''}\n${transcription.agent || ''}`,
|
||||
summary: transcription.summary,
|
||||
transcription: `${clientTranscription || ''}\n${agentTranscription || ''}`,
|
||||
summary: transcription,
|
||||
recordingUrl,
|
||||
crmPhone,
|
||||
uniqueId,
|
||||
ticketId
|
||||
});
|
||||
|
||||
await del(crmPhone)
|
||||
// await del(crmPhone)
|
||||
|
||||
return res.status(200).json({ message: 'Transcrição recebida e processada com sucesso!' });
|
||||
} catch (error) {
|
||||
|
|
|
@ -40,12 +40,12 @@ class HubspotService {
|
|||
*/
|
||||
async createCallNote(contactId, callData) {
|
||||
try {
|
||||
const { transcription, summary, recordingUrl, callerId, uniqueId, ticketId } = callData;
|
||||
const { transcription, summary, recordingUrl, crmPhone, uniqueId, ticketId } = callData;
|
||||
|
||||
const noteContent = `
|
||||
Chamada Recebida
|
||||
------------------
|
||||
Número: ${callerId}
|
||||
Número: ${crmPhone}
|
||||
ID da Chamada: ${uniqueId}
|
||||
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.
|
||||
*
|
||||
* @param {string} phoneNumber - Número de telefone para buscar.
|
||||
* @returns {Promise<Object|null>} - Contato encontrado ou null.
|
||||
* @param {string} phoneNumber
|
||||
* @returns {Promise<Object|null>}
|
||||
*/
|
||||
async findContactByPhone(phoneNumber) {
|
||||
try {
|
||||
|
@ -120,8 +120,12 @@ Link da Gravação: ${recordingUrl}
|
|||
*/
|
||||
async createContactIfNotExists(companyId, crmPhone) {
|
||||
|
||||
console.log('=========> companyId: ', companyId)
|
||||
|
||||
const crmFiles = await loadCRM(companyId)
|
||||
|
||||
console.log('=========> crmFiles: ', crmFiles)
|
||||
|
||||
if (crmFiles.length > 0) {
|
||||
|
||||
const { crmRest: rest, authentication } = crmFiles[0].crm
|
||||
|
@ -130,11 +134,12 @@ Link da Gravação: ${recordingUrl}
|
|||
|
||||
if (!contact.exist) {
|
||||
contact = await createContact(companyId, rest, authentication, crmPhone)
|
||||
}
|
||||
|
||||
}
|
||||
console.log('========> contact', contact)
|
||||
return contact
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,9 @@ async function get(key) {
|
|||
|
||||
// Function to delete a token
|
||||
async function del(key) {
|
||||
|
||||
console.log('=========> key: ', key)
|
||||
|
||||
const deletedCount = await redis.del(key)
|
||||
if (deletedCount === 1) {
|
||||
console.log(`Token ${key} deleted successfully!`)
|
||||
|
|
Loading…
Reference in New Issue