O fluxo das 14h05, 14h06 e 14h07
- 14h05, app. A Marina contesta a fatura de agosto no seu app. A mensagem fica ligada a
invoice:erp:0823peloobject_refse entra na camada ao vivo em menos de um segundo depois de chegar à API. - 14h06, agente de cobrança. Ele lê
context(object="invoice:erp:0823", view="task:billing", verification="no_customer"), recebe a contestação pelolive, a visita técnica que falhou às 14h02 e o crédito de março no histórico. Lança o crédito de US$ 40 no ERP e registraaction("credit", closes=...). - 14h06, ERP. O ERP emite
invoice.credited. A ação e o evento viram um registro só, e a ação passa dedeclaredparaconfirmed. - 14h07, ligação. O contexto de voz já diz: “Outro agente: crédito de US$ 40 na fatura de agosto, Cobrança, 14h06, confirmado pelo sistema”.
A Niadra nunca executa ação em sistema de registro. Quem age é o seu agente, com as credenciais dele. A Niadra guarda o que ele precisa lembrar e o que ele fez.
Antes de começar: a fonte
Agente interno é uma fonte como qualquer outra, com chave própria, classe de audiênciainternal_agent e uma finalidade como billing. Acesso ao ERP não é acesso à memória: o agente de cobrança lê faturas e contestações, não pendência técnica nem dado de saúde. Três configurações importam aqui:
- Escopo
actna chave (uma chave de agente já vem com ele) e, se você quiser fechar a lista,trusted_action_opsna fonte (aqui["credit"]): as únicas operações que ela pode registrar e cujas ações declaradas fecham pendência antes de o sistema confirmar. Sem a lista, a fonte registra qualquer operação, e as travas do fechamento decidem. O escopotracksozinho nunca registra ação. - Verificação
no_customer, o nível das tarefas sem cliente presente. Fica fora da escala V0 a V4 e só é aceito de fontesinternal_agent. Um contexto montado emno_customernunca vai para o cliente. - Categorias liberadas para
no_customerna política do espaço (no_customer_allowedna categoria): uma tarefa sem cliente lê só o que a política libera para ela. Aqui, a categoriainvoice, com a finalidadebilling. Vale para a fatura no contexto e para as falas recentes sobre ela emlive: a contestação das 14h05 citainvoice:erp:0823e fica na categoriainvoice.
act vem na chave e o teto no_customer na fonte, os dois escolhidos no Console ou pela API de controle; a lista trusted_action_ops entra na criação da fonte, no campo “Operações confiáveis” do Console ou pela API de controle. A fonte de cobrança criada no cadastro do espaço confia só em credit: qualquer outra operação que ela registre volta com operation_not_allowed (403) e não é gravada. Ao criar a fonte de um agente, declare toda operação que ele executa.
Passo a passo
1. Abra uma tarefa centrada na fatura
A tarefa faz, para o agente interno, o papel que a conversa faz para o de atendimento: fixa o contexto, delimita o cache do SDK, agrupa os eventos para a cobrança e fecha comtask.ended. Sem ela, o servidor fecha a tarefa depois de 3 minutos sem eventos, e um evento da mesma tarefa em até 10 minutos a reabre; a cada reabertura a espera dobra, até os 10 minutos.
A view task:billing é definida pelo seu espaço como template mais política. Ela prioriza os objetos do tipo da tarefa, as pendências ligadas a eles e o que foi dito sobre eles nas conversas, e deixa de fora o que a finalidade de cobrança não permite.
context(object=...) chega da fatura ao dono dela e devolve o contexto centrado nela: a linha do tempo do objeto mais o contexto do cliente que a tarefa pede. Valem as mesmas regras da conversa: fixado por tarefa, com ETag e comprovante da leitura. A leitura centrada num objeto é compilada na hora, sem modelo de linguagem no caminho. Uma leitura por objeto ou por id de perfil, como toda leitura de agente interno, vê só os itens que chegaram por handles confirmados: o que veio por um vínculo não confirmado fica fora até uma pessoa ou um sistema de registro confirmar.
2. Aja no ERP e depois registre a ação
Lance o crédito pela sua integração com o ERP. Depois registre a ação comcloses, a pendência que ela cumpre. Informe pelo id, ou pelo objeto e pela operação canônica que a pendência espera, que é o que você costuma saber: o crédito na fatura 0823.
corrects_action_id apontando para a anterior. Ela só conta quando as duas ações vieram da mesma fonte: a de outra fonte (outro fornecedor) fica no registro e no contexto.
3. Deixe o sistema de registro confirmar
A ação ficadeclared até um evento do sistema de registro confirmar. Mande os eventos do ERP pelo webhook genérico ou como eventos de sistema. Quando invoice.credited chega para o mesmo objeto e a mesma operação dentro da janela, os dois viram um registro só e a ação fica confirmed; assim o crédito nunca é contado duas vezes.
Ação
declared fecha pendência quando a fonte confia na operação dela (sem lista, confia em todas; com lista, só nas da lista); ação confirmed sempre fecha. As regras de fechamento estão em Sistemas.
4. Entenda o fechamento retroativo
A ação pode chegar antes de a pendência existir. A contestação escrita no app às 14h05 só vira pendência quando a sessão do app fecha e é extraída, digamos às 14h35, e o agente de cobrança agiu às 14h06. Ao criar a pendência, a Niadra procura ações de agentes já aplicadas ao mesmo objeto e à mesma operação dentro da janela. Se houver, a pendência já nasceresolved, apontando para a ação que a fechou.
5. Deixe os outros agentes saberem
Todo agente que ler esta cliente em seguida vê a ação em “Outro agente”, com a fonte e a hora. Se o seu CRM precisa mostrar o desfecho, assine os webhooksaction.recorded e open_item.closed e grave lá pela sua integração. Veja Gatilhos e webhooks.
Um assistente que conversa com a equipe
Uma fonte interna também serve um assistente que conversa com alguém da sua empresa, como o advogado que pede uma peça. Nomeie essa pessoa pelo id que o seu sistema dá a ela, comstaff("rh", "U-17") em Python ou handles.staff("U-17", "rh") em TypeScript: a conversa fica interna, o agente lê o que a equipe pode ler, e o que a pessoa diz vale como a palavra da empresa, marcada “(equipe)” nas linhas. Uma conversa com qualquer outra pessoa, ou com alguém nomeado por telefone ou e-mail, é lida como voltada ao cliente, seja qual for a chave: na dúvida, a Niadra aperta. Uma tarefa sem conversa continua interna.
Quando a equipe desfaz uma correção
Agentes retiram e corrigem fatos porfeedback(); agentes nunca desfazem o que a empresa retirou. Se uma retratação ou uma correção foi um erro, uma pessoa com o papel security a desfaz com POST /v1/facts/{fact_id}/restore: o fato volta como era, com o valor, a validade, a evidência e a confiança que tinha, confirmado pela última vez na hora da restauração; a correção que o substituiu é retratada e recebe a aresta supersedes inversa; o slot é fixado de novo só sobre as linhas confirmadas; o histórico do fato guarda cada passo. A rota responde 202 e vira um evento feedback.restore_fact da fonte de governança, que a memória aplica em segundos, com um comprovante admin (memory.restore_fact); o webhook fact.restored avisa os endpoints assinados, ao lado de fact.added e fact.retracted. Um fato que um apagamento levou não existe mais: a rota responde 404, porque só os eventos do cliente sustentam um fato e as menções de feedback da empresa nunca o seguram. Recusa com 409, na hora e de novo quando a memória a aplica: um fato que não está retratado, um que veio por um vínculo não confirmado, um que a consolidação fundiu em outro e uma correção que a restauração do fato original desfez (undone: corrija o fato de novo). O próximo contexto de qualquer agente volta a trazer o item.
Delta para trabalho recorrente
Agentes internos voltam muito aos mesmos clientes. Peça comdelta=True (delta: true) e a resposta traz só o que mudou desde a última leitura desta fonte na mesma tarefa; as leituras sem task_id dividem uma base só. “O que mudou desde a última vez que VOCÊ olhou” custa dezenas de tokens.
Próximos passos
Sistemas, objetos e ações
objetos, estado derivado e ações em detalhe.
Webhooks dos seus sistemas
como o
invoice.credited entra.Agentes de voz
a ligação que já sabe do crédito.
Aproveitamento do contexto
como a ação conta como uso do contexto.

