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();
|
const novoGrupo = await cadastrarGrupoWhatsApp();
|
||||||
|
|
||||||
if (novoGrupo) {
|
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({
|
toast({
|
||||||
title: 'Grupo registrado com sucesso',
|
title: 'Sucesso',
|
||||||
description: 'Siga as instruções para completar o vínculo',
|
description: successMessage,
|
||||||
variant: 'default',
|
variant: 'default',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -33,18 +33,18 @@ export async function cadastrarGrupoWhatsApp(): Promise<WhatsAppGroup | null> {
|
|||||||
|
|
||||||
console.log('Grupo WhatsApp cadastrado com sucesso:', data);
|
console.log('Grupo WhatsApp cadastrado com sucesso:', data);
|
||||||
|
|
||||||
// Tentativa de clonagem do workflow do n8n
|
// Criar workflow no n8n
|
||||||
try {
|
try {
|
||||||
const grupoId = data[0].remote_jid;
|
const workflowResponse = await createWorkflowInN8n(normalizedEmail);
|
||||||
const result = await cloneN8nWorkflow(normalizedEmail, grupoId);
|
|
||||||
|
|
||||||
if (result && result.workflow_id) {
|
if (workflowResponse && workflowResponse.id) {
|
||||||
await atualizarWorkflowId(data[0].id, result.workflow_id);
|
|
||||||
// Atualizar o objeto data com o workflow_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) {
|
} 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
|
// 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[]> {
|
export async function listarGruposWhatsApp(): Promise<WhatsAppGroup[]> {
|
||||||
try {
|
try {
|
||||||
// Obter o email do usuário do localStorage
|
// Obter o email do usuário do localStorage
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user