Conversa

7 funções do TermoAI para conversa.

// npm install termo_core --save-exact
import * as ai from "termo_core/ai";
// ou: import { ai } from "termo_core";
FunçãoRotaO que faz
buscar_paginador_conversaGET /conversaLista as conversas paginadas
criar_conversaPOST /conversaAbre uma conversa vazia
buscar_auto_complete_conversaGET /conversa/autocompleteLista básica de conversas para seleção
buscar_pelo_filtro_conversaGET /conversa/filtroBusca conversas por filtro
buscar_pelo_id_conversaGET /conversa/{id}Busca uma conversa pelo id, com as mensagens
atualizar_pelo_id_conversaPATCH /conversa/{id}Atualiza o título, a IA ou a instrução de uma conversa
deletar_pelo_id_conversaDELETE /conversa/{id}Exclui uma conversa pelo id

buscar_paginador_conversa

GET/conversa Exige credencial

Lista as conversas paginadas

Exige qualquer permissão da área conversas (qualquer ação liberada na área já libera a leitura). Lista o resumo (sem as mensagens, com a quantidade delas) das conversas não excluídas, da atualizada mais recentemente para a mais antiga. pagina começa em 1 (padrão 1) e tamanho tem padrão 20, sem máximo; valores menores que 1 viram 1. total é a quantidade de conversas não excluídas.

function buscar_paginador_conversa(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeBuscarPaginadorConversa = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaConversaResumo>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_paginador_conversa } from "termo_core/ai";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_paginador_conversa(credencial_de_acesso, { pagina: 1 });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.PaginaConversaResumo> · Rust: Result<tipos::PaginaConversaResumo, ErroAoChamarServico> · veja PaginaConversaResumo.

criar_conversa

POST/conversa Exige credencial

Abre uma conversa vazia

Exige a permissão criar da área conversas. Abre uma conversa de quem chama, com origem painel e sem mensagens; as mensagens entram pelo POST /gateway com o conversa_id. categoria é obrigatória (texto_para_texto, imagem_para_texto, texto_para_imagem, audio_para_texto, texto_para_audio, video_para_texto ou texto_para_video). provedor fixa uma IA que atenda a categoria (por exemplo gemini); vazio ou ausente deixa o gateway escolher. instrucao vai até 4000 caracteres e titulo até 120 (vazio vira "Nova conversa").

