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ção | Rota | O que faz |
|---|---|---|
buscar_paginador_conversa | GET /conversa | Lista as conversas paginadas |
criar_conversa | POST /conversa | Abre uma conversa vazia |
buscar_auto_complete_conversa | GET /conversa/autocomplete | Lista básica de conversas para seleção |
buscar_pelo_filtro_conversa | GET /conversa/filtro | Busca conversas por filtro |
buscar_pelo_id_conversa | GET /conversa/{id} | Busca uma conversa pelo id, com as mensagens |
atualizar_pelo_id_conversa | PATCH /conversa/{id} | Atualiza o título, a IA ou a instrução de uma conversa |
deletar_pelo_id_conversa | DELETE /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>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>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>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>>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>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>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>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;
}