feat: Create n8n workflow on group registration
Implement n8n API call to create an empty workflow when a new WhatsApp group is registered. Save the returned workflow ID to the Supabase record upon successful creation. Display success message to the user.
This commit is contained in:
parent
4f84ab9a9f
commit
edccfbde36
@ -61,9 +61,17 @@ const GruposWhatsApp = () => {
|
||||
const novoGrupo = await cadastrarGrupoWhatsApp();
|
||||
|
||||
if (novoGrupo) {
|
||||
let successMessage = 'Grupo registrado com sucesso';
|
||||
|
||||
if (novoGrupo.workflow_id) {
|
||||
successMessage += '. Workflow criado com sucesso no n8n!';
|
||||
} else {
|
||||
successMessage += '. Siga as instruções para completar o vínculo';
|
||||
}
|
||||
|
||||
toast({
|
||||
title: 'Grupo registrado com sucesso',
|
||||
description: 'Siga as instruções para completar o vínculo',
|
||||
title: 'Sucesso',
|
||||
description: successMessage,
|
||||
variant: 'default',
|
||||
});
|
||||
|
||||
|
||||
@ -33,18 +33,18 @@ export async function cadastrarGrupoWhatsApp(): Promise<WhatsAppGroup | null> {
|
||||
|
||||
console.log('Grupo WhatsApp cadastrado com sucesso:', data);
|
||||
|
||||
// Tentativa de clonagem do workflow do n8n
|
||||
// Criar workflow no n8n
|
||||
try {
|
||||
const grupoId = data[0].remote_jid;
|
||||
const result = await cloneN8nWorkflow(normalizedEmail, grupoId);
|
||||
const workflowResponse = await createWorkflowInN8n(normalizedEmail);
|
||||
|
||||
if (result && result.workflow_id) {
|
||||
await atualizarWorkflowId(data[0].id, result.workflow_id);
|
||||
if (workflowResponse && workflowResponse.id) {
|
||||
// Atualizar o objeto data com o workflow_id
|
||||
data[0].workflow_id = result.workflow_id;
|
||||
await atualizarWorkflowId(data[0].id, workflowResponse.id);
|
||||
data[0].workflow_id = workflowResponse.id;
|
||||
console.log('Workflow criado com sucesso no n8n:', workflowResponse.id);
|
||||
}
|
||||
} catch (n8nError) {
|
||||
console.error('Erro ao clonar workflow do n8n:', n8nError);
|
||||
console.error('Erro ao criar workflow no n8n:', n8nError);
|
||||
// Não impede a criação do grupo, apenas não adiciona o workflow_id
|
||||
}
|
||||
|
||||
@ -55,6 +55,39 @@ export async function cadastrarGrupoWhatsApp(): Promise<WhatsAppGroup | null> {
|
||||
}
|
||||
}
|
||||
|
||||
// Função para criar um workflow no n8n
|
||||
async function createWorkflowInN8n(email: string): Promise<{ id: string } | null> {
|
||||
try {
|
||||
console.log(`Criando workflow no n8n para o email: ${email}`);
|
||||
|
||||
const response = await fetch('https://n8n.innova1001.com.br/api/v1/workflows', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-N8N-API-KEY': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2YmM4MjQxOS0zZTk1LTRiYmMtODMwMy0xODAzZjk4YmQ4YjciLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzQ3NzM0NzYyLCJleHAiOjE3NTAzMDIwMDB9.Evr_o42xLJPq1c2p5SUWo00IY85WXp8s_nqSy64V-is',
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
name: `Workflow Home Finance - ${email}`,
|
||||
nodes: [],
|
||||
connections: {},
|
||||
settings: {}
|
||||
})
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`Erro ao criar workflow: ${response.statusText}`);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
console.log('Resposta da criação de workflow:', data);
|
||||
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.error('Erro na requisição de criação de workflow:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
export async function listarGruposWhatsApp(): Promise<WhatsAppGroup[]> {
|
||||
try {
|
||||
// Obter o email do usuário do localStorage
|
||||
|
||||
Loading…
Reference in New Issue
Block a user