Untitled
unknown
plain_text
21 days ago
5.0 kB
18
Indexable
Never
const hubspot = require("@hubspot/api-client"); exports.main = async (event, callback) => { const hubspotClient = new hubspot.Client({ accessToken: process.env.HUBSPOT_ACCESS_TOKEN, }); const errorField = "validacao_de_telefone"; try { const results = await hubspotClient.crm.contacts.basicApi.getById( event.object.objectId, ["phone", "mobilephone", errorField] ); if (!results || !results.body || !results.body.properties) { throw new Error("Resposta da API inválida"); } const phone = results.body.properties.phone; const mobilephone = results.body.properties.mobilephone; if (!phone && !mobilephone) { console.error("Nenhum telefone fornecido."); callback({ error: "Nenhum telefone fornecido." }); return; } let updatedFields = {}; let formatError = false; if (phone) { const formattedPhone = formatPhoneNumber(phone); if (!formattedPhone) { updatedFields[errorField] = `Telefone errado: ${phone}`; formatError = true; } else if (isCellPhone(formattedPhone)) { updatedFields.mobilephone = formattedPhone; updatedFields.phone = formattedPhone; } else { updatedFields.phone = formattedPhone; } } if (mobilephone) { const formattedMobilePhone = formatPhoneNumber(mobilephone); if (!formattedMobilePhone) { updatedFields[errorField] = `Telefone errado: ${mobilephone}`; formatError = true; } else { updatedFields.mobilephone = formattedMobilePhone; updatedFields.phone = formattedMobilePhone; } } if (Object.keys(updatedFields).length > 0) { await hubspotClient.crm.contacts.basicApi.update(event.object.objectId, { properties: updatedFields, }); callback({ outputFields: { message: "Telefones formatados com sucesso.", formattedPhone: updatedFields.phone || "Nenhum", formattedMobilePhone: updatedFields.mobilephone || "Nenhum", formatError: formatError ? updatedFields[errorField] : "Nenhum", }, }); } else { callback({ outputFields: { message: "Nenhuma atualização necessária.", formattedPhone: "Nenhum", formattedMobilePhone: "Nenhum", formatError: "Nenhum", }, }); } } catch (err) { console.error("Erro ao processar contato:", err); callback({ error: "Falha ao processar informações do contato." }); } }; function formatPhoneNumber(phone) { const cleaned = ("" + phone).replace(/\D/g, ""); const countryCode = "+55"; let formattedPhone = ""; if (cleaned.length === 11) { // Número celular (sem código do país) const areaCode = cleaned.slice(0, 2); const firstPart = cleaned.slice(2, 7); const secondPart = cleaned.slice(7, 11); formattedPhone = `${countryCode}-${areaCode}-${firstPart}-${secondPart}`; } else if (cleaned.length === 10) { // Número fixo (sem código do país) const areaCode = cleaned.slice(0, 2); const firstPart = cleaned.slice(2, 6); const secondPart = cleaned.slice(6, 10); formattedPhone = `${countryCode}-${areaCode}-${firstPart}-${secondPart}`; } else if (cleaned.length === 9) { // Número celular (sem DDD e sem código do país) const firstPart = cleaned.slice(0, 5); const secondPart = cleaned.slice(5, 9); formattedPhone = `${countryCode}-XX-${firstPart}-${secondPart}`; console.error("Número de telefone inválido (falta DDD):", phone); return null; } else if (cleaned.length === 8) { // Número fixo (sem DDD e sem código do país) const firstPart = cleaned.slice(0, 4); const secondPart = cleaned.slice(4, 8); formattedPhone = `${countryCode}-XX-${firstPart}-${secondPart}`; console.error("Número de telefone inválido (falta DDD):", phone); return null; } else if (cleaned.length === 13 && cleaned.startsWith("55")) { // Número com código do país if (cleaned[4] === "9") { // Celular const areaCode = cleaned.slice(2, 4); const firstPart = cleaned.slice(4, 9); const secondPart = cleaned.slice(9, 13); formattedPhone = `${countryCode}-${areaCode}-${firstPart}-${secondPart}`; } else { // Telefone fixo const areaCode = cleaned.slice(2, 4); const firstPart = cleaned.slice(4, 8); const secondPart = cleaned.slice(8, 12); formattedPhone = `${countryCode}-${areaCode}-${firstPart}-${secondPart}`; } } else { console.error("Número de telefone inválido:", phone); return null; } return formattedPhone; } function isCellPhone(phone) { const cleaned = ("" + phone).replace(/\D/g, ""); return ( cleaned.length === 13 && cleaned.startsWith("55") && cleaned[4] === "9" ); }
Leave a Comment