API de Conversas

Esta documentação fornece detalhes sobre a API de Conversas disponível no Super Agentes. Esta API permite gerenciar, consultar e interagir com as conversas geradas pelos agentes.

Autenticação

Todas as rotas de API requerem autenticação. A autenticação é feita através de um token JWT que deve ser enviado no cabeçalho Authorization da requisição.

Authorization: Bearer {seu_token_jwt}

Endpoints

Esquema

Consulte a documentação do esquema para obter detalhes sobre as propriedades e enumerações relacionadas às conversas.

Enumerações

Status de Conversas

Os status possíveis para uma conversa são:

  • UNRESOLVED: Conversa não resolvida
  • HUMAN_REQUESTED: Intervenção humana solicitada
  • RESOLVED: Conversa resolvida

Canais de Comunicação

Os canais de comunicação disponíveis são:

  • dashboard: Conversa iniciada pelo dashboard
  • whatsapp: Conversa via WhatsApp
  • website: Conversa via widget do site
  • email: Conversa via Email

Prioridades de Conversa

As prioridades possíveis para uma conversa são:

  • LOW: Prioridade baixa
  • MEDIUM: Prioridade média
  • HIGH: Prioridade alta

Avaliações de Mensagem

As avaliações possíveis para uma mensagem são:

  • GOOD: Resposta boa/útil
  • BAD: Resposta ruim/não útil

Origens de Mensagem

As origens possíveis para uma mensagem são:

  • agent: Mensagem enviada pelo agente
  • human: Mensagem enviada por um humano

Exemplos de Uso

Exemplo: Listar Conversas Não Resolvidas

const fetchUnresolvedConversations = async () => {
  const response = await fetch('/api/conversations?status=UNRESOLVED', {
    headers: {
      'Authorization': `Bearer ${token}`
    }
  });
  
  const data = await response.json();
  return data;
};

Exemplo: Enviar Mensagem para uma Conversa

const sendMessage = async (conversationId, text) => {
  const response = await fetch(`/api/conversations/${conversationId}/message`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      message: text,
      from: 'human',
      channel: 'dashboard'
    })
  });
  
  const data = await response.json();
  return data;
};

Exemplo: Marcar Conversa como Resolvida

const resolveConversation = async (conversationId) => {
  const response = await fetch('/api/conversations/update-status', {
    method: 'PATCH',
    headers: {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      conversationId,
      status: 'RESOLVED'
    })
  });
  
  const data = await response.json();
  return data;
};

Exemplo: Exportar Conversa como PDF

const exportConversationAsPDF = async (conversationId) => {
  const response = await fetch(`/api/conversations/export?conversationId=${conversationId}&format=pdf`, {
    headers: {
      'Authorization': `Bearer ${token}`
    }
  });
  
  const blob = await response.blob();
  const url = window.URL.createObjectURL(blob);
  
  // Criar link para download
  const a = document.createElement('a');
  a.href = url;
  a.download = `conversation-${conversationId}.pdf`;
  document.body.appendChild(a);
  a.click();
  window.URL.revokeObjectURL(url);
};

Exemplo: Atribuir Conversa a Usuários

const assignConversation = async (conversationId, assigneeIds) => {
  const response = await fetch(`/api/conversations/${conversationId}`, {
    method: 'PATCH',
    headers: {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      assigneeIds
    })
  });
  
  const data = await response.json();
  return data;
};

Exemplo: Avaliar uma Resposta

const evaluateAnswer = async (messageId, evaluation) => {
  const response = await fetch('/api/conversations/eval-answer', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${token}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      messageId,
      eval: evaluation // 'GOOD' ou 'BAD'
    })
  });
  
  const data = await response.json();
  return data;
};