Problema no código personalizado para validar propriedades de contato e objeto personalizado.
resolver
Olá, pessoal! Espero que estejam bem.
Desenvolvi um fluxo de trabalho que utiliza código personalizado para validar dados e avançar o lead para a próxima etapa do pipeline. Vou descrever brevemente como o fluxo funciona e, em seguida, explicar o problema que estou enfrentando para ver se vocês podem me ajudar.
Formulário Enviado: O cliente envia um formulário que atualiza a conversão de um contato no HubSpot.
Criação de Negócio: Um negócio é automaticamente criado na primeira etapa do pipeline chamado "Eventos".
Validação de Dados: O fluxo utiliza uma ação de código no Operations Hub para validar se os campos "E-mail" e "ID do Sistema" do contato possuem os mesmos valores que os campos correspondentes no objeto personalizado "Conta".
- E-mail de Contato: email - E-mail de Conta: e_mail - ID do Sistema de Contato: id_do_sistema - ID do Sistema de Conta: id_do_sistema
Movimentação no Pipeline:
Se os valores forem iguais, o negócio associado ao contato deve ser movido para a etapa "Validado" do pipeline.
Se forem diferentes, o negócio deve permanecer na etapa "Em Validação" do pipeline.
Erro que Está Acontecendo:
Apesar de o código retornar os resultados esperados da API (como o objeto "Conta"), o fluxo exibe a mensagem de erro: "Nenhuma conta correspondente encontrada."
O log mostra claramente que a API retorna resultados válidos, mas o código parece não reconhecer isso. Mesmo quando os dados são consistentes, a validação não move o negócio para a etapa correta do pipeline.
Segue abaixo, uma resposta um pouco longa, mas eu acredito que passamos por todas as possibilidades, dado este contexto:
Verifique a resposta da API de busca de contas:
No código, você está buscando uma "conta" usando hubspotClient.crm.objects.searchApi.doSearch(). Certifique-se de que a "conta" que você está buscando está realmente configurada como esperado no HubSpot. O nome do objeto ("conta") pode não corresponder ao nome do objeto personalizado ou ao tipo de objeto que você criou na sua conta HubSpot.
Você pode adicionar um console.log() para verificar o conteúdo retornado pela API.
Isso ajudará a identificar se os dados estão sendo retornados corretamente pela API de pesquisa de contas. Se o resultado for vazio, você pode ajustar os filtros ou os parâmetros de busca.
Certifique-se de que as propriedades de "id_do_sistema" estão consistentes:
No código, você está buscando o valor de id_do_sistema tanto no contato quanto na conta. Garanta que o nome da propriedade que você está usando no filtro (no caso, id_do_sistema) seja exatamente o mesmo tanto no objeto de contato quanto no objeto de conta no HubSpot.
Para verificar isso, você pode imprimir as propriedades retornadas e garantir que os dados de id_do_sistema e email estão corretos.
console.log('Propriedades do contato:', contactProperties);
console.log('Propriedades da conta:', accountProperties);
Trate a busca com mais detalhes:
No caso de a busca retornar múltiplos resultados ou nenhum, você pode melhorar a lógica de tratamento de erros e ter mais clareza sobre o que está acontecendo.
const results = searchResults.body?.results || [];
if (results.length === 0) {
callback({ outputFields: { isValid: false, message: "Conta não encontrada." } });
console.log('Nenhuma conta encontrada com id_do_sistema:', contactProperties.id_do_sistema);
return;
}
const account = results[0];
Validação de valores de e-mail:
Se os valores de "email" do contato e "e_mail" da conta não corresponderem exatamente, a validação falhará. Verifique se não há diferenças sutis, como espaços extras, maiúsculas/minúsculas, etc.
Após a validação, você está buscando o primeiro negócio associado ao contato. Caso o negócio associado não seja encontrado, você retorna uma mensagem de erro. No entanto, se o fluxo de trabalho estiver configurado de maneira incorreta, talvez o negócio ainda não tenha sido criado ou associado ao contato de maneira adequada.
Dica adicional:
Caso a lógica de movimentação do negócio ainda não esteja funcionando conforme o esperado, verifique se a pipeline_stage que você está utilizando ("validado") está corretamente configurada no HubSpot para que o negócio seja movido para essa etapa.
Sugestão de alteração no código:
Aqui está uma versão levemente ajustada com base nas sugestões:
Se a minha resposta te ajudou, por gentileza, clique no botão: " Aceitar como solução ". Ainda com dúvidas? Responda a minha postagem para que possamos continuar te ajudando! Obrigado por postar na comunidade da HubSpot! .
Segue abaixo, uma resposta um pouco longa, mas eu acredito que passamos por todas as possibilidades, dado este contexto:
Verifique a resposta da API de busca de contas:
No código, você está buscando uma "conta" usando hubspotClient.crm.objects.searchApi.doSearch(). Certifique-se de que a "conta" que você está buscando está realmente configurada como esperado no HubSpot. O nome do objeto ("conta") pode não corresponder ao nome do objeto personalizado ou ao tipo de objeto que você criou na sua conta HubSpot.
Você pode adicionar um console.log() para verificar o conteúdo retornado pela API.
Isso ajudará a identificar se os dados estão sendo retornados corretamente pela API de pesquisa de contas. Se o resultado for vazio, você pode ajustar os filtros ou os parâmetros de busca.
Certifique-se de que as propriedades de "id_do_sistema" estão consistentes:
No código, você está buscando o valor de id_do_sistema tanto no contato quanto na conta. Garanta que o nome da propriedade que você está usando no filtro (no caso, id_do_sistema) seja exatamente o mesmo tanto no objeto de contato quanto no objeto de conta no HubSpot.
Para verificar isso, você pode imprimir as propriedades retornadas e garantir que os dados de id_do_sistema e email estão corretos.
console.log('Propriedades do contato:', contactProperties);
console.log('Propriedades da conta:', accountProperties);
Trate a busca com mais detalhes:
No caso de a busca retornar múltiplos resultados ou nenhum, você pode melhorar a lógica de tratamento de erros e ter mais clareza sobre o que está acontecendo.
const results = searchResults.body?.results || [];
if (results.length === 0) {
callback({ outputFields: { isValid: false, message: "Conta não encontrada." } });
console.log('Nenhuma conta encontrada com id_do_sistema:', contactProperties.id_do_sistema);
return;
}
const account = results[0];
Validação de valores de e-mail:
Se os valores de "email" do contato e "e_mail" da conta não corresponderem exatamente, a validação falhará. Verifique se não há diferenças sutis, como espaços extras, maiúsculas/minúsculas, etc.
Após a validação, você está buscando o primeiro negócio associado ao contato. Caso o negócio associado não seja encontrado, você retorna uma mensagem de erro. No entanto, se o fluxo de trabalho estiver configurado de maneira incorreta, talvez o negócio ainda não tenha sido criado ou associado ao contato de maneira adequada.
Dica adicional:
Caso a lógica de movimentação do negócio ainda não esteja funcionando conforme o esperado, verifique se a pipeline_stage que você está utilizando ("validado") está corretamente configurada no HubSpot para que o negócio seja movido para essa etapa.
Sugestão de alteração no código:
Aqui está uma versão levemente ajustada com base nas sugestões:
Se a minha resposta te ajudou, por gentileza, clique no botão: " Aceitar como solução ". Ainda com dúvidas? Responda a minha postagem para que possamos continuar te ajudando! Obrigado por postar na comunidade da HubSpot! .