+
@@ -43,8 +70,7 @@
const id = name + '_Web';
const company = 'Domvs iT';
const baseUrl = window.location.origin;
-
- var token = '';
+ var token = '@ViewBag.Token';
// Aguarda todos os recursos serem carregados
window.addEventListener('load', async function () {
@@ -52,14 +78,18 @@
const chatMessages = $('#chat-messages');
const messageInput = $('#message-input');
const chatForm = $('#chat-form');
+ const fileInput = $('#file-input');
+ const selectedFilesInfo = $('#selected-files-info');
+ let selectedFiles = [];
//token = await autenticar(id, company, name);
- token = '@ViewBag.Token';
- // Configuração do Marked
- marked.setOptions({
- breaks: true,
- gfm: true
- });
+ //token = '@ViewBag.Token';
+
+ // // Configuração do Marked
+ // marked.setOptions({
+ // breaks: true,
+ // gfm: true
+ // });
const msgInit = `Olá! Eu sou uma IA desenvolvida para atuar internamente na Domvs iT. Você pode:
- Fazer perguntas sobre os serviços da Domvs iT
@@ -134,58 +164,75 @@ seu código
// Exibe mensagem inicial
appendMessage(msgInit, false);
- $('#send-message').on('click', function (e) {
+ // Arquivo handling
+ fileInput.on('change', function (e) {
+ const files = Array.from(e.target.files);
+
+ if (files.length > 2) {
+ alert('Por favor, selecione no máximo 2 arquivos PDF/PNG.');
+ fileInput.val('');
+ selectedFiles = [];
+ selectedFilesInfo.html('');
+ return;
+ }
+
+ if (files.some(file => file.type !== 'application/pdf' && file.type !== 'image/png')) {
+ alert('Por favor, selecione apenas arquivos PDF/PNG.');
+ fileInput.val('');
+ selectedFiles = [];
+ selectedFilesInfo.html('');
+ return;
+ }
+
+ selectedFiles = files;
+ selectedFilesInfo.html(
+ files.map(file => `
${file.name}
`).join('')
+ );
+ });
+
+ // Send message handling
+ $('#send-message').on('click', async function (e) {
e.preventDefault();
const message = messageInput.val().trim();
if (!message) return;
+
+ const formData = new FormData();
+ formData.append('message', message);
+ formData.append('sessionId', id);
+
+ selectedFiles.forEach((file, index) => {
+ formData.append(`file${index + 1}`, file);
+ });
+
appendMessage(message);
messageInput.val('');
- $.ajax({
- url: baseUrl + '/chat/proxy-response', // Novo endpoint no controller
- type: 'GET',
- headers: {
- "X-CSRF-TOKEN": $('input[name="__RequestVerificationToken"]').val(),
- 'Authorization': 'Bearer ' + token
- },
- data: {
- sessionId: id,
- message: message
- },
- success: function (response) {
- appendMessage(response, false);
- },
- error: function (xhr, status, error) {
- console.error('Erro na requisição do cliente:', error);
- console.error('Status:', xhr.status);
- console.error('Response:', xhr.responseText);
- appendMessage('Erro ao processar cliente: ' + error, false);
- }
- });
- });
+ fileInput.val('');
+ selectedFiles = [];
+ selectedFilesInfo.html('');
- async function autenticar(userId, company, name) {
try {
- // Agora fazemos apenas uma requisição para o novo endpoint
- const response = await $.ajax({
- url: baseUrl + '/chat/authenticate',
- type: 'POST',
+ const response = await fetch(baseUrl + '/chat/proxy-response', {
+ method: 'POST',
headers: {
- "X-CSRF-TOKEN": $('input[name="__RequestVerificationToken"]').val()
- },
- contentType: 'application/json',
- data: JSON.stringify({
- userId: userId,
- company: company,
- name: name
- })
+ "X-CSRF-TOKEN": $('input[name="__RequestVerificationToken"]').val(),
+ 'Authorization': 'Bearer ' + token,
+ 'X-Requested-With': 'XMLHttpRequest'
+ },
+ body: formData
});
- return response.token;
- } catch (error) {
- appendMessage('Erro ao processar mensagem: ' + error, false);
- throw error;
- }
- }
+ if (!response.ok) {
+ throw new Error('Erro na requisição');
+ }
+
+ const responseText = await response.text();
+ appendMessage(responseText, false);
+ } catch (error) {
+ console.error('Erro na requisição:', error);
+ appendMessage('Erro ao processar mensagem: ' + error, false);
+ }
+ });
+
});