@lionchat/mcp-server 1.32.0 → 1.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +1 -0
- package/dist/client.js +24 -0
- package/dist/client.js.map +1 -1
- package/dist/docs/instructions.md +25 -4
- package/dist/docs/resources/agenda-multiplas-unidades.md +39 -1
- package/dist/docs/resources/api-conventions.md +27 -0
- package/dist/docs/resources/assinatura-eletronica.md +135 -10
- package/dist/docs/resources/best-practices.md +32 -10
- package/dist/docs/resources/data-model.md +1 -1
- package/dist/docs/resources/filtros-e-relatorios.md +25 -7
- package/dist/docs/resources/flowbuilder-design-guide.md +63 -15
- package/dist/docs/resources/formularios-publicos.md +3 -2
- package/dist/docs/resources/glossary.md +9 -0
- package/dist/docs/resources/kanban-deep-dive.md +129 -15
- package/dist/docs/resources/reports-guide.md +37 -7
- package/dist/docs/resources/troubleshooting.md +2 -2
- package/dist/tools.js +68 -22
- package/dist/tools.js.map +1 -1
- package/endpoints.json +889 -111
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
package/dist/client.js
CHANGED
|
@@ -95,12 +95,27 @@ function sleep(ms) {
|
|
|
95
95
|
// - Array with meta/payload pagination -> PaginatedResponse
|
|
96
96
|
// - Plain array -> { data: [...] }
|
|
97
97
|
// - Single object -> returned as-is
|
|
98
|
+
// AIDEV-NOTE: [ligar-com-ia-agente-errado 30/10] so e paginacao se o meta trouxer ALGUM dado de paginacao. Sem
|
|
99
|
+
// nenhum (agentes de ligacao: so dial_inboxes; mensagens: etiquetas/contato, paginam por before_id), dizer
|
|
100
|
+
// "tem mais pagina" manda a IA atras de uma pagina 2 que nao existe. Lista sem total MAS com pagina continua
|
|
101
|
+
// "ate esvaziar" (fix 18/07). Mesma lista no remoto (runner.ts#attachPagination).
|
|
102
|
+
const PAGINATION_KEYS = ['all_count', 'count', 'total_count', 'total', 'current_page', 'page', 'per', 'total_pages'];
|
|
103
|
+
// Numero OU texto so de digitos: artigos mandam current_page como texto ("2") quando a pagina vem na URL.
|
|
104
|
+
function hasPaginationKey(meta) {
|
|
105
|
+
return PAGINATION_KEYS.some((key) => {
|
|
106
|
+
const value = meta[key];
|
|
107
|
+
return typeof value === 'number' || (typeof value === 'string' && /^\d+$/.test(value));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
98
110
|
function normalizeResponse(body) {
|
|
99
111
|
if (body && typeof body === 'object' && !Array.isArray(body)) {
|
|
100
112
|
const obj = body;
|
|
101
113
|
// AIDEV-NOTE: Chatwoot pagination format: { payload: [...], meta: { count|all_count, current_page } }
|
|
102
114
|
if (Array.isArray(obj.payload) && obj.meta && typeof obj.meta === 'object') {
|
|
103
115
|
const meta = obj.meta;
|
|
116
|
+
if (!hasPaginationKey(meta)) {
|
|
117
|
+
return { data: obj.payload, meta };
|
|
118
|
+
}
|
|
104
119
|
// AIDEV-NOTE: [fix paginacao 18/07] Chave do total VARIA por endpoint no Chatwoot:
|
|
105
120
|
// conversas=all_count, contatos=count, busca de mensagens/kanban items/anexos=total_count.
|
|
106
121
|
// Ler so all_count zerava total_count/has_more nos demais (a IA parava cedo e entregava
|
|
@@ -128,6 +143,7 @@ function normalizeResponse(body) {
|
|
|
128
143
|
: currentPage;
|
|
129
144
|
return {
|
|
130
145
|
data: obj.payload,
|
|
146
|
+
meta,
|
|
131
147
|
pagination: {
|
|
132
148
|
current_page: currentPage,
|
|
133
149
|
total_pages: totalPages,
|
|
@@ -139,6 +155,9 @@ function normalizeResponse(body) {
|
|
|
139
155
|
// AIDEV-NOTE: Some endpoints return { data: [...], meta: {...} } format
|
|
140
156
|
if (Array.isArray(obj.data) && obj.meta && typeof obj.meta === 'object') {
|
|
141
157
|
const meta = obj.meta;
|
|
158
|
+
if (!hasPaginationKey(meta)) {
|
|
159
|
+
return { data: obj.data, meta };
|
|
160
|
+
}
|
|
142
161
|
// AIDEV-NOTE: [fix paginacao 18/07] Chamadas VoIP/LionCalls, WhatsApp calls e logs de evento
|
|
143
162
|
// (ga4/google_ads/meta_capi) usam meta.total e meta.page (nao total_count/current_page) —
|
|
144
163
|
// sem estes fallbacks o has_more vinha SEMPRE false e o relatorio parava na 1a pagina.
|
|
@@ -165,6 +184,7 @@ function normalizeResponse(body) {
|
|
|
165
184
|
: Math.ceil(totalCount / pageSize);
|
|
166
185
|
return {
|
|
167
186
|
data: obj.data,
|
|
187
|
+
meta,
|
|
168
188
|
pagination: {
|
|
169
189
|
current_page: currentPage,
|
|
170
190
|
total_pages: totalPages,
|
|
@@ -182,6 +202,9 @@ function normalizeResponse(body) {
|
|
|
182
202
|
inner.meta &&
|
|
183
203
|
typeof inner.meta === 'object') {
|
|
184
204
|
const meta = inner.meta;
|
|
205
|
+
if (!hasPaginationKey(meta)) {
|
|
206
|
+
return { data: inner.payload, meta };
|
|
207
|
+
}
|
|
185
208
|
const allCount = typeof meta.all_count === 'number'
|
|
186
209
|
? meta.all_count
|
|
187
210
|
: typeof meta.count === 'number'
|
|
@@ -200,6 +223,7 @@ function normalizeResponse(body) {
|
|
|
200
223
|
: currentPage;
|
|
201
224
|
return {
|
|
202
225
|
data: inner.payload,
|
|
226
|
+
meta,
|
|
203
227
|
pagination: {
|
|
204
228
|
current_page: currentPage,
|
|
205
229
|
total_pages: totalPages,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,6 +92,16 @@ Account (conta/empresa)
|
|
|
92
92
|
- Adiar: `lionchat_kanban_items_snooze`. Abrir antes da data: `lionchat_kanban_items_unsnooze`. Regras em
|
|
93
93
|
`lionchat://docs/kanban-deep-dive`, seção "Card adiado".
|
|
94
94
|
|
|
95
|
+
### Analisar com IA (desde 28/10/2026)
|
|
96
|
+
- A IA lê os cards abertos e adiados das etapas escolhidas de um funil e sugere mudar de etapa ou de funil, pôr/tirar
|
|
97
|
+
etiqueta e marcar ganho/perdido. Ferramentas `lionchat_kanban_ai_analyses_*`: `setup` -> `create` -> `show` até
|
|
98
|
+
`ready` -> `items` -> `apply` (com `confirm: true`) -> `show` até `finished`.
|
|
99
|
+
- Quantos cards: `filters.limit` (1 a 1.000, padrão 200). A análise PULA os cards que a IA leu nos últimos 7 dias sem
|
|
100
|
+
fala nova do cliente; `filters.include_read: true` lê de novo (e gasta crédito de novo). "Por que não mudou nada?":
|
|
101
|
+
`items` com `no_change: true`.
|
|
102
|
+
- **Aplicar NÃO tem como desfazer**: confirme com o usuário quais cards e ações antes. Regras em
|
|
103
|
+
`lionchat://docs/kanban-deep-dive`, seção "Analisar com IA".
|
|
104
|
+
|
|
95
105
|
### AccountUser.role (string)
|
|
96
106
|
- `agent` (atendente comum)
|
|
97
107
|
- `administrator` (admin/dono)
|
|
@@ -187,6 +197,9 @@ Detalhes completos em `lionchat://docs/api-conventions` → "Wrapper de body".
|
|
|
187
197
|
- **funnel.stages** keys: snake_case slug; cada etapa é OBJETO com `name` texto
|
|
188
198
|
- **Lista de objetos é lista de objetos**: onde o formato pede `[{id: 5}]`, número solto (`[5]`) ou objeto
|
|
189
199
|
único no lugar da lista quebra a leitura — às vezes a tela da conta inteira (incidente 18/09, funil).
|
|
200
|
+
- **Chave que volta escondida** (`••••••••` ou `[REDACTED]`): é o valor de leitura, não a chave. Desde 27/10 mandar
|
|
201
|
+
esse valor de volta MANTÉM a chave gravada (chave da TopSend da conta, Hotmart, Kiwify, Ticto, Eduzz, Monetizze e
|
|
202
|
+
Greenn). Só mande o campo quando for trocar por uma chave nova de verdade.
|
|
190
203
|
|
|
191
204
|
### Gravação: TROCA inteira × SOMA (conferido no código em 18/09/2026)
|
|
192
205
|
|
|
@@ -291,7 +304,7 @@ POST /api/v1/accounts/{account_id}/kanban_items
|
|
|
291
304
|
```
|
|
292
305
|
|
|
293
306
|
- `conversation_display_id` é **opcional** (card sem conversa vinculada é válido).
|
|
294
|
-
- As ferramentas `lionchat_kanban_v2_*` cobrem anexos de card/nota e automações do Kanban (controllers criados em 07/2026 — a orientação antiga de ignorá-las está obsoleta).
|
|
307
|
+
- As ferramentas `lionchat_kanban_v2_*` cobrem anexos de card/nota e automações do Kanban (controllers criados em 07/2026 — a orientação antiga de ignorá-las está obsoleta). Arquivo do computador não sobe pelo MCP (não há envio direto de arquivo); arquivo **por link** sobe com `lionchat_upload_create` (`external_url`).
|
|
295
308
|
|
|
296
309
|
### Relatório de produtividade
|
|
297
310
|
```
|
|
@@ -317,6 +330,11 @@ teams, conversations_summary) exigem as DUAS pontas; nos demais, `since` ou `unt
|
|
|
317
330
|
5. Acompanhar com lionchat_campaigns_statistics (sent/delivered/read/failed)
|
|
318
331
|
```
|
|
319
332
|
Estrutura do audience: `[{type:'Label', id}, {type:'Funnel', id, stages:[], include_won, include_lost}, {type:'ConversationAttribute', key, value}]`.
|
|
333
|
+
Segmento de contatos como público (22/10/2026): `{type:'Segment', id}` no audience e na exclusão
|
|
334
|
+
(`trigger_rules.exclusion`). O id vem de `lionchat_custom_filters_list` com `filter_type: contact` (o segmento é da
|
|
335
|
+
CONTA). Vale para WhatsApp oficial, QR Code e Campanha de Fluxo; SMS e TopSend recusam (422). A regra do segmento é
|
|
336
|
+
lida na HORA do disparo: segmento apagado ou com regra quebrada = a campanha NÃO envia nada e o motivo fica em
|
|
337
|
+
`trigger_rules.audience_error`; na estimativa vem `estimated_count: null` com `segment_unavailable`.
|
|
320
338
|
QR Code aceita `template_params` com `delay_min/delay_max/variations` (anti-bloqueio) e `bulk_actions`.
|
|
321
339
|
|
|
322
340
|
### Criar campanha de FLUXO (dispara um flow, não uma mensagem) — novo 28/07/2026
|
|
@@ -392,7 +410,7 @@ Antes de QUALQUER ação que escreve, modifica, apaga ou envia, pare e avalie se
|
|
|
392
410
|
|
|
393
411
|
**Como confirmar:** descreva o efeito em linguagem do usuário e aguarde o "sim". Ex.: *"Vou apagar o contato #312 — isso remove as 4 conversas dele também. Confirma?"*. Se faltar dado, peça só o que falta (1-2 perguntas), nunca um questionário.
|
|
394
412
|
|
|
395
|
-
**Ferramentas com trava dura de confirmação.** Algumas ferramentas **recusam a chamada** sem `confirm: true` — a recusa vem do conector, antes de tocar no sistema. Não é erro: é o pedido de OK. O caminho é sempre o mesmo — descreva ao usuário exatamente o que será criado/alterado/apagado, aguarde o "sim", e só então reenvie a MESMA chamada com `confirm: true`. Nunca mande `confirm: true` na primeira tentativa "pra economizar uma volta": a trava existe justamente porque a descrição sozinha não segurava. Hoje: `lionchat_custom_dashboards_create`, `_update` e `_destroy` (relatório personalizado aparece na tela do cliente; alterar substitui a lista de blocos e apagar não tem desfazer).
|
|
413
|
+
**Ferramentas com trava dura de confirmação.** Algumas ferramentas **recusam a chamada** sem `confirm: true` — a recusa vem do conector, antes de tocar no sistema. Não é erro: é o pedido de OK. O caminho é sempre o mesmo — descreva ao usuário exatamente o que será criado/alterado/apagado, aguarde o "sim", e só então reenvie a MESMA chamada com `confirm: true`. Nunca mande `confirm: true` na primeira tentativa "pra economizar uma volta": a trava existe justamente porque a descrição sozinha não segurava. Hoje: `lionchat_custom_dashboards_create`, `_update` e `_destroy` (relatório personalizado aparece na tela do cliente; alterar substitui a lista de blocos e apagar não tem desfazer) e `lionchat_conversations_bulk_destroy` (27/10: apaga de vez até 300 conversas com mensagens e anexos — liste ao usuário quais saem antes do OK).
|
|
396
414
|
|
|
397
415
|
**Aja sem perguntar apenas em operações idempotentes:** leitura, busca, resumo, classificação.
|
|
398
416
|
|
|
@@ -429,6 +447,7 @@ Antes de escolher a ferramenta, cheque se a intenção bate com a coluna da dire
|
|
|
429
447
|
|
|
430
448
|
| Intenção do usuário | Tool certa | Cuidado |
|
|
431
449
|
|---|---|---|
|
|
450
|
+
| Criar **pasta de conversas para a conta toda** ("Urgentes do time", "Minhas abertas" para cada um) | `lionchat_custom_filters_create` com `filter_type: conversation` + `shared: true` | Só administrador (401). Pelo menos uma condição. Para cada pessoa ver as conversas DELA use `assignee_id` com `values: ["current_user"]`. `shared: false` depois devolve a pasta a quem mandou. Detalhe no resource api-conventions |
|
|
432
451
|
| Listar / ver não lidas | `lionchat_conversations_list` (`conversation_type: 'unread'`) ou `lionchat_conversations_meta` | NÃO use `lionchat_conversations_unread` — é AÇÃO DE ESCRITA (marca como não-lida) |
|
|
433
452
|
| Ver **uma empresa** (quem trabalha la, anotacoes, conversas) e ligar/tirar contatos | `lionchat_companies_show` + `lionchat_companies_contacts_list` / `_create` / `_destroy`, `lionchat_companies_notes_list`, `lionchat_companies_conversations_list` | Ligar pela ficha: `lionchat_contacts_update` com `company_id` (null tira). Cargo da pessoa = `additional_attributes.job_title`. Escolher a empresa troca o texto `company_name` pelo nome dela |
|
|
434
453
|
| Criar / preencher **campo personalizado da empresa** ("Segmento", "Data de fundacao") | `lionchat_custom_attributes_create` com `attribute_model: company_attribute` + `lionchat_companies_update` com `company.custom_attributes {chave: valor}` | So com o modulo Empresas ligado; tipo segredo recusado. Chave que nao existe como atributo de empresa = 422 e nada do pedido grava: crie a definicao ANTES. MESCLA; `null` limpa. Desde 2026-10-16 vira variavel `{{contact.company.custom_attribute.CHAVE}}`, condicao do fluxo (`attrSource: company`), condicao de automacao e filtro de contatos (`custom_attribute_type: company_attribute`) e a IA le — detalhe no resource data-model |
|
|
@@ -442,11 +461,12 @@ Antes de escolher a ferramenta, cheque se a intenção bate com a coluna da dire
|
|
|
442
461
|
| Criar contato | `lionchat_contacts_create` base (path `/contacts`) | NÃO use as variantes `_1` … `_9` |
|
|
443
462
|
| Pausar a IA agora (botão de pânico) | `lionchat_captain_assistants_update` (`paused: true`, top-level) | — |
|
|
444
463
|
| Criar/editar **formulário público de captação** (página de captura própria) | `lionchat_lead_forms_create` / `_update` | Leia `lionchat://docs/formularios-publicos` ANTES — o desenho vai em `form_data` e só entra no ar depois do `publish` (que valida o desenho e pode voltar 422 com a lista de pendências). Caixa de WhatsApp vinculada (`inbox_id`) é obrigatória pra publicar. Escrita é só de administrador |
|
|
445
|
-
| **Mandar um contrato pra assinar** / ver quem assinou / reenviar / cancelar / criar ou editar o modelo escrito | `lionchat_signature_envelopes_create` / `_list` / `_show` / `_resend` / `_cancel`; `lionchat_signature_documents_list` / `_create` / `_update`; `lionchat_signature_envelopes_sign_as_sender` (o remetente assina pelo painel) | Leia `lionchat://docs/assinatura-eletronica` ANTES. Modelo `text` a API cria e edita (texto com `{{contact.*}}`); PDF/Word só pela tela. Campo do modelo sem valor na ficha bloqueia o envio (422 `variaveis_sem_valor` com a lista); `422 escolher_caixa` = repita com `inbox_id`. Cada contrato consome 1 vaga do limite mensal. Modelo Word: `422 fila_cheia` = muita gente convertendo agora, repita em instantes; `422 conversor_indisponivel` = o serviço de conversão está fora (não é o arquivo) — avise o operador. Remetente assina pelo painel com `_sign_as_sender` (PNG em base64). Importar Word, pré-visualizar e baixar PDF: só pela tela (o conector não
|
|
464
|
+
| **Mandar um contrato pra assinar** / ver quem assinou / reenviar / cancelar / criar ou editar o modelo escrito | `lionchat_signature_envelopes_create` / `_list` / `_show` / `_resend` / `_cancel`; `lionchat_signature_documents_list` / `_create` / `_update`; `lionchat_signature_envelopes_sign_as_sender` (o remetente assina pelo painel) | Leia `lionchat://docs/assinatura-eletronica` ANTES. Modelo `text` a API cria e edita (texto com `{{contact.*}}`); PDF/Word só pela tela. Campo do modelo sem valor na ficha bloqueia o envio (422 `variaveis_sem_valor` com a lista); `422 escolher_caixa` = repita com `inbox_id`. Cada contrato consome 1 vaga do limite mensal. Modelo Word: `422 fila_cheia` = muita gente convertendo agora, repita em instantes; `422 conversor_indisponivel` = o serviço de conversão está fora (não é o arquivo) — avise o operador. Remetente assina pelo painel com `_sign_as_sender` (PNG em base64; `signature_method` drawn/typed + `typed_name`). Dois jeitos de mandar (27/10): `collection: 'ready'` (completa o que falta com `contact_data`; veja antes `lionchat_signature_documents_fill_fields`) ou `collection: 'form'` (a pessoa preenche pelo link); `message` vai junto. Documentos pedidos (`roles_layout.proof_requests` desde 29/10: documento com foto — `id_document` com `accepted_types` = os aceitos entre RG, CNH e CPF, a pessoa manda um deles (30/10) —, comprovante, selfie e documentos criados `custom_*`, cada um podendo ser anexado ao contrato e pedido das testemunhas; `ai_document_check` liga a conferência das fotos e dos PDFs de até 5 páginas pela IA da conta; documento criado aceita `description` só para a IA (30/10); o antigo `required_proofs` continua aceito): contrato fica `awaiting_approval` até a equipe aprovar — `lionchat_signature_envelopes_proofs` / `_approve_proofs` / `_reject_proofs` (as duas últimas mandam mensagem ao cliente: confirme antes; os arquivos só pela tela). Link do contrato para divulgar: `roles_layout.public_link` (29/10: a pessoa preenche um formulário e confirma o WhatsApp com um código). Caixa por onde saem todas as mensagens do contrato e o texto/modelo de cada uma (29/10): `roles_layout.communication`. Importar Word, pré-visualizar e baixar PDF: só pela tela (nesta área o conector não sobe o Word do modelo nem baixa o PDF) |
|
|
446
465
|
| **Testar um formulário** antes de publicar | `lionchat_lead_forms_test_run` | Roda o RASCUNHO no motor real e desfaz tudo no fim — zero rastro. Mande `answers: [{node_id, value}]` (até 60) pra reproduzir um caminho; a resposta traz o bloco atual + o log do percurso |
|
|
447
466
|
| Conferir se um site **aceita ser exibido dentro do formulário** (bloco Página externa) | `lionchat_lead_forms_check_embed` | Body `{url}`; devolve `{status: allowed\|blocked\|unknown, reason}`. Grave o veredito em `embed_allowed` do bloco. Admin-only |
|
|
448
467
|
| Ver **tudo que uma pessoa preencheu** (nosso formulário, anúncio do Meta, Webhook Universal, fluxo) | `lionchat_contacts_form_entries_list` / `_show` | Por CONTATO, sem paginação (teto 250 por origem, `meta.truncated`). O detalhe de Meta/webhook mostra SÓ os campos vinculados e gravados — nunca o payload cru. `show` exige `source` + `id` da mesma linha |
|
|
449
|
-
| Anexar arquivo a uma mensagem | `lionchat_upload_create`
|
|
468
|
+
| Anexar **arquivo** a uma mensagem — foto, vídeo, áudio, PDF, Word, Excel, CSV, ZIP (inclusive na conversa de um **grupo** do WhatsApp) | `lionchat_upload_create` com `external_url` (link PÚBLICO de download do arquivo) → o `blob_id` devolvido vai no array `attachments` de `lionchat_conversations_messages_create` | Pelo conector o arquivo SEMPRE vai por link (não há envio direto do computador). Link que abre uma PÁGINA (ex.: Drive `.../view`) é recusado — use o download direto (Drive: `https://drive.google.com/uc?export=download&id=<ID>`); confira antes com `lionchat_upload_validate`. Teto por tipo em `lionchat_upload_limits_show`. Até 23/10/2026 o link só aceitava foto e vídeo |
|
|
469
|
+
| Mandar um **relatório todo dia num grupo** do WhatsApp | Em texto: `lionchat_report_alerts_create` (resumo diário de um relatório personalizado, enviado pelo próprio servidor). Em PDF: gere o PDF, publique num link de download e siga a linha acima | O conector não agenda nada: "todo dia" em PDF depende de uma tarefa agendada do lado de quem usa o conector. Grupo só existe em caixa WhatsApp QR Code — ache a conversa do grupo com `lionchat_conversations_list`/busca. Receita em `lionchat://docs/best-practices` |
|
|
450
470
|
| Marcar conversa como **lida** | `lionchat_conversations_update_last_seen` | NÃO use `unread` (esse marca como NÃO-lida) |
|
|
451
471
|
| Criar/gerenciar **campanha** (disparo WhatsApp/SMS) | `lionchat_campaigns_*` (criar, estatísticas) | SEMPRE rode `campaigns_estimate_audience` antes de criar e mostre a contagem. Disparo em massa = confirmação obrigatória (seção 7b) |
|
|
452
472
|
| Criar **flow normal** (responde mensagens na caixa) | `lionchat_flows_create` | Ler design-guide antes (seção 11). Escolha `conversation_mode`: `individual` (1-a-1, default) ou `group` (grupo WhatsApp — só aqui existe o node `update_group`; sem LionTrack). Imutável após criar |
|
|
@@ -478,6 +498,7 @@ Antes de escolher a ferramenta, cheque se a intenção bate com a coluna da dire
|
|
|
478
498
|
| **Migrar conversas** de uma caixa WhatsApp pra outra (ex.: QR Code → Oficial) | `lionchat_inboxes_inbox_migration_list` (prévia) → `_execute` → acompanhar status | Admin-only e IRREVERSÍVEL: sempre mostre os números da prévia e confirme (seção 7a). Grupos não vão pro canal oficial — ficam na caixa de origem |
|
|
479
499
|
| Qualquer coisa de Ligação WP (Wavoip) | **INTEGRAÇÃO REMOVIDA em 12/08/2026** — não há tool nem tela | A Wavoip saiu do produto: a aba "Ligação WP" **não existe mais**. NUNCA orientar o usuário a "Configurações da caixa → Ligação WP". Para voz em caixa QR Code, o caminho hoje é o **LionCalls**. As ligações antigas seguem no histórico (`provider: "wavoip"`); as gravações delas ficavam no servidor da Wavoip e vão sumir — ao tentar ouvir, o painel mostra "Esta gravação não está mais disponível", e isso é esperado, não é defeito. |
|
|
480
500
|
| Restringir agendas que a IA oferece | `lionchat_captain_assistants_update` (`config.booking_event_type_ids: [Int]`) | binding de agenda por cenário NÃO é settable via API |
|
|
501
|
+
| **Tarefas atrasadas / o que falta fazer** (da equipe ou de uma pessoa) | `lionchat_tasks_task_list` (`assignee_id`, `q`, `priority`, `group` + `page`) | Só tarefas ABERTAS, em grupos `overdue`/`today`/`tomorrow`/`next_7_days`/`later` no dia da conta; 50 por grupo — conte por `totals`. Mesma regra de quem vê o quê do calendário. Ver `lionchat://docs/agenda-multiplas-unidades` §7.2 |
|
|
481
502
|
| **Programa de sessões** de um contato ("em que sessão ele está", ajustar total, encerrar/reabrir) | `lionchat_agenda_treatments_list` (por `contact_id`) / `_show` / `_update` | NÃO existe create: o programa nasce junto do agendamento (na TELA chama-se "programa"; na API segue `treatment`). Marcar TODAS de uma vez: `plano_sugerido` + `marcar_todas` de um tipo com `sessions_enabled` (`tasks_create` modo booking, `treatment: {...}` por pessoa; "marcar próxima" = `agenda_treatment_id` + `treatment_session_number`). Faltar CONSOME a sessão. Ver `lionchat://docs/agenda-multiplas-unidades` §7 |
|
|
482
503
|
| Configurar o Copiloto (modelo/temperatura/prompt base) | `lionchat_copilot_settings_update` | admin-only; copiloto tem motor próprio (padrão temp 0.3) |
|
|
483
504
|
| **Resetar/testar do zero a IA** numa conversa | `lionchat_conversations_captain_history_reset` (POST, sem body) | Cria pílula de marco na conversa; a partir dali TODA leitura autônoma da IA (respostas, resumo, follow-up) considera só mensagens pós-marco. Não apaga nada; o atendente segue vendo tudo. Enterprise-only |
|
|
@@ -292,10 +292,48 @@ criam uma tarefa COMUM da Agenda, presa ao card (`kanban_item_id`). Para a agend
|
|
|
292
292
|
- A Agenda unificada (`unified_agenda`) precisa estar ligada na conta; desligada, a regra do funil registra "não
|
|
293
293
|
criou" no histórico do card e o item do fluxo fica com erro visível no passo.
|
|
294
294
|
- `occupies_agenda: false` (padrão da regra) cria a tarefa como lembrete que **não bloqueia o horário**; `true`
|
|
295
|
-
bloqueia como um compromisso.
|
|
295
|
+
bloqueia como um compromisso, do prazo até o fim da duração. `duration_minutes` (22/10/2026, 1 a 1440) escolhe a
|
|
296
|
+
duração; ausente = o tempo do tipo (Tarefa 15, Ligação 30, Reunião 60, tipo da conta 30).
|
|
296
297
|
|
|
297
298
|
---
|
|
298
299
|
|
|
300
|
+
## 7.2. Lista de tarefas abertas — aba "Tarefas" da Agenda (22/10/2026)
|
|
301
|
+
|
|
302
|
+
A Agenda ganhou a aba **Tarefas**, entre Calendário e Disparos: as tarefas abertas em lista, separadas por
|
|
303
|
+
período. A ferramenta é `lionchat_tasks_task_list` (`GET account_tasks/task_list`). Use-a para "o que está
|
|
304
|
+
atrasado?", "quantas tarefas a fulana tem em aberto?" e "o que falta fazer esta semana?".
|
|
305
|
+
|
|
306
|
+
- **Aberta** = pendente ou adiada E sem "Compareceu"/"Faltou". Concluídas e canceladas não entram.
|
|
307
|
+
- **Grupos**, no dia da conta: `overdue` (antes de hoje, da mais recente para a mais antiga), `today`,
|
|
308
|
+
`tomorrow`, `next_7_days` e `later`.
|
|
309
|
+
- **Quem vê o quê e filtros**: os MESMOS do calendário (`lionchat_tasks_list`): `assignee_id`, `task_type`,
|
|
310
|
+
`status` (0 pendente, 3 adiada), `priority`, `agenda_id`, `q`. Quem não gerencia a agenda da equipe vê só as
|
|
311
|
+
próprias, com ou sem `assignee_id`.
|
|
312
|
+
- **50 por grupo**. Para quantidade, leia `totals` (a contagem real), nunca o tamanho da lista. Para ir além das
|
|
313
|
+
50: `group=overdue&page=2` devolve só aquele grupo naquela página.
|
|
314
|
+
- **Busca `q`** (vale também no calendário): título, descrição, responsável e, com 3 letras ou mais, o CLIENTE
|
|
315
|
+
(nome, telefone, e-mail). Termo que casa mais de 1.000 clientes procura só nos campos da tarefa.
|
|
316
|
+
- O "Meu Dia" (`lionchat_tasks_list_1`) continua existindo como estava: sem filtros, sem páginas e sem `later`.
|
|
317
|
+
- Cargo com a Agenda escondida recebe 401 aqui.
|
|
318
|
+
- **Prioridade**: o filtro `priority` passou a funcionar em 22/10 (antes o servidor o ignorava, inclusive no
|
|
319
|
+
calendário).
|
|
320
|
+
|
|
321
|
+
### 7.3. Subaba "Concluídas" e datas de desfecho (23/10/2026)
|
|
322
|
+
|
|
323
|
+
- **`group=completed`** em `lionchat_tasks_task_list` = a subaba "Concluídas": tarefa concluída OU marcada
|
|
324
|
+
"Compareceu"/"Faltou". Cancelada fica de fora (só no calendário). Não vem junto dos cinco grupos: só quando
|
|
325
|
+
pedida. Ordem: a mais recentemente concluída primeiro; as concluídas antes de 23/10 (sem data de conclusão) vão
|
|
326
|
+
para o fim, pela data da tarefa. 50 por página, `totals.completed` = a contagem real.
|
|
327
|
+
- **Datas de desfecho** em toda tarefa (calendário, `show` e lista): `completed_at` (quando foi concluída),
|
|
328
|
+
`cancelled_at` (quando foi cancelada) e `attendance_marked_at` (quando marcaram Compareceu/Faltou). Gravadas pelo
|
|
329
|
+
servidor no momento da mudança, nunca aceitas do cliente. Reabrir, adiar ou limpar a presença APAGA a data
|
|
330
|
+
(é a data do desfecho atual, não um histórico). Nada antes de 23/10 foi preenchido: tarefa antiga vem com nulo.
|
|
331
|
+
- **`concluida_no_prazo`** (true/false/nulo): só no tipo Tarefa. `true` = concluída até o horário marcado
|
|
332
|
+
(`scheduled_at`; adiar vale a data nova). Nulo = não se aplica (outro tipo, não concluída, ou concluída antes de
|
|
333
|
+
existir a data). Consulta e reunião não têm prazo: só se dão como feitas depois que acontecem.
|
|
334
|
+
- **Busca `q`** (vale na lista e no calendário) passou a achar também pelo NOME DO CARD da tarefa e, com 3 letras
|
|
335
|
+
ou mais, por QUEM FEZ: quem criou, o dono antigo da tarefa e o "Agendado por".
|
|
336
|
+
|
|
299
337
|
## 8. Erros comuns
|
|
300
338
|
|
|
301
339
|
| Sintoma | Causa |
|
|
@@ -484,6 +484,33 @@ GET /search/conversations?q=pix&conversation_filters=[{"attribute_key":"status",
|
|
|
484
484
|
- `kanban_card` — por card vinculado (funil/etapa/prioridade/status)
|
|
485
485
|
Combináveis com E/OU e salváveis como segmento (custom_filters).
|
|
486
486
|
|
|
487
|
+
### Segmento de contatos é da CONTA (2026-10-22)
|
|
488
|
+
|
|
489
|
+
`custom_filters` com `filter_type: contact` (segmento) passou a ser da conta inteira: todos veem e usam (quem tem o
|
|
490
|
+
menu Contatos no cargo). Criar, editar e apagar segmento = administrador ou cargo com `contact_manage`,
|
|
491
|
+
`campaign_manage` ou `automation_manage` — sem isso, 401. Quem criou não ganha direito extra; a resposta traz
|
|
492
|
+
`user_id`/`user_name` ("criado por", pode vir nulo) e `can_manage`. Relatórios (`report`) continuam pessoais; pastas de
|
|
493
|
+
conversa (`conversation`) são pessoais até um administrador compartilhar (seção seguinte). `filter_type` é IGNORADO no update (não dá para trocar o tipo). Regra vazia ou
|
|
494
|
+
incompleta = 422. Segmento usado por campanha programada não pode ser apagado (422 citando a campanha). Segmento serve
|
|
495
|
+
de público de campanha (`{type: 'Segment', id}`) — ver a receita de campanha nas instruções.
|
|
496
|
+
|
|
497
|
+
### Pasta de conversa compartilhada (2026-10-27)
|
|
498
|
+
|
|
499
|
+
Pasta de conversa (`filter_type: conversation`) com `shared: true` aparece para TODA a conta, com o ícone de
|
|
500
|
+
compartilhar. Só administrador cria, edita, compartilha, descompartilha ou apaga (sem isso, 401); o atendente vê e
|
|
501
|
+
usa, mas não edita. Cada pessoa vê dentro dela SÓ as conversas que já pode ver — a pasta não abre acesso. Regras:
|
|
502
|
+
|
|
503
|
+
- Só mande `shared` para MUDAR o compartilhamento. `shared: false` numa compartilhada a transforma em pasta pessoal de
|
|
504
|
+
quem mandou (some para os outros). `shared` nulo = 422. Segmento e relatório não podem ser compartilhados (422).
|
|
505
|
+
- Compartilhada precisa de pelo menos uma condição (422 sem nenhuma).
|
|
506
|
+
- `query.sort_by` de uma compartilhada é a ordem PADRÃO de todos. A troca de ordem feita dentro da pasta pela tela vale
|
|
507
|
+
só para quem trocou e não é gravada.
|
|
508
|
+
- Em compartilhada criada por outra pessoa, `user_id`/`user_name` vêm nulos.
|
|
509
|
+
- "Quem está vendo": condição `{"attribute_key": "assignee_id", "filter_operator": "equal_to", "values": ["current_user"]}`
|
|
510
|
+
mostra a cada pessoa as conversas DELA. Vale também em `lionchat_conversations_filter` e nos `conversation_filters` das
|
|
511
|
+
buscas. Texto em `assignee_id` que não seja número nem `current_user` = 422. Automação NÃO aceita `current_user` (422).
|
|
512
|
+
- Apagar uma compartilhada tira a pasta de todos. Pessoa removida da conta não leva a compartilhada que criou.
|
|
513
|
+
|
|
487
514
|
### Exportação de contatos (2026-06-10)
|
|
488
515
|
|
|
489
516
|
`POST /contacts/export` (chega por e-mail) agora sai COMPLETO: cadastral achatado (16 colunas),
|
|
@@ -10,14 +10,14 @@ Feature `document_signing` (ligada por conta; 403 `feature_disabled` quando desl
|
|
|
10
10
|
| Camada | O que é | Ferramentas |
|
|
11
11
|
|---|---|---|
|
|
12
12
|
| **Modelo** (`signature_documents`) | O contrato padrão, escrito uma vez com `{{variáveis}}` da ficha. `kind`: `text` (escrito no editor — o único que a API cria), `file` (PDF pronto, igual pra todos) ou `word` (.docx que sai idêntico com os campos mapeados) — os dois últimos só pela tela (upload). | `lionchat_signature_documents_list/show/create/update/destroy/field_catalog` |
|
|
13
|
-
| **Contrato** (`signature_envelopes`) | Cada ENVIO a uma pessoa: PDF próprio com os dados dela, prazo, linha do tempo. | `lionchat_signature_envelopes_list/show/create/resend/cancel/limits` |
|
|
13
|
+
| **Contrato** (`signature_envelopes`) | Cada ENVIO a uma pessoa: PDF próprio com os dados dela, prazo, linha do tempo. | `lionchat_signature_envelopes_list/show/create/resend/cancel/limits`; documentos de quem assina: `_proofs` / `_approve_proofs` / `_reject_proofs` |
|
|
14
14
|
| **Participante** | Quem assina dentro de um contrato: `signer` (titular, pode ser mais de um), `witness` (testemunha, opcional), `sender` (o remetente, quando o modelo tem "eu também assino" — assina NO PAINEL, sem link). Cada um tem link e código próprios. | dentro do contrato (`participants[]`) |
|
|
15
15
|
|
|
16
16
|
## Estados do contrato (`status`) e os baldes de filtro
|
|
17
17
|
|
|
18
18
|
| Balde (`status` na listagem) | Estados | Significado |
|
|
19
19
|
|---|---|---|
|
|
20
|
-
| `aguardando` | `draft`, `sent` | criado sem entrega (draft)
|
|
20
|
+
| `aguardando` | `draft`, `sent`, `awaiting_data`, `awaiting_approval` | criado sem entrega (draft), enviado e ainda não aberto, "aguardando formulário" (a pessoa ainda não preencheu os dados — o contrato ainda não existe) ou (28/10) "aguardando aprovação dos documentos" (todos assinaram, falta a equipe aprovar os documentos pedidos) |
|
|
21
21
|
| `visualizado` | `viewed`, `partially_signed` | abriu o link / parte das pessoas já assinou |
|
|
22
22
|
| `assinado` | `signed_pending_seal`, `signed` | todos assinaram; selando / documento final pronto |
|
|
23
23
|
| `encerrado` | `refused`, `cancelled`, `expired` | recusado / cancelado pela equipe / prazo venceu |
|
|
@@ -27,10 +27,15 @@ Participante: `pending` → `viewed` → `verified` (confirmou o código) → `s
|
|
|
27
27
|
|
|
28
28
|
## Linha do tempo (`events[].kind`)
|
|
29
29
|
`created` · `delivered` (link entregue a uma pessoa) · `sent` · `opened` (cada abertura) · `code_requested` ·
|
|
30
|
-
`code_verified` · `signed` (com `ip`, `device`, `location`; `panel: true` = assinou no painel
|
|
30
|
+
`code_verified` · `signed` (com `ip`, `device`, `location`; `panel: true` = assinou no painel; desde 28/10
|
|
31
|
+
`signature_method` `drawn` = desenhada ou `typed` = o nome digitado numa letra de assinatura, com `typed_name`) · `all_signed` ·
|
|
31
32
|
`sealed` (documento final gerado, `sealed_sha256`) · `refused` · `cancelled` · `expired` · `delivery_failed`
|
|
32
33
|
(motivo em `delivery.failed[]`) · `reminded` · `resent` · `copy_sent` / `copy_failed` (a via assinada de cada pessoa,
|
|
33
|
-
estado em `delivery.copies[]`)
|
|
34
|
+
estado em `delivery.copies[]`) · `data_filled` (27/10: a pessoa preencheu o formulário e o contrato foi gerado com os
|
|
35
|
+
dados dela) · (28/10) `proof_sent` (a pessoa mandou um documento pedido: `kind`, `document_type`) ·
|
|
36
|
+
`awaiting_approval` (o contrato passou a esperar a equipe, ou a pessoa reenviou depois de reprovada) · `proofs_approved`
|
|
37
|
+
/ `proofs_rejected` (com `reason` e quem decidiu). `code_requested`/`code_verified` com `method: "whatsapp"` = a pessoa
|
|
38
|
+
confirmou mandando a frase pelo WhatsApp, não pelo código. Tudo append-only — é o relatório de evidências. `delivery.failed[]` também mostra a
|
|
34
39
|
recusa que a Meta manda depois (caixa oficial fora da janela de 24 h, motivo `window_expired`) e some sozinha se a
|
|
35
40
|
mensagem acabar entregue.
|
|
36
41
|
|
|
@@ -46,6 +51,121 @@ pelo mesmo canal do link: anexada numa mensagem na conversa dela (WhatsApp) ou n
|
|
|
46
51
|
pedindo que peça a via a quem enviou). Quem assinou no painel não recebe. Não há ferramenta para mandar de novo: oriente
|
|
47
52
|
baixar na tela do documento. O código de 6 dígitos de quem assina por e-mail chega no próprio e-mail.
|
|
48
53
|
|
|
54
|
+
## Os dois jeitos de mandar (27/10)
|
|
55
|
+
- **Contrato pronto** (padrão, `collection: 'ready'`): o contrato sai agora com a ficha. Se faltar dado, mande junto
|
|
56
|
+
`contact_data: { 'contact.marital_status': 'casado' }` — vai para a ficha e para o contrato (erro de um campo volta
|
|
57
|
+
`422 dados_invalidos` com `field_errors`). Para saber o que falta antes: `GET .../signature_documents/:id/fill_fields?contact_id=`.
|
|
58
|
+
- **Formulário para a pessoa preencher** (`collection: 'form'`, exige `contact_id`): o link vai SÓ para o titular, ele
|
|
59
|
+
preenche os dados dele (em branco) e o contrato nasce com o que ele digitou; o que ele digita atualiza a ficha. O
|
|
60
|
+
contrato fica `awaiting_data` até lá. O link de quem preenche é o `participants[].public_url` do titular na resposta.
|
|
61
|
+
- Nos dois: `message` (até 1.000 caracteres) vai junto do link.
|
|
62
|
+
- `fill_fields` devolve cada campo que se preenche pela ficha (`value` e `missing`) e `blocked` = o que falta e NÃO se
|
|
63
|
+
preenche por ali (telefone, dados da conta) — com algo em `blocked` o contrato pronto volta `variaveis_sem_valor`;
|
|
64
|
+
`blocked_in_form` é o mesmo para o jeito formulário (lá o nome também é perguntado).
|
|
65
|
+
- **Como o formulário pergunta** (`roles_layout.field_prompts` no modelo): `{"contact.cpf": {"label": "Qual é o seu
|
|
66
|
+
CPF?", "description": "Igual ao documento", "placeholder": "000.000.000-00"}}` — texto até 200 caracteres; sem
|
|
67
|
+
pergunta, o formulário mostra o nome do campo; pergunta de variável que o modelo não usa é descartada ao salvar.
|
|
68
|
+
- Modelo de **Word** com campo sem escolha no mapeamento: o envio volta `422 campos_sem_escolha` (`missing` = os
|
|
69
|
+
rótulos do Word) antes de gastar a vaga do mês — ajuste o mapeamento pela tela.
|
|
70
|
+
|
|
71
|
+
## Como a pessoa assina (28/10)
|
|
72
|
+
Na página do link (e no "Assinar agora" do painel) há duas abas: **Desenhar** (com o dedo ou o mouse) e **Digitar**
|
|
73
|
+
(o nome já vem escrito, pode ser corrigido, e aparece em três letras de assinatura). Os dois valem igual — quem prova
|
|
74
|
+
a autoria é o código de uso único. A folha de assinaturas e o relatório de evidências dizem "Assinatura desenhada à
|
|
75
|
+
mão" ou "Assinatura digitada: <nome>"; contratos assinados antes de 28/10 não dizem nada.
|
|
76
|
+
|
|
77
|
+
## Documentos de quem assina (28/10)
|
|
78
|
+
- No modelo, `roles_layout.required_proofs`: lista com `id_document` (documento com foto — a pessoa escolhe entre os
|
|
79
|
+
aceitos, RG, CNH ou CPF; ver `accepted_types` abaixo), `selfie_with_document` e `address_proof` (comprovante, foto ou PDF). `[]` = nenhum. Outro valor = 422. O
|
|
80
|
+
contrato guarda uma cópia ao nascer: mudar o modelo depois não muda contrato já enviado (`required_proofs` vem no
|
|
81
|
+
`list` e no `show` do contrato).
|
|
82
|
+
- A pessoa manda os documentos na página, antes de assinar. Com algum documento pedido, o contrato NÃO fecha quando
|
|
83
|
+
todos assinam: fica `awaiting_approval` e quem enviou recebe aviso no sininho.
|
|
84
|
+
- `lionchat_signature_envelopes_proofs` mostra, por pessoa, os documentos mandados (tipo, formato, quando — nunca o
|
|
85
|
+
arquivo) e a revisão (`pending`/`approved`/`rejected`, motivo, quem, quando) e o `last_proof_event_id`.
|
|
86
|
+
- **Os arquivos NÃO saem por ferramenta** (documento de identidade e selfie são dado sensível): para olhar, oriente a
|
|
87
|
+
tela — botão amarelo "Ver documentos" no contrato ou na aba Contratos da ficha. Aprovar sem alguém ter olhado o
|
|
88
|
+
arquivo na tela não faz sentido: pergunte ao usuário se ele já conferiu.
|
|
89
|
+
- `lionchat_signature_envelopes_approve_proofs` (`participant_id`, `seen_event_id` = o `last_proof_event_id` que a pessoa
|
|
90
|
+
viu): com todos aprovados o contrato fecha e cada um recebe a via. `lionchat_signature_envelopes_reject_proofs`
|
|
91
|
+
(`participant_id`, `reason` obrigatório, `seen_event_id`): a pessoa recebe no canal dela o pedido de documento novo com
|
|
92
|
+
o motivo. As duas MANDAM mensagem ao cliente — confirme com o usuário antes. 422: `fora_do_momento` (contrato não está
|
|
93
|
+
esperando aprovação), `sem_documentos`, `motivo_obrigatorio`, `documentos_mudaram` (a pessoa mandou outro depois do
|
|
94
|
+
que foi visto — leia `_proofs` de novo). Quem pode: administrador ou `signature_manage`.
|
|
95
|
+
|
|
96
|
+
## Documentos pedidos com anexo e conferência por IA (29/10)
|
|
97
|
+
- `roles_layout.proof_requests` é a lista completa (o que vale de verdade): itens `{key, label, accepts_pdf,
|
|
98
|
+
attach_to_contract, from_witnesses}` (+ `accepted_types` no `id_document` e `description` nos criados). `key`: `id_document`, `rg`, `cnh`, `cpf`, `selfie_with_document`,
|
|
99
|
+
`address_proof` ou um documento CRIADO, `custom_<6 a 12 letras/números minúsculos>` com `label` obrigatório (1 a 60).
|
|
100
|
+
**Você inventa a chave do criado** (ex.: `custom_oab2026`) e a mantém igual nas gravações seguintes — o servidor não
|
|
101
|
+
cria chave, e trocar a chave vira outro documento. Aceita `["rg", "cnh"]` (texto solto = padrões). Máximo 12 itens.
|
|
102
|
+
- **Documento com foto = `id_document` com `accepted_types`** (30/10): a lista dos documentos ACEITOS (`rg`, `cnh`, `cpf`;
|
|
103
|
+
um ou mais) e a pessoa manda QUALQUER UM deles. Ex.: `{"key": "id_document", "accepted_types": ["rg", "cnh"]}` = aceita
|
|
104
|
+
RG ou CNH. Sem a lista = os três. Com um só aceito a página não pergunta o tipo. O nome que a pessoa e a equipe veem
|
|
105
|
+
diz os aceitos ("Documento com foto (RG ou CNH)") e a IA confere se a foto é do tipo que a pessoa ESCOLHEU na página
|
|
106
|
+
(tocou em CNH e mandou RG = dúvida). Lista vazia, tipo desconhecido
|
|
107
|
+
ou `accepted_types` em outro item = 422. **Quando o usuário pedir "RG ou CNH", use isto** — `rg`, `cnh` e `cpf` como
|
|
108
|
+
itens soltos continuam aceitos, mas cada um EXIGE aquele documento (pedir os três soltos = a pessoa manda os três), e a
|
|
109
|
+
tela não os oferece mais.
|
|
110
|
+
- `accepts_pdf`: só no comprovante (sempre) e nos criados; RG/CNH/CPF/selfie com PDF = 422.
|
|
111
|
+
- `attach_to_contract: true` = o arquivo entra como páginas no contrato assinado. Teto: 10 arquivos anexados por
|
|
112
|
+
contrato (itens "anexar" × pessoas que mandam) — 422 ao salvar o modelo e `anexos_demais` ao enviar.
|
|
113
|
+
- `from_witnesses: true` = as testemunhas também mandam aquele documento (padrão: sim nos fixos, não nos criados).
|
|
114
|
+
- Com anexo e testemunha o contrato fecha com DUAS vias: testemunha recebe a sua SEM as páginas de anexo.
|
|
115
|
+
- `roles_layout.ai_document_check: true` liga a conferência das FOTOS e dos PDFs de até 5 páginas pela IA (só com a
|
|
116
|
+
chave da OpenAI da conta; gasta crédito dela). Arquivo em dúvida não conta como entregue até a pessoa mandar outro ou
|
|
117
|
+
tocar "Manter" (da 2ª dúvida em diante); a equipe vê o aviso em "Ver documentos". Falha da IA = arquivo aceito. PDF com
|
|
118
|
+
mais de 5 páginas não é conferido.
|
|
119
|
+
- **`description`** (30/10, só nos documentos criados `custom_*`, opcional, até 300 caracteres): explica à IA o que o
|
|
120
|
+
documento é, além do nome (ex.: `"description": "comprovante de inscrição no conselho de classe, com o nome da pessoa"`).
|
|
121
|
+
Quem assina NÃO vê. Em documento fixo = 422. Quando o usuário criar um documento cujo nome não diz tudo, sugira escrever.
|
|
122
|
+
- `required_proofs` continua aceito (só as três antigas) e preserva os itens novos; prefira `proof_requests`.
|
|
123
|
+
- `_proofs` ganhou `requests`, `label`/`ai_check`/`ai_kept` por prova e `seal_blocked` (lista: anexo que não entrou no
|
|
124
|
+
selo; o contrato fica parado em `signed_pending_seal` e só dá para REPROVAR aquele documento, com o motivo — aí ele
|
|
125
|
+
volta a esperar a aprovação).
|
|
126
|
+
- Gatilhos do Flow novos: `signature_awaiting_approval`, `signature_proofs_approved`, `signature_proofs_rejected`, com
|
|
127
|
+
`{{contrato.documentos_situacao}}` e `{{contrato.assinante.documentos_situacao}}` para condicionar.
|
|
128
|
+
|
|
129
|
+
## Confirmar pelo WhatsApp (28/10)
|
|
130
|
+
Quem recebe o link pelo WhatsApp pode confirmar que é ela mandando uma frase pronta (com um código `CT-XXXXXX`) para o
|
|
131
|
+
WhatsApp do contrato, em vez de digitar o código de 6 dígitos — resolve a caixa oficial com a janela de 24 h fechada.
|
|
132
|
+
Só vale do telefone da pessoa e na caixa do contrato. A mensagem aparece na conversa, mas a IA, os fluxos e as
|
|
133
|
+
automações não respondem a ela. Não há ferramenta: é só a página da pessoa.
|
|
134
|
+
|
|
135
|
+
## Caixa do modelo e as mensagens (29/10)
|
|
136
|
+
- `roles_layout.communication: {inbox_id, code_message, invite_message, copy_message, proofs_again_message,
|
|
137
|
+
code_template, invite_template, copy_template, proofs_again_template}`. A caixa (`inbox_id`, WhatsApp da conta: oficial ou QR Code) vale para TODA a comunicação dos contratos
|
|
138
|
+
do modelo: código, link de quem assina e das testemunhas, cópia assinada e o link do contrato para divulgar.
|
|
139
|
+
- Caixa de QR Code: os quatro textos (em branco = o texto de sempre). `code_message` precisa ter `{{codigo}}`;
|
|
140
|
+
`invite_message`, `copy_message` e `proofs_again_message` (pedido de documento de novo), `{{link}}`; `{{contrato}}`
|
|
141
|
+
põe o nome e, no pedido de documento de novo, `{{motivo}}` põe o motivo da equipe. Sem a variável = 422.
|
|
142
|
+
- Caixa oficial: os quatro modelos (`code_template`, `invite_template`, `copy_template`, `proofs_again_template`), cada um `{name, language}` de um modelo do WhatsApp APROVADO com UMA variável no corpo e
|
|
143
|
+
sem foto/arquivo/variável no cabeçalho; o do código é de Autenticação. `null` tira. Para criar o modelo na Meta use
|
|
144
|
+
`lionchat_inboxes_whatsapp_templates_create` (o do código: categoria `AUTHENTICATION`, corpo com
|
|
145
|
+
`add_security_recommendation: true`, rodapé `code_expiration_minutes: 10`, botão `OTP`/`COPY_CODE`) — confirme com o
|
|
146
|
+
usuário antes: cada código enviado por ele é cobrado pela Meta.
|
|
147
|
+
- Mande só o que muda: o que não vem fica o guardado.
|
|
148
|
+
- O código de 6 dígitos aparece no painel (decisão do dono, 29/10); no webhook de saída ele vai escondido.
|
|
149
|
+
|
|
150
|
+
## Como a pessoa pode assinar (29/10)
|
|
151
|
+
- `roles_layout.signature_methods`: `["drawn","typed"]` (os dois, o padrão quando não vem), `["drawn"]` (só desenhar) ou
|
|
152
|
+
`["typed"]` (só digitar o nome). Lista vazia ou valor desconhecido = 422. Vale para os próximos envios; o contrato
|
|
153
|
+
grava o que valia quando saiu.
|
|
154
|
+
|
|
155
|
+
## Link do contrato para divulgar (28/10; formulário e código desde 29/10)
|
|
156
|
+
- No modelo, `roles_layout.public_link: {enabled: true}`. O link usa a caixa de `communication` (o `inbox_id` dentro de
|
|
157
|
+
`public_link` só vale para modelo sem caixa em `communication`). A leitura devolve `{enabled, inbox_id, path}` — o
|
|
158
|
+
endereço é o domínio da instalação + `path` (`/contrato/<código>`). Mande `regenerate: true` para trocar o código (o
|
|
159
|
+
endereço antigo para de funcionar). Salvar sem `regenerate` mantém o mesmo endereço; desligar e religar também.
|
|
160
|
+
- Só para modelo com UM assinante principal e sem `sender_signs` (422 com `public_link` no texto do erro), e só caixa de
|
|
161
|
+
WhatsApp (oficial ou QR Code). Na oficial o link fica "indisponível" até o modelo do código estar aprovado.
|
|
162
|
+
- Quem abre o endereço preenche um formulário (os dados do contrato, o WhatsApp dela e as testemunhas do modelo), recebe
|
|
163
|
+
um código no WhatsApp digitado e, com o código certo, o contrato dela nasce com os dados preenchidos
|
|
164
|
+
(`additional_attributes.link_padrao: true`). Contato que já existe não tem a ficha alterada. A mesma pessoa (mesmo
|
|
165
|
+
WhatsApp e mesmo CPF) preenchendo de novo em 24 h ganha contrato novo e o anterior sem assinatura é cancelado.
|
|
166
|
+
- **Limite do mês:** o contrato do link só nasce (e conta) depois que a pessoa confirma o código. Quem abre e some não
|
|
167
|
+
gasta vaga.
|
|
168
|
+
|
|
49
169
|
## Como mandar um contrato (receita)
|
|
50
170
|
1. `lionchat_signature_documents_list` → escolha o modelo (ou crie um `text` com `signature_documents_create`;
|
|
51
171
|
variáveis em `signature_documents_field_catalog`).
|
|
@@ -73,21 +193,26 @@ baixar na tela do documento. O código de 6 dígitos de quem assina por e-mail c
|
|
|
73
193
|
- **Fila única de conversão do Word**: uma conversão por vez em toda a instalação (todas as contas); pela tela espera-se até 10 s, automação/macro/fluxo/formulário até 2 s.
|
|
74
194
|
Passou disso o envio/prévia volta `422 fila_cheia` — é só repetir em instantes (o modelo está bom).
|
|
75
195
|
- **Limite mensal** (`signature_envelopes_limits`): cada contrato criado consome 1 vaga; cancelar não devolve.
|
|
196
|
+
Exceção (28/10): o contrato que nasce do link do modelo só conta depois que a pessoa confirma. O teto por conta é
|
|
197
|
+
ajustado pelo operador da plataforma (fora do MCP).
|
|
76
198
|
- **PDFs** (original, assinado, evidências) e o **QR de conferência** só existem pela tela/download autenticado —
|
|
77
199
|
não há ferramenta que devolva os bytes. O `sealed_sha256` é o hash do documento final. Exceção desde 15/10: a via
|
|
78
200
|
assinada vira anexo da mensagem na conversa de quem assinou por WhatsApp, então aparece nas ferramentas de mensagens
|
|
79
201
|
da conversa (`conversations_messages_*`).
|
|
80
202
|
- **Só pela tela, de propósito** (existem na API, mas NÃO como ferramenta): importar um Word (`import_docx`),
|
|
81
|
-
pré-visualizar modelo ou rascunho (`preview`, `preview_draft`) e baixar PDF (`download`).
|
|
82
|
-
|
|
203
|
+
pré-visualizar modelo ou rascunho (`preview`, `preview_draft`) e baixar PDF (`download`). Nesta área o conector
|
|
204
|
+
não sobe o Word do modelo nem baixa o PDF — não prometa "vou gerar a prévia" ou "vou baixar o assinado"; oriente a tela.
|
|
83
205
|
- **Assinar no painel** ("eu também assino", 08/09): `lionchat_signature_envelopes_sign_as_sender` assina como o
|
|
84
206
|
REMETENTE (a pessoa do token) — nunca no lugar do cliente. Manda `signature_image` (PNG em base64 com prefixo
|
|
85
|
-
`data:image/png;base64,...`), opcional `location {latitude, longitude, accuracy}` (vai pra prova)
|
|
86
|
-
`remember_drawing
|
|
207
|
+
`data:image/png;base64,...`), opcional `location {latitude, longitude, accuracy}` (vai pra prova),
|
|
208
|
+
`remember_drawing` e (28/10) `signature_method` (`drawn` ou `typed`) + `typed_name` — a folha de assinaturas diz
|
|
209
|
+
"Assinatura desenhada à mão" ou "Assinatura digitada: <nome>"; sem o campo, não diz nada. 422: `nao_e_sua` (não é o remetente deste contrato), `ja_assinado`, `sem_desenho`. Era a
|
|
87
210
|
última que faltava? o contrato fecha e o PDF final é gerado em seguida. Os que esperam você: `status=falta_eu`.
|
|
88
|
-
- **Envio por outros caminhos**: ação `send_signature_document` no FlowBuilder
|
|
211
|
+
- **Envio por outros caminhos**: ação `send_signature_document` no FlowBuilder (28/10: `collection` `ready`/`form`,
|
|
212
|
+
`message` junto do link e `send_link: false` para só gerar; o contrato criado vira `{{contrato.*}}`, com
|
|
213
|
+
`{{contrato.link}}`, para os blocos seguintes), na Macro e na Automação;
|
|
89
214
|
bloco `generate_contract` no Formulário público (gera pelas respostas e manda o link). Gatilhos do Flow
|
|
90
|
-
`signature_*` (
|
|
215
|
+
`signature_*` (12 acontecimentos, 29/10) trazem `{{contrato.*}}` — ver `lionchat_flows_schema_reference`.
|
|
91
216
|
|
|
92
217
|
## Onde o cliente vê
|
|
93
218
|
Menu **Assinaturas** (modelos e contratos, filtros, "Falta você assinar"), aba **Contratos** na ficha do contato,
|
|
@@ -67,7 +67,7 @@ Quando existir endpoint específico, prefira:
|
|
|
67
67
|
Conversa com 200 mensagens? **Não baixe tudo**:
|
|
68
68
|
|
|
69
69
|
1. `conversations_show` (1 chamada) → metadata + última mensagem
|
|
70
|
-
2. Se precisa contexto: pegue só as últimas 20-30 mensagens com `conversations_messages_list` (use `
|
|
70
|
+
2. Se precisa contexto: pegue só as últimas 20-30 mensagens com `conversations_messages_list` (sem parâmetro vêm as últimas 20; para as anteriores use `before_id` com o `id` da mais antiga recebida)
|
|
71
71
|
3. Pra análise/resumo completo, use `conversations_messages_list` paginando — é a fonte do texto.
|
|
72
72
|
|
|
73
73
|
> **Atenção:** `conversations_transcript` NÃO retorna o texto da conversa pra você ler. Ele EXIGE o
|
|
@@ -201,7 +201,7 @@ própria: cada agente de ligação tem um objetivo e **não ocupa vaga de IA do
|
|
|
201
201
|
|
|
202
202
|
| Ferramenta | Para quê |
|
|
203
203
|
|---|---|
|
|
204
|
-
| `captain_call_agents_list` | lista os agentes de ligação e `meta.dial_inboxes` (caixas que podem ligar) |
|
|
204
|
+
| `captain_call_agents_list` | lista os agentes de ligação e `meta.dial_inboxes` (caixas que podem ligar). É daqui que sai o `aiCallAgentId` do bloco "Ligar com IA" — **nunca** o id de um agente de texto |
|
|
205
205
|
| `captain_call_agents_create` / `_update` / `_duplicate` / `_destroy` | cadastro |
|
|
206
206
|
| `captain_call_test_phones_list` / `_create` / `_destroy` | números autorizados a receber ligação de teste |
|
|
207
207
|
| `captain_call_agents_test_call` | **liga de verdade** para um número de teste cadastrado |
|
|
@@ -258,9 +258,13 @@ teto de 1380**).
|
|
|
258
258
|
|
|
259
259
|
(O exemplo acima soma exatamente 1380: 30 + 240 + 1110.)
|
|
260
260
|
|
|
261
|
-
Dispara quando o CLIENTE fica inativo após resposta da IA.
|
|
262
|
-
|
|
263
|
-
|
|
261
|
+
Dispara quando o CLIENTE fica inativo após resposta da IA. Passo SEM ferramenta marcada: o motor de
|
|
262
|
+
follow-up só redige a mensagem de retomada. Desde 24/10, o texto de cada passo (até 2.000 caracteres) aceita
|
|
263
|
+
a mesma menção de ferramenta do cenário, `[Nome](tool://slug)` (nativa = id, personalizada = slug, fluxo =
|
|
264
|
+
`flow_<id>`): com menção a uma ferramenta que o agente pode usar e janela de 24h aberta, o passo roda um
|
|
265
|
+
turno completo da IA só com as ferramentas marcadas (+ as de leitura). Transferir/encerrar só valem se
|
|
266
|
+
`handoff`/`resolve_conversation` estiverem marcados no passo. `paused=true` no assistente corta os
|
|
267
|
+
follow-ups também.
|
|
264
268
|
|
|
265
269
|
### "A IA nunca faz o follow-up" — o conserto é de 29/07, NÃO de 24/07
|
|
266
270
|
|
|
@@ -842,17 +846,35 @@ automática. Ver a seção de variáveis de conta acima.
|
|
|
842
846
|
2. `reports_list_*` (agent_overview) com `since=7d_ago`, `until=now`
|
|
843
847
|
3. Sintetize: agente X com Y resoluções, tempo médio Z
|
|
844
848
|
|
|
845
|
-
### "Enviar mensagem com anexo (
|
|
846
|
-
1. `upload_create` (
|
|
849
|
+
### "Enviar mensagem com anexo (foto, vídeo, áudio, PDF, documento)"
|
|
850
|
+
1. `upload_create` com `external_url` (link público de DOWNLOAD do arquivo) → resposta traz `file_url` e `blob_id`.
|
|
851
|
+
Pelo conector o arquivo sempre vai POR LINK — não existe envio direto do computador.
|
|
847
852
|
2. `conversations_messages_create` passando o `blob_id` (signed_id) dentro do array `attachments`:
|
|
848
853
|
```json
|
|
849
854
|
{ "content": "Segue o documento", "message_type": "outgoing", "attachments": ["<blob_id>"] }
|
|
850
855
|
```
|
|
851
856
|
Cada item de `attachments` é o `blob_id` retornado pelo upload. Pode mandar vários.
|
|
852
857
|
3. O mesmo padrão vale pra anexar mídia num card do Kanban (use o `blob_id` no campo de anexo do card).
|
|
853
|
-
4. **
|
|
854
|
-
|
|
855
|
-
|
|
858
|
+
4. **Tipos aceitos por link (23/10/2026):** foto, vídeo, áudio e documentos (PDF, Word, Excel, CSV, ZIP...). Até
|
|
859
|
+
23/10 o link só aceitava foto e vídeo — se uma resposta antiga sua disse que PDF não dava, isso mudou. Áudio e
|
|
860
|
+
documento respeitam o teto por tipo (`lionchat_upload_limits_show`).
|
|
861
|
+
5. **Link que abre uma PÁGINA é recusado** ("O link abre uma página, não o arquivo"): é o caso do link de
|
|
862
|
+
visualização do Google Drive (`.../file/d/<ID>/view`). Use o download direto
|
|
863
|
+
`https://drive.google.com/uc?export=download&id=<ID>` — e o arquivo precisa estar com acesso "qualquer pessoa com o
|
|
864
|
+
link". Na dúvida, confira antes com `lionchat_upload_validate` (`valid=true` = vai funcionar).
|
|
865
|
+
6. Funciona igual na conversa de um **grupo** do WhatsApp (caixa QR Code): a mensagem com anexo chega no grupo.
|
|
866
|
+
|
|
867
|
+
### "Mandar um relatório em PDF todo dia num grupo do WhatsApp"
|
|
868
|
+
1. Leia os números com as ferramentas de relatório (`lionchat_reports_summary`, `lionchat_custom_dashboards_widget_data`,
|
|
869
|
+
`lionchat_conversations_meta`...) e monte o PDF do seu lado.
|
|
870
|
+
2. Publique o PDF num link de download público (ex.: pasta do Google Drive com acesso "qualquer pessoa com o link" —
|
|
871
|
+
o link de visualização não serve, veja o item 5 acima).
|
|
872
|
+
3. Ache a conversa do grupo: `lionchat_conversations_list` na caixa WhatsApp QR Code (grupo só existe nela) ou busca
|
|
873
|
+
pelo nome do grupo.
|
|
874
|
+
4. `upload_create` com o link → `conversations_messages_create` na conversa do grupo com o `blob_id` em `attachments`.
|
|
875
|
+
5. **O conector não agenda nada**: "todo dia" depende de uma tarefa agendada do lado de quem usa o conector. Se texto
|
|
876
|
+
basta, prefira `lionchat_report_alerts_create` — o próprio servidor manda o resumo diário de um relatório
|
|
877
|
+
personalizado no grupo, sem depender de ninguém (siga o fluxo seguro da descrição: criar desligado, prévia, ligar).
|
|
856
878
|
|
|
857
879
|
## Cuidados com tools de criação
|
|
858
880
|
|