O endpoint Tolky Reasoning é o coração da nossa API de processamento de linguagem natural. Ele permite que você integre a inteligência do Tolky em suas aplicações, mantendo o contexto das conversas e oferecendo respostas personalizadas e naturais.


📑 Índice


🎯 Visão Geral

O endpoint Tolky Reasoning é responsável por:


🔑 Autenticação

Para utilizar o endpoint, é necessário incluir um token de autenticação no header da requisição:

Authorization: Bearer {seu-token-de-acesso}

⚙️ Parâmetros da Requisição

📋 Parâmetros Obrigatórios

ParâmetroTipoDescrição
hostIdstring (UUID)Identificador único do host
conversationIdstring (UUID)Identificador único da conversa

🔧 Parâmetros Opcionais

ParâmetroTipoDescrição
hostSlugstringSlug do host para identificação amigável
questionstring | nullPergunta ou comando para processamento (pode ser null em casos de rebounce)
originalDialoguearrayHistórico do diálogo
contextDatastringDados contextuais adicionais
dialogueInsertStringstringTexto para inserção no diálogo
subSlugstringSub-slug do host
reasoningConfigobjectConfigurações de processamento
userDataobjectDados do usuário
globalDataobjectDados globais adicionais
  • ⚙️ reasoningConfig

  • 👤 userData

{
 "mediaInstructions": "string",
 "rebounce": boolean,
 "rebounceInstructions": string,
 "returnDialogue": boolean,
 "tolkyCompleteLog": boolean
}

📦 Estrutura da Resposta

A resposta da API segue o seguinte formato:

{
  "code": 200,
  "message": "Success",
  "data": {
     "assistantResponse": {
       "string": "Resposta do assistente",
       "wppParsed": {},
       "isAudio": false,
       "mediaDescriptionArray": []
     },
    "tokensControl": [
      {
        "model": "string",
        "tokens": number
      }
    ],
    "sessionId": "string",
    "conversationId": "string",
    "hostId": "string",
    "tickets": {
      "ticketId": "string",
      "ticketDescription": "string"
    },
    "userId": "string",
    "leadId": "string",
    "askHumanHelp": boolean,
    "jsonArray": [],
    "agentsLog": [],
    "restStatus": [],
    "conversation": [],
    "question": "string",
    "tolkyCompleteLog": [],
     "mcp": {
       "status": null,
       "connections": [],
       "available_tools": [],
       "chosen_tools": [],
       "results": [],
       "error": null
     },
    "recap": {},
    "contact": {},
    "ticket": {},
    "createdMessageIds": [
      "uuid-da-mensagem-1",
      "uuid-da-mensagem-2"
    ],
    "requestControlId": "string"
  }
}

📝 Campos da Resposta

CampoTipoDescrição
assistantResponseobjectResposta do assistente contendo texto, versão formatada para WhatsApp e informação sobre áudio
assistantResponse.mediaDescriptionArrayarrayLista de descrições de mídias geradas nesta resposta
tokensControlarrayInformações sobre o consumo de tokens por modelo utilizado
sessionIdstringIdentificador único da sessão
conversationIdstringIdentificador único da conversa
hostIdstringIdentificador único do host
ticketsobjectInformações sobre tickets relacionados
userIdstringIdentificador do usuário
leadIdstringIdentificador do lead
askHumanHelpbooleanIndica se foi solicitada ajuda humana
jsonArrayarrayArray com dados estruturados de processamento
agentsLogarrayLog das atividades dos agentes durante o processamento
restStatusarrayStatus de chamadas REST realizadas
conversationarrayHistórico completo da conversa (se solicitado)
questionstringPergunta original processada
tolkyCompleteLogarrayLog completo do processamento (se solicitado)
mcpobjectInformações MCP: status, connections, available_tools (apenas com log completo), chosen_tools, results, error
recapobjectResumo do processamento
contactobjectDados do contato associado
ticketobjectDados do ticket atual
createdMessageIdsarrayNOVO: Array de UUIDs das mensagens criadas durante o processo de reasoning
requestControlIdstringNOVO: ID de controle da requisição para rastreamento e auditoria

🔄 Processamento de Markdown

O campo wppParsed na resposta é o resultado do processamento do campo string através do markdownParser. Este parser converte o texto markdown em um array de objetos estruturados para exibição no WhatsApp, com suporte aos seguintes tipos de conteúdo:

