fix(chat) correção na api do n8n

This commit is contained in:
Jonas Francisco 2025-11-21 21:35:51 -03:00
parent 56b87aae0a
commit f12be49830

View File

@ -3,7 +3,7 @@
import React, { useState, useRef, useCallback, useEffect } from 'react'; import React, { useState, useRef, useCallback, useEffect } from 'react';
import { Upload, Paperclip, Send, Moon, Sun, X, FileText, ImageIcon, Video, Music, Archive, MessageCircle, Bot, User, Info, Lock, Mic } from 'lucide-react'; import { Upload, Paperclip, Send, Moon, Sun, X, FileText, ImageIcon, Video, Music, Archive, MessageCircle, Bot, User, Info, Lock, Mic } from 'lucide-react';
const API_ENDPOINT = "https://n8n.jonasbomfim.store/webhook/cd7d10e6-bcfc-4f3a-b649-351d12b714f1"; const API_ENDPOINT = "https://n8n.jonasbomfim.store/webhook/zoe2";
const FALLBACK_RESPONSE = "Tive um problema para responder agora. Tente novamente em alguns instantes."; const FALLBACK_RESPONSE = "Tive um problema para responder agora. Tente novamente em alguns instantes.";
const FileUploadChat = ({ onOpenVoice }: { onOpenVoice?: () => void }) => { const FileUploadChat = ({ onOpenVoice }: { onOpenVoice?: () => void }) => {
@ -100,14 +100,35 @@ const FileUploadChat = ({ onOpenVoice }: { onOpenVoice?: () => void }) => {
setUploadedFiles(prev => prev.filter(file => file.id !== fileId)); setUploadedFiles(prev => prev.filter(file => file.id !== fileId));
}; };
const generateAIResponse = useCallback(async (userMessage: string, files: any[]) => { const generateAIResponse = useCallback(
async (userMessage: string, files: any[]) => {
try { try {
const hasAudio = files.some((file) => file.name.toLowerCase().endsWith('.mp3'));
const hasPdf = files.some((file) => file.name.toLowerCase().endsWith('.pdf'));
const formData = new FormData();
// Adiciona mensagem
formData.append("message", userMessage);
// Adiciona arquivos corretamente
files.forEach((file) => {
const ext = file.name.toLowerCase().split('.').pop();
if (ext === 'mp3') {
formData.append("audio", file.file); // nome do campo deve ser 'audio'
} else if (ext === 'pdf') {
formData.append("pdf", file.file); // nome do campo deve ser 'pdf'
}
});
const response = await fetch(API_ENDPOINT, { const response = await fetch(API_ENDPOINT, {
method: "POST", method: "POST",
headers: { body: hasAudio || hasPdf ? formData : JSON.stringify({ message: userMessage }),
headers: hasAudio || hasPdf
? undefined // Quando usar FormData, NÃO definir Content-Type, o navegador define com boundary correto
: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
body: JSON.stringify({ message: userMessage }),
}); });
if (!response.ok) { if (!response.ok) {
@ -131,7 +152,10 @@ const FileUploadChat = ({ onOpenVoice }: { onOpenVoice?: () => void }) => {
console.error("[FileUploadChat] Failed to get API response", error); console.error("[FileUploadChat] Failed to get API response", error);
return FALLBACK_RESPONSE; return FALLBACK_RESPONSE;
} }
}, []); },
[]
);
const sendMessage = useCallback(async () => { const sendMessage = useCallback(async () => {
if (inputValue.trim() || uploadedFiles.length > 0) { if (inputValue.trim() || uploadedFiles.length > 0) {