function criar_conversa(
  credencial_de_acesso: CredencialDeAcesso,
  corpo_da_requisicao: tipos.ConversaCriar,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Conversa>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { criar_conversa } from "termo_core/ai";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await criar_conversa(credencial_de_acesso, corpo_da_requisicao);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.Conversa> · Rust: Result<tipos::Conversa, ErroAoChamarServico> · veja Conversa.

buscar_auto_complete_conversa

GET/conversa/autocomplete Exige credencial

Lista básica de conversas para seleção

Exige qualquer permissão da área conversas (qualquer ação liberada na área já libera a leitura). Devolve só id e título, em ordem alfabética do título, sem as excluídas. busca procura o trecho no título, sem diferenciar maiúsculas. pagina começa em 1 (padrão 1) e tamanho tem padrão 10.

function buscar_auto_complete_conversa(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeBuscarAutoCompleteConversa = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaConversaAutoComplete>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_auto_complete_conversa } from "termo_core/ai";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_auto_complete_conversa(credencial_de_acesso, { busca: "..." });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.PaginaConversaAutoComplete> · Rust: Result<tipos::PaginaConversaAutoComplete, ErroAoChamarServico> · veja PaginaConversaAutoComplete.

buscar_pelo_filtro_conversa

GET/conversa/filtro Exige credencial

Busca conversas por filtro

Exige qualquer permissão da área conversas (qualquer ação liberada na área já libera a leitura). Devolve o resumo (sem as mensagens, com a quantidade delas) de no máximo 200 conversas não excluídas, da atualizada mais recentemente para a mais antiga, sem paginação. busca procura o trecho no título ou no e-mail de quem abriu, sem diferenciar maiúsculas. categoria, provedor (id da IA) e origem (painel ou api) precisam ser iguais.

function buscar_pelo_filtro_conversa(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeBuscarPeloFiltroConversa = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Array<tipos.ConversaResumo>>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_filtro_conversa } from "termo_core/ai";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_filtro_conversa(credencial_de_acesso, { busca: "..." });

Argumentos

Nome

Tipo

Retorno: Promise<Array<tipos.ConversaResumo>> · Rust: Result<Vec<tipos::ConversaResumo>, ErroAoChamarServico>

buscar_pelo_id_conversa

GET/conversa/{id} Exige credencial

Busca uma conversa pelo id, com as mensagens

Exige qualquer permissão da área conversas (qualquer ação liberada na área já libera a leitura); as conversas não são filtradas por pessoa. Devolve a conversa inteira: título, categoria, IA fixada, instrução, origem (painel ou api), e-mail de quem abriu e as mensagens em ordem (papel usuario ou assistente, texto, arquivo guardado no TermoBucket com arquivo_id e url de download assinada por 15 minutos (sem o TermoBucket, em base64 quando tem até 5 MB), IA, modelo, apelido da chave, erro, duração e tentativas que falharam). Conversa excluída não é encontrada.

function buscar_pelo_id_conversa(
  credencial_de_acesso: CredencialDeAcesso,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Conversa>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_id_conversa } from "termo_core/ai";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_id_conversa(credencial_de_acesso, id);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.Conversa> · Rust: Result<tipos::Conversa, ErroAoChamarServico> · veja Conversa.

atualizar_pelo_id_conversa

PATCH/conversa/{id} Exige credencial

Atualiza o título, a IA ou a instrução de uma conversa

Exige a permissão editar da área conversas. Atualização parcial: só os campos enviados mudam; categoria e mensagens não mudam por aqui. titulo vai até 120 caracteres (vazio vira "Nova conversa"). provedor precisa atender a categoria da conversa; texto vazio volta à escolha automática do gateway. instrucao vai até 4000 caracteres; texto vazio apaga a instrução.

function atualizar_pelo_id_conversa(
  credencial_de_acesso: CredencialDeAcesso,
  id: string,
  corpo_da_requisicao: tipos.ConversaAtualizar,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Conversa>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { atualizar_pelo_id_conversa } from "termo_core/ai";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await atualizar_pelo_id_conversa(credencial_de_acesso, id, corpo_da_requisicao);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.Conversa> · Rust: Result<tipos::Conversa, ErroAoChamarServico> · veja Conversa.

deletar_pelo_id_conversa

DELETE/conversa/{id} Exige credencial

Exclui uma conversa pelo id

Exige a permissão deletar da área conversas. Exclusão lógica: a conversa sai das leituras e não recebe mais mensagens pelo gateway. Excluir de novo responde 404.

function deletar_pelo_id_conversa(
  credencial_de_acesso: CredencialDeAcesso,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { deletar_pelo_id_conversa } from "termo_core/ai";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
await deletar_pelo_id_conversa(credencial_de_acesso, id);

Argumentos

Nome

Tipo

Retorno: Promise<void> · Rust: Result<(), ErroAoChamarServico> · sem corpo na resposta.

Tipos

Tipos usados pelas funções desta página. O nome é o mesmo nos dois pacotes.

ArquivoDaMensagem

import type { ArquivoDaMensagem } from "termo_core/ai";

export interface ArquivoDaMensagem {
  arquivo_id?: string | null;
  base64?: string | null;
  nome?: string | null;
  tamanho?: number | null;
  tipo_mime: string;
  url?: string | null;
}

ChamadaDaMensagem

import type { ChamadaDaMensagem } from "termo_core/ai";

export interface ChamadaDaMensagem {
  argumentos?: unknown;
  id: string;
  nome: string;
}

Conversa

import type { Conversa } from "termo_core/ai";

export interface Conversa {
  aplicativo?: string | null;
  atualizado_em: string;
  categoria: string;
  criado_em: string;
  email?: string | null;
  id: string;
  instrucao?: string | null;
  mensagens: Array<MensagemDaConversa>;
  origem: string;
  provedor?: string | null;
  titulo: string;
}

ConversaAtualizar

import type { ConversaAtualizar } from "termo_core/ai";

export interface ConversaAtualizar {
  instrucao?: string | null;
  provedor?: string | null;
  titulo?: string | null;
}

ConversaCriar

import type { ConversaCriar } from "termo_core/ai";

export interface ConversaCriar {
  categoria: string;
  instrucao?: string | null;
  provedor?: string | null;
  titulo?: string | null;
}

ConversaResumo

import type { ConversaResumo } from "termo_core/ai";

export interface ConversaResumo {
  aplicativo?: string | null;
  atualizado_em: string;
  categoria: string;
  criado_em: string;
  email?: string | null;
  id: string;
  origem: string;
  provedor?: string | null;
  quantidade_mensagens: number;
  titulo: string;
}

MensagemDaConversa

import type { MensagemDaConversa } from "termo_core/ai";

export interface MensagemDaConversa {
  arquivo?: ArquivoDaMensagem | null;
  chamadas_de_ferramenta?: Array<ChamadaDaMensagem>;
  chave?: string | null;
  criado_em: string;
  duracao_ms?: number | null;
  erro?: string | null;
  modelo?: string | null;
  papel: string;
  provedor?: string | null;
  tentativas?: Array<TentativaDaMensagem>;
  texto?: string | null;
}

PaginaConversaAutoComplete

import type { PaginaConversaAutoComplete } from "termo_core/ai";

export interface PaginaConversaAutoComplete {
  itens: Array<PaginaConversaAutoCompleteItensItem>;
  pagina: number;
  tamanho: number;
  total: number;
}

PaginaConversaAutoCompleteItensItem

import type { PaginaConversaAutoCompleteItensItem } from "termo_core/ai";

export interface PaginaConversaAutoCompleteItensItem {
  id: string;
  titulo: string;
}

PaginaConversaResumo

import type { PaginaConversaResumo } from "termo_core/ai";

export interface PaginaConversaResumo {
  itens: Array<PaginaConversaResumoItensItem>;
  pagina: number;
  tamanho: number;
  total: number;
}

PaginaConversaResumoItensItem

import type { PaginaConversaResumoItensItem } from "termo_core/ai";

export interface PaginaConversaResumoItensItem {
  aplicativo?: string | null;
  atualizado_em: string;
  categoria: string;
  criado_em: string;
  email?: string | null;
  id: string;
  origem: string;
  provedor?: string | null;
  quantidade_mensagens: number;
  titulo: string;
}

TentativaDaMensagem

import type { TentativaDaMensagem } from "termo_core/ai";

export interface TentativaDaMensagem {
  chave: string;
  duracao_ms: number;
  erro: string;
  modelo: string;
  provedor: string;
}

Nesta página