Tipos de Conteúdo Suportados

  1. Texto (type: "text")

    • Conteúdo de texto simples
    • Suporte a formatação em negrito usando *texto*
    • Títulos são convertidos para texto em negrito
  2. Imagens (type: "image")

    • Suporta imagens em formatos: jpg, jpeg, png, gif, webp
    • Sintaxe markdown: ![descrição](url-da-imagem)
    • Inclui descrição e URL da imagem
  3. Links (type: "site")

    • Links para sites web
    • Sintaxe markdown: [descrição](url)
    • Inclui descrição e URL do link
  4. Áudio (type: "audio")

    • Suporta formatos: mp3, wav, ogg
    • Sintaxe markdown: [descrição](url-do-audio)
    • Inclui descrição e URL do áudio
  5. Boleto (type: "boleto")

    • Detecta automaticamente linhas digitáveis de boletos
    • Formato: 47 ou 48 dígitos com espaços/pontos
  6. PIX (type: "pix")

    • Detecta automaticamente códigos PIX Copia e Cola
    • Formato: começa com “000201” e termina com CRC16

Funcionalidades do Parser

O parser também:

  • Normaliza quebras de linha e URLs
  • Mantém a formatação de parágrafos
  • Preserva a estrutura de bullets e listas numeradas
  • Trata URLs “soltas” no texto
  • Converte formatação markdown para o formato aceito pelo WhatsApp

Exemplo de Resposta com wppParsed

{
  "assistantResponse": {
    "string": "Olá! Aqui está sua fatura: ![Fatura](https://exemplo.com/fatura.jpg)\n\nPara pagar, você pode usar o PIX: 000201...6304ABCD\n\nOu o boleto: 12345.67890 12345.678901 12345.678901 1 12345678901234",
    "wppParsed": [
      {
        "type": "text",
        "content": "Olá! Aqui está sua fatura:"
      },
      {
        "type": "image",
        "content": "https://exemplo.com/fatura.jpg",
        "url": "https://exemplo.com/fatura.jpg",
        "description": "Fatura"
      },
      {
        "type": "text",
        "content": "Para pagar, você pode usar o PIX:"
      },
      {
        "type": "pix",
        "content": "000201...6304ABCD"
      },
      {
        "type": "text",
        "content": "Ou o boleto:"
      },
      {
        "type": "boleto",
        "content": "12345.67890 12345.678901 12345.678901 1 12345678901234"
      }
    ],
    "isAudio": false
  }
}

💡 Exemplos de Uso

  • 📤 Requisição Básica

  • 📤 Requisição com reasoningConfig

  • 📥 Resposta

curl -X POST \
  '{BASE_URL}/api/externalAPIs/public/tolkyReasoning/callReasoning' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {seu-token}' \
  -d '{
    "hostId": "uuid-do-host",
    "conversationId": "uuid-da-conversa",
    "question": "Sua pergunta aqui",
    "originalDialogue": [],
    "contextData": "Dados de contexto",
    "userData": {
      "userName": "Nome do Usuário",
      "email": "usuario@email.com"
    }
  }'

⚠️ Tratamento de Erros

⏱️ Timeout

Todas as requisições têm um timeout de 60 segundos. Se a requisição exceder este limite, será retornado um erro 408 (Request Timeout).


✨ Boas Práticas

🔄 Endpoints Relacionados

Criar ID de Conversa

Cria um novo ID de conversa para o processamento do Tolky Reasoning.

Endpoint: POST /api/externalAPIs/public/createConversationId

Ver documentação completa

Listar Agentes

Retorna informações sobre os agentes disponíveis para um host específico.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/agents/list

Ver documentação completa

Obter Templates de Fluxo Padrão

Retorna os templates de fluxo padrão disponíveis no sistema.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/decisions/listDefaultChains

Ver documentação completa

Listar Fluxos

Retorna informações sobre os fluxos de um host específico.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/decisions/list

Ver documentação completa

Salvar Fluxo

Salva um novo fluxo ou edita um fluxo existente.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/decisions/save

Ver documentação completa

Listar Modelos

Retorna informações sobre os modelos disponíveis para processamento.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/decisions/listModels

Ver documentação completa

Criar Chunk

Cria um novo chunk de conversa para processamento.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/createChunkHelper

Ver documentação completa

Editar Chunk

Edita um chunk de conversa existente.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/chunks/create

Ver documentação completa

Ler Chunks

Retorna os chunks de uma conversa específica.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/chunks/list

Ver documentação completa

Criar Sub-avatar

Cria um novo sub-avatar para personalização de respostas.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/avatars/create

Ver documentação completa

Listar Avatares

Retorna informações sobre os avatares disponíveis.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/avatars/list

Ver documentação completa

Obter Informações da Conversa

Retorna informações detalhadas sobre uma conversa específica.

Endpoint: POST /api/externalAPIs/public/tolkyReasoning/conversations/info

Ver documentação completa