@lionchat/mcp-server 1.22.0 → 1.24.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/docs/instructions.md +21 -2
- package/dist/docs/resources/agenda-multiplas-unidades.md +69 -1
- package/dist/docs/resources/api-conventions.md +56 -2
- package/dist/docs/resources/best-practices.md +71 -2
- package/dist/docs/resources/data-model.md +34 -7
- package/dist/docs/resources/filtros-e-relatorios.md +15 -0
- package/dist/docs/resources/flowbuilder-design-guide.md +62 -13
- package/dist/docs/resources/glossary.md +4 -2
- package/dist/docs/resources/kanban-deep-dive.md +133 -24
- package/dist/docs/resources/troubleshooting.md +78 -0
- package/dist/tools.js +37 -6
- package/dist/tools.js.map +1 -1
- package/endpoints.json +880 -125
- package/package.json +1 -1
|
@@ -16,6 +16,7 @@ Container de etapas. Conta pode ter vários funis (ex: "Vendas", "Pós-venda", "
|
|
|
16
16
|
| `archived` | Boolean — funis arquivados não aparecem na UI ativa |
|
|
17
17
|
| `active` | Boolean — controla se aceita movimentação |
|
|
18
18
|
| `settings` | jsonb — config customizada (ex: cores, automações) |
|
|
19
|
+
| `settings.agents` | agentes do funil. Grave `[{"id": <id do agente>}]` — cada item é um OBJETO, nunca número solto (ids de `lionchat_agents_list`); o sistema completa nome, e-mail, cargo e foto — é o que o editor do funil, o card e a conversa mostram. Agente de outra conta fica sem nome e sem acesso. `settings` é substituído INTEIRO no update: leia o funil antes e reenvie goals+agents+teams+automations. |
|
|
19
20
|
|
|
20
21
|
### Stages (Etapas) — dentro de `funnel.stages`
|
|
21
22
|
|
|
@@ -65,8 +66,8 @@ Stages NÃO são tabela separada. São armazenadas como jsonb dentro do Funnel:
|
|
|
65
66
|
|
|
66
67
|
| Campo | Tipo | O que guarda |
|
|
67
68
|
|---|---|---|
|
|
68
|
-
| `win_reasons` | jsonb array | **Motivos de Ganho** — `[{id, title}]
|
|
69
|
-
| `loss_reasons` | jsonb array | **Motivos de Perda** — mesma estrutura
|
|
69
|
+
| `win_reasons` | jsonb array | **Motivos de Ganho** — `[{id, title}]`, `id` em **texto estável** (nunca número). Aparecem como dropdown quando o vendedor marca "Ganho" num card. NATIVO. NÃO usar custom_attribute. |
|
|
70
|
+
| `loss_reasons` | jsonb array | **Motivos de Perda** — mesma estrutura e mesma regra do `id`. Aparece ao marcar "Descartado". |
|
|
70
71
|
| `checklist_templates` | jsonb array | Templates de checklist reusáveis — `[{id, name, items: [{id, text}]}]`. Aplicados manualmente ou via automação `apply_checklist_template`. |
|
|
71
72
|
| `global_custom_attributes` | jsonb array | Atributos globais que aparecem em TODOS os cards de TODOS os funis — `[{name, type, is_list, list_values}]`. |
|
|
72
73
|
| `config` | jsonb hash | Configurações gerais (title, default_view, auto_assignment, support_email, dragbar_enabled, etc) |
|
|
@@ -82,7 +83,8 @@ Stages NÃO são tabela separada. São armazenadas como jsonb dentro do Funnel:
|
|
|
82
83
|
| DELETE | `/api/v1/accounts/{id}/kanban_config` | Remove (não afeta cards/funis) |
|
|
83
84
|
| POST | `/api/v1/accounts/{id}/kanban_config/test_webhook` | Dispara payload de teste |
|
|
84
85
|
|
|
85
|
-
**
|
|
86
|
+
**Body raiz ou com o envelope `kanban_config` — os dois funcionam** (conferido 21/09: `{"loss_reasons": [...]}` na
|
|
87
|
+
raiz grava e recusa normalmente). Exemplo com envelope:
|
|
86
88
|
|
|
87
89
|
```json
|
|
88
90
|
PUT /api/v1/accounts/43/kanban_config
|
|
@@ -100,7 +102,11 @@ PUT /api/v1/accounts/43/kanban_config
|
|
|
100
102
|
}
|
|
101
103
|
```
|
|
102
104
|
|
|
103
|
-
|
|
105
|
+
**Regras dos motivos** (servidor, desde 21/09): `id` em texto estável — número é convertido (`7` → `"7"`), mas mande
|
|
106
|
+
texto; a lista SUBSTITUI a atual, então reenvie os MESMOS `id` dos motivos que já existem (trocar o `id` tira o nome
|
|
107
|
+
dos cards já marcados); lista de textos soltos, motivo sem `id`/`title` ou `id` repetido → **422** com o formato
|
|
108
|
+
(antes, a lista de textos APAGAVA os motivos em silêncio). No card: `item_details.loss_reason`/`win_reason` = o `id`
|
|
109
|
+
(texto) + `reason` = o título. Detalhes em `lionchat://docs/api-conventions` → "Estrutura interna das listas".
|
|
104
110
|
|
|
105
111
|
**`win_reasons` e `loss_reasons` aceitam array de OBJETOS `{id, title}`, NÃO strings simples.** Strings causam 500. O `id` é qualquer string única (UUID ou slug curto tipo `wr-1`).
|
|
106
112
|
|
|
@@ -114,7 +120,7 @@ Se mandar `{"win_reasons": [...]}` direto (sem o wrapper `kanban_config`) → **
|
|
|
114
120
|
| Atributo que aparece em TODO card | `kanban_config.global_custom_attributes` | ❌ custom_attribute de conversation |
|
|
115
121
|
| Atributo só de um contato (CPF, endereço) | `custom_attribute_definitions` model=contact_attribute | ❌ kanban_config |
|
|
116
122
|
| Atributo só de uma conversa (motivo, tag interna) | `custom_attribute_definitions` model=conversation_attribute | ❌ kanban_config |
|
|
117
|
-
|
|
|
123
|
+
| Valor de um campo num card (aparece na aba Campos) | `item_details.custom_attributes` — LISTA `[{name, type, value}]`, com o campo definido em `kanban_config.global_custom_attributes` | ❌ `kanban_item.custom_attributes` (coluna que nenhuma tela mostra) |
|
|
118
124
|
|
|
119
125
|
### KanbanItem (Card)
|
|
120
126
|
Um card individual dentro de uma etapa.
|
|
@@ -130,7 +136,7 @@ Um card individual dentro de uma etapa.
|
|
|
130
136
|
| `origin_conversation_display_id` | Conversa em que o card NASCEU (só preenchida se o vínculo já foi movido). É o que o relatório de origem de lead usa, pra uma venda não mudar de mês nem de anúncio quando o card anda. |
|
|
131
137
|
| `linked_conversations` | jsonb array `[{display_id: 123}, {display_id: 456}]` — múltiplas conversas |
|
|
132
138
|
| `item_details` | jsonb (ver abaixo) |
|
|
133
|
-
| `custom_attributes` | jsonb — campos
|
|
139
|
+
| `custom_attributes` | jsonb (coluna própria) — **NÃO aparece na aba Campos, no filtro do quadro nem na busca**. Os campos visíveis do card moram em `item_details.custom_attributes` (ver abaixo) |
|
|
134
140
|
| `assigned_agents` | jsonb array de agentes responsáveis |
|
|
135
141
|
| `activities` | jsonb array — log de atividades |
|
|
136
142
|
| `checklist` | **O que fica guardado:** jsonb array de tarefas do card (item: `text`/`completed`/`position` + `group_id`/`group_name` opcionais para agrupar). **O que a API devolve é OUTRA coisa** — ver o aviso logo abaixo |
|
|
@@ -172,13 +178,31 @@ Um card individual dentro de uma etapa.
|
|
|
172
178
|
"offers": [
|
|
173
179
|
{"id": 12, "title": "Pro 12 meses", "value": 4800}
|
|
174
180
|
],
|
|
175
|
-
"custom_attributes":
|
|
176
|
-
"
|
|
177
|
-
|
|
181
|
+
"custom_attributes": [
|
|
182
|
+
{"name": "Origem do Lead", "type": "string", "value": "Facebook Ads"}
|
|
183
|
+
]
|
|
178
184
|
}
|
|
179
185
|
```
|
|
180
186
|
|
|
181
|
-
**`value`** é onde fica o valor monetário do negócio (usado em pipelines).
|
|
187
|
+
**`value`** é onde fica o valor monetário do negócio (usado em pipelines). Sempre NÚMERO — texto quebra a
|
|
188
|
+
soma das colunas.
|
|
189
|
+
|
|
190
|
+
**`custom_attributes` é uma LISTA, nunca um objeto `{chave: valor}`** (conferido no código em 18/09/2026).
|
|
191
|
+
Cada item é `{name, type, value}` e só aparece na aba Campos se `name` **e** `type` baterem exatamente com
|
|
192
|
+
um campo de `kanban_config.global_custom_attributes` (leia com `lionchat_kanban_config_list`).
|
|
193
|
+
|
|
194
|
+
Como gravar pelo `lionchat_kanban_items_update` (`kanban_item.item_details`):
|
|
195
|
+
- O `item_details` é MESCLADO só no 1º nível: cada chave enviada **troca a chave inteira** no card. Por isso
|
|
196
|
+
a lista `custom_attributes` enviada **substitui a lista toda** — leia o card com `lionchat_kanban_items_show`
|
|
197
|
+
e reenvie TODOS os campos, com o alterado.
|
|
198
|
+
- Mandar objeto (`{"origem_lead": "Facebook Ads"}`) no lugar da lista **APAGA todos os campos do card**: o
|
|
199
|
+
servidor só aceita itens `{name, type, value}` e o objeto vira vazio.
|
|
200
|
+
- Lista fechada de chaves do `item_details` (outras são descartadas em silêncio): title, description, status,
|
|
201
|
+
reason, win_reason, loss_reason, attributed_to, duplicated_from_id, priority, value, currency,
|
|
202
|
+
custom_attributes, offers, closed_offers, closed_offer, deadline_at, scheduling_type, scheduled_at,
|
|
203
|
+
conversation_id, automations, notes.
|
|
204
|
+
- Para mudar UM campo sem reenviar a lista, as ações de automação/macro `update_card_attribute`
|
|
205
|
+
(`[{funnel_id, attribute_key: "<nome do campo>", value}]`) mexem só naquela entrada.
|
|
182
206
|
|
|
183
207
|
### assigned_agents
|
|
184
208
|
|
|
@@ -198,6 +222,10 @@ Um card individual dentro de uma etapa.
|
|
|
198
222
|
|
|
199
223
|
Múltiplos agentes podem ter o mesmo card. `source` pode ser `manual`, `automation`, `inherited_from_conversation`.
|
|
200
224
|
|
|
225
|
+
**Para GRAVAR** (`kanban_items_create`/`_update`, `kanban_item.assigned_agents`) o formato é outro: LISTA de
|
|
226
|
+
NÚMEROS — `[5, 12]`. O sistema completa nome, e-mail e foto. A lista enviada **substitui** a atual (mande
|
|
227
|
+
todos que devem ficar). Objetos `{id, ...}` são ignorados em silêncio e a lista não muda.
|
|
228
|
+
|
|
201
229
|
**Agente do card vira participante das conversas (2026-06):** atribuir um agente a um card do Kanban
|
|
202
230
|
(via `kanban_agents` ou ao vincular uma conversa) agora também o adiciona como PARTICIPANTE de todas
|
|
203
231
|
as conversas do card (a principal `conversation_display_id` + as de `linked_conversations`). É a 4ª
|
|
@@ -332,6 +360,9 @@ Endpoint: `GET /api/v2/kanban/items/counts` retorna contagem + soma por etapa.
|
|
|
332
360
|
Funis agora têm visibilidade por usuário. Um funil é visível pra alguém quando:
|
|
333
361
|
- é admin da conta, OU
|
|
334
362
|
- tem permissão `kanban_view`/`kanban_manage` (custom role), OU
|
|
363
|
+
- tem `funnel_manage` (21/09): quem pode criar/editar/arquivar qualquer funil passou a **enxergar** qualquer funil
|
|
364
|
+
na lista — antes editava pela API um funil restrito que não aparecia em `funnels_list`. Só o FUNIL: os cards do
|
|
365
|
+
funil restrito seguem a régua de card, OU
|
|
335
366
|
- o funil está aberto a todos, OU
|
|
336
367
|
- a pessoa participa do funil (está em `settings.agents`, OU é membro de um TIME em `settings.teams` — novo 2026-07-21, membros resolvidos ao vivo — ou tem card atribuído)
|
|
337
368
|
|
|
@@ -342,6 +373,10 @@ Funis agora têm visibilidade por usuário. Um funil é visível pra alguém qua
|
|
|
342
373
|
`can_edit`, `can_move`, `can_delete`, `can_assign` (booleans)
|
|
343
374
|
- `kanban_items_move` sem permissão → **403** com mensagem traduzida (antes dava 500/sucesso falso)
|
|
344
375
|
- Cards embutidos na tela da conversa também respeitam a visibilidade
|
|
376
|
+
- **Aviso em tempo real do card (21/09):** `kanban_item.created/updated` deixou de ir para a conta inteira — vai só
|
|
377
|
+
para quem VÊ aquele card (mesma régua acima) + administradores. Quem perde a visão (card passou a outro
|
|
378
|
+
responsável, mudou de funil) recebe `kanban_item.deleted` com só `{id, funnel_id}`. Integração que escuta o
|
|
379
|
+
WebSocket com token de usuário restrito recebe menos eventos que antes; com token de administrador, nada muda.
|
|
345
380
|
|
|
346
381
|
**Pro MCP:** antes de tentar mover/editar card, confira os campos `can_*` do show — se `can_move`
|
|
347
382
|
é false, explique ao usuário que ele não tem acesso àquele funil em vez de tentar mesmo assim.
|
|
@@ -534,33 +569,44 @@ Use para: ações cross-cutting que envolvem conversa/contato/label, ou regras c
|
|
|
534
569
|
|
|
535
570
|
Cada card pode receber atributos custom de 3 origens diferentes. **A escolha do lugar muda completamente o resultado:**
|
|
536
571
|
|
|
537
|
-
### 1. `
|
|
572
|
+
### 1. `item_details.custom_attributes` (o VALOR de cada campo, dentro do card)
|
|
538
573
|
|
|
539
574
|
```json
|
|
540
|
-
|
|
541
|
-
"
|
|
542
|
-
"
|
|
543
|
-
|
|
544
|
-
}
|
|
575
|
+
[
|
|
576
|
+
{"name": "Origem do Lead", "type": "string", "value": "Google Ads"},
|
|
577
|
+
{"name": "Score", "type": "number", "value": 85}
|
|
578
|
+
]
|
|
545
579
|
```
|
|
546
580
|
|
|
547
|
-
-
|
|
548
|
-
-
|
|
549
|
-
|
|
550
|
-
-
|
|
581
|
+
- É o que a aba **Campos** do card mostra e edita (e o que o filtro do quadro, a busca e o fluxo leem)
|
|
582
|
+
- LISTA de `{name, type, value}`; `name` + `type` precisam bater com um campo do item 2 abaixo, senão o
|
|
583
|
+
valor fica gravado e **não aparece**
|
|
584
|
+
- Grava via `kanban_items_update` em `kanban_item.item_details.custom_attributes` — a lista enviada
|
|
585
|
+
**substitui a inteira** (leia o card antes e reenvie tudo). Objeto `{chave: valor}` no lugar da lista
|
|
586
|
+
**apaga** os campos do card
|
|
587
|
+
- Um campo só, sem reenviar a lista: ação `update_card_attribute` da automação/macro
|
|
588
|
+
|
|
589
|
+
> **NÃO confundir com a coluna `kanban_item.custom_attributes`** (objeto `{chave: valor}` direto no card):
|
|
590
|
+
> nenhuma tela a mostra — nem a aba Campos, nem o filtro, nem a busca. Só a ação "Alterar atributo do card"
|
|
591
|
+
> do FlowBuilder e a leitura do fluxo a usam. Para o cliente ver o dado, use a lista acima.
|
|
551
592
|
|
|
552
593
|
### 2. `kanban_config.global_custom_attributes` (atributos globais do Kanban)
|
|
553
594
|
|
|
554
595
|
```json
|
|
555
596
|
[
|
|
556
|
-
{"name": "Origem do Lead", "type": "
|
|
597
|
+
{"name": "Origem do Lead", "type": "string", "is_list": true, "list_values": ["Google", "Meta", "Indicação"]},
|
|
557
598
|
{"name": "Score", "type": "number", "is_list": false}
|
|
558
599
|
]
|
|
559
600
|
```
|
|
560
601
|
|
|
561
|
-
- Definido no `kanban_config` da conta
|
|
562
|
-
|
|
563
|
-
-
|
|
602
|
+
- Definido no `kanban_config` da conta (`lionchat_kanban_config_update`) — é a DEFINIÇÃO; o valor de cada
|
|
603
|
+
card mora no item 1
|
|
604
|
+
- Aparece em TODOS os cards de TODOS os funis (aba Campos do card)
|
|
605
|
+
- Tipos que a tela cria: `string` (texto), `number`, `date`, `boolean`; lista de opções = `is_list: true` +
|
|
606
|
+
`list_values`
|
|
607
|
+
- A lista enviada **substitui a inteira** — campo que não vier some da aba de todos os cards. Leia antes com
|
|
608
|
+
`lionchat_kanban_config_list`
|
|
609
|
+
- **Não confundir com `funnel.global_custom_attributes`** (coluna do funil): nenhuma tela lê aquele campo
|
|
564
610
|
- Use para: atributos que TODO card precisa ter
|
|
565
611
|
|
|
566
612
|
### 3. `custom_attribute_definitions` (atributos globais de contato/conversa)
|
|
@@ -607,3 +653,66 @@ Cada card pode receber atributos custom de 3 origens diferentes. **A escolha do
|
|
|
607
653
|
1. Algum card sem `item_details.value`?
|
|
608
654
|
2. Cards arquivados estão sendo contados?
|
|
609
655
|
3. Etapas "ganho"/"perdido" estão incluídas no cálculo?
|
|
656
|
+
|
|
657
|
+
## Conciliação de vendas — "Importar vendas" (2026-09-24)
|
|
658
|
+
|
|
659
|
+
O problema que ela resolve: **vendedor não marca a venda certa no card**. Aí o relatório de faturamento
|
|
660
|
+
mente — ou porque o card ficou aberto, ou porque o valor do card não é o valor que o cliente pagou.
|
|
661
|
+
|
|
662
|
+
A planilha do financeiro (ou de outro sistema) entra e:
|
|
663
|
+
|
|
664
|
+
| Situação do card no funil | O que acontece |
|
|
665
|
+
|---|---|
|
|
666
|
+
| Card **aberto** (mais antigo, se houver vários) | Grava o valor e marca **ganho com a DATA DA VENDA** |
|
|
667
|
+
| Card **já ganho** | Atualiza **só o valor**; a data do ganho dele **não muda** |
|
|
668
|
+
| Card marcado como **perdido** | **Não é tocado** — vai pra conferência humana |
|
|
669
|
+
| **Sem card nenhum** | Cria card já ganho (só se `criar_sem_card: true`) |
|
|
670
|
+
| Linha com telefone sem DDI, valor ilegível ou data no futuro | Vira **erro da linha**, com motivo |
|
|
671
|
+
|
|
672
|
+
### Ferramentas
|
|
673
|
+
|
|
674
|
+
1. `lionchat_kanban_sales_reconciliation_preview` — **confere e não grava nada**. Chame SEMPRE antes.
|
|
675
|
+
2. `lionchat_kanban_sales_reconciliation_apply` — aplica em segundo plano, devolve `run_id`.
|
|
676
|
+
3. `lionchat_kanban_sales_reconciliation_status` — acompanha até `completed`/`failed`.
|
|
677
|
+
|
|
678
|
+
O MCP **não sobe arquivo**: as linhas vão em `rows` (lista de objetos). Se a pessoa anexar uma planilha
|
|
679
|
+
na conversa, LEIA o arquivo, monte as linhas em JSON e chame a ferramenta — não peça pra ela converter.
|
|
680
|
+
Quem tem CSV/Excel e prefere a tela usa Kanban > botão azul **+** > **Importar vendas**, que lê o
|
|
681
|
+
arquivo, aponta as colunas e ainda oferece uma planilha de exemplo pra baixar.
|
|
682
|
+
|
|
683
|
+
### Formato de cada linha de `rows`
|
|
684
|
+
|
|
685
|
+
| Campo | Obrigatório | Como mandar |
|
|
686
|
+
|---|---|---|
|
|
687
|
+
| `phone` | sim | Com o código do país: `5511999887766` |
|
|
688
|
+
| `value` | sim | `1500`, `"1500,00"`, `"R$ 1.500,00"` ou `"1,500.00"` |
|
|
689
|
+
| `sale_date` | sim | `"01/08/2026"` ou `"2026-08-01"` — o dia em que a venda aconteceu |
|
|
690
|
+
| `name` | não | Nome do cliente (usado no título do card novo) |
|
|
691
|
+
| `email` | não | |
|
|
692
|
+
| `agent` | não | Nome ou e-mail do vendedor |
|
|
693
|
+
| `order_id` | não | Número do pedido, guardado no card |
|
|
694
|
+
|
|
695
|
+
### O que você PRECISA saber antes de aplicar
|
|
696
|
+
|
|
697
|
+
- **O telefone tem que vir com o código do país** (`5511999887766`). O sistema **não** completa o 55 —
|
|
698
|
+
linha sem DDI é recusada com motivo. Celular antigo sem o nono dígito é encontrado do mesmo jeito.
|
|
699
|
+
- **A data da venda é o ponto da funcionalidade.** É ela que faz a venda contar no mês certo do
|
|
700
|
+
relatório. Sem data, a linha é recusada — nunca vira "hoje" em silêncio.
|
|
701
|
+
- **A conciliação não dispara conversão por conta própria.** Quem dispara é o caminho normal do ganho
|
|
702
|
+
(Meta/GA4/Google Ads), e só nos funis com o evento de Ganho configurado. Por isso rodar a mesma
|
|
703
|
+
planilha duas vezes não reenvia conversão: o identificador do evento de ganho é estável.
|
|
704
|
+
- **Rodar a mesma planilha duas vezes é seguro**: card já com aquele valor volta como `sem_mudanca` e
|
|
705
|
+
nem é gravado.
|
|
706
|
+
- **`criar_sem_card: true` abre uma CONVERSA nova por card criado**, e conversa nova acorda o que a conta
|
|
707
|
+
tiver em "Conversa criada" (automação, fluxo, notificação). Avise a pessoa antes de ligar isso numa
|
|
708
|
+
planilha grande.
|
|
709
|
+
- **Automação de funil que duplica o card no ganho continua rodando** (é um dos dois motores de
|
|
710
|
+
automação, ver a seção acima). A conferência conta quantos cards de pós-venda vão nascer.
|
|
711
|
+
- **O vendedor da planilha só entra em card SEM responsável** — nunca troca quem já está lá.
|
|
712
|
+
- **Porta:** administrador ou cargo com "importar e exportar cards".
|
|
713
|
+
|
|
714
|
+
### Diagnóstico: "a venda entrou no mês errado"
|
|
715
|
+
|
|
716
|
+
Olhe `item_details.status_changed_at` do card: ele é comparado como **texto** contra a janela do
|
|
717
|
+
relatório, e tem que terminar em `Z`. `2026-08-01T03:00:00Z` é 1º de agosto em Brasília; gravar
|
|
718
|
+
`2026-08-01T00:00:00Z` joga a venda pra julho.
|
|
@@ -722,3 +722,81 @@ sai. Confira `last_incoming_message_at` na conversa: vazio ou antigo = janela fe
|
|
|
722
722
|
Desde 02/09 a mensagem que chega ADOTA essa conversa (não abre outra). Se um fluxo/automação/IA
|
|
723
723
|
dependia do gatilho **"conversa criada"** para acordar nesse caso, ele não roda mais na adoção —
|
|
724
724
|
troque para **"Conversa reaberta"**.
|
|
725
|
+
|
|
726
|
+
## "A mensagem aparece como 'Mensagem de tipo não suportado'" — 17/09/2026
|
|
727
|
+
|
|
728
|
+
O que significa depende do canal.
|
|
729
|
+
|
|
730
|
+
**WhatsApp oficial (Cloud API).** A Meta entrega a mensagem com `type: unsupported` e o erro 131051,
|
|
731
|
+
e **não manda o conteúdo em caso nenhum** — nem texto, nem o vínculo com a mensagem original. O que
|
|
732
|
+
ela manda é o SUBTIPO (`unsupported.type`), e desde 17/09 o aviso na conversa diz o que era: "Convite
|
|
733
|
+
para entrar em um grupo", "Mensagem com botões", "Menu de opções", "Enquete", "Foto ou vídeo de
|
|
734
|
+
visualização única", "O contato apagou uma mensagem", "O contato editou uma mensagem". Quando a
|
|
735
|
+
própria Meta não sabe (`unknown`, a maioria dos casos) o texto continua sendo
|
|
736
|
+
"Mensagem de tipo não suportado.".
|
|
737
|
+
|
|
738
|
+
Consequência prática: nessa caixa **não existe API que recupere o conteúdo**. Se o cliente perguntar
|
|
739
|
+
o que a pessoa mandou, a resposta honesta é o tipo, não o conteúdo. Não prometa recuperar.
|
|
740
|
+
|
|
741
|
+
**WhatsApp QR Code.** Aqui o conteúdo chega inteiro e desde 17/09 aparece como mensagem normal:
|
|
742
|
+
convite de grupo (com nome do grupo e link), disparo de marketing de outra empresa (texto + botões,
|
|
743
|
+
cada um como `[Botão: X]`), menu em lista, enquete, pergunta de canal, cartão de cobrança, e a
|
|
744
|
+
RESPOSTA do cliente a um menu de botões — que antes sumia inteira. Se ainda aparecer o aviso curto
|
|
745
|
+
("Enquete", "Convite para entrar em um grupo") é porque aquele formato específico não tem leitor
|
|
746
|
+
ainda; o texto diz o tipo.
|
|
747
|
+
|
|
748
|
+
**Mensagens que continuam invisíveis, de propósito:** avisos internos do WhatsApp (chave de
|
|
749
|
+
criptografia de grupo, aviso de protocolo, cabeçalho de álbum). Não são mensagem de ninguém. O
|
|
750
|
+
cabeçalho de álbum some porque as fotos chegam logo em seguida como mensagens próprias — se o
|
|
751
|
+
cliente reclamar que "faltou uma mensagem antes das fotos", era isso.
|
|
752
|
+
|
|
753
|
+
## "O paciente tem duas consultas no dia e recebeu um lembrete só" (e-Clínica) — 17/09/2026
|
|
754
|
+
|
|
755
|
+
**Como é desde 17/09:** um lembrete por CONSULTA. Duas consultas no mesmo dia, ou duas pessoas no mesmo
|
|
756
|
+
celular (mãe e filho), recebem um lembrete para cada consulta — cada um com o nome do paciente, o
|
|
757
|
+
horário, o profissional e o link daquela consulta. A regra antiga ("um lembrete por dia", de 09/09)
|
|
758
|
+
saiu do sistema; linhas antigas do histórico com `skip_reason = outra_consulta_no_mesmo_dia` são dela.
|
|
759
|
+
|
|
760
|
+
**Eles não saem juntos.** Sai o da consulta mais cedo e, ~10 minutos depois, o da seguinte (três
|
|
761
|
+
consultas = três rodadas). Ao consultar `lionchat_eclinica_reminder_history_list`:
|
|
762
|
+
- `pending` com `fire_at` já no passado, há poucos minutos, e um irmão do mesmo contato/dia `fired` =
|
|
763
|
+
está esperando a vez. **Normal — não reprocessar, não reportar como erro.**
|
|
764
|
+
- `failed` com `fail_reason = fluxo_ainda_em_andamento_com_este_contato` = o fluxo do aviso anterior
|
|
765
|
+
ainda estava rodando com aquele contato. É o esperado quando o fluxo do lembrete **aguarda o paciente
|
|
766
|
+
clicar num botão**: o segundo aviso só consegue sair depois que ele responder o primeiro. Pode ser
|
|
767
|
+
reenviado com `lionchat_eclinica_reminder_history_reprocess` (se o paciente ainda não respondeu, falha
|
|
768
|
+
de novo — sem mensagem e sem custo).
|
|
769
|
+
- `failed` com `fail_reason = nao_disparou` continua sendo outra coisa; a causa mais comum é o contato
|
|
770
|
+
**sem telefone** (o cadastro do paciente na e-Clínica está sem celular, ou com número incompleto).
|
|
771
|
+
|
|
772
|
+
**O cliente quer só um lembrete por dia?** Não é mais regra do sistema: monta-se no próprio fluxo do
|
|
773
|
+
lembrete — condição comparando um atributo da conversa com `{{data_consulta}}` (se igual, encerra) e,
|
|
774
|
+
depois do envio, ação que grava `{{data_consulta}}` nesse atributo.
|
|
775
|
+
|
|
776
|
+
**Fluxo de lembrete que consulta a agenda do paciente:** use `{{cliente_id}}` (vem no próprio lembrete,
|
|
777
|
+
é o paciente DAQUELA consulta) e não `contact.custom_attribute.eclinica_cliente_id` — a ficha do
|
|
778
|
+
contato é uma por TELEFONE e guarda só o último paciente; com mãe e filho no mesmo celular o fluxo
|
|
779
|
+
olharia a agenda da pessoa errada e poderia concluir que a consulta foi desmarcada. Lembretes criados
|
|
780
|
+
antes de 17/09 podem não ter `{{cliente_id}}`: use a ficha só como reserva
|
|
781
|
+
(`{{ cliente_id | default: contact.custom_attribute.eclinica_cliente_id }}`).
|
|
782
|
+
|
|
783
|
+
---
|
|
784
|
+
|
|
785
|
+
## "Marquei Faltou (ou Compareceu) e a tarefa continua pendente" — 17/09/2026
|
|
786
|
+
|
|
787
|
+
**Não é defeito.** Presença (`attendance`) e situação (`status`) são campos separados de propósito: marcar
|
|
788
|
+
Faltou/Compareceu não conclui a tarefa. Concluir um compromisso de Booking encerra os lembretes e o
|
|
789
|
+
pós-atendimento dele e dispara o gatilho de fluxo "agendamento concluído" — inclusive para quem faltou.
|
|
790
|
+
|
|
791
|
+
- O que o painel mostra ao lado da tarefa é o campo **`selo`** (só leitura): `no_show`, `attended`,
|
|
792
|
+
`rescheduled`, `completed`, `snoozed`, `cancelled` ou `pending`. Use ele para descrever o compromisso.
|
|
793
|
+
- A tarefa marcada com presença continua nas pendências até alguém clicar em Concluir (ou a API mandar
|
|
794
|
+
concluir). Só conclua se o usuário pedir.
|
|
795
|
+
- Antes de 17/09 o painel mostrava "Pendente" (e "Atrasada" na ficha do contato) mesmo com Faltou marcado —
|
|
796
|
+
era só a etiqueta; o dado sempre esteve gravado certo.
|
|
797
|
+
|
|
798
|
+
## "Troquei o responsável de um agendamento e ele não mudou" — 17/09/2026
|
|
799
|
+
|
|
800
|
+
Compromisso nascido de Booking (`booking_id` presente) tem responsável fixo: o profissional do tipo de
|
|
801
|
+
evento. `assignee_ids` no update é ignorado (a resposta é 200 e o resto da edição vale). Para mudar quem
|
|
802
|
+
atende, edite o tipo de evento — ou cancele e marque de novo em outro Booking.
|
package/dist/tools.js
CHANGED
|
@@ -346,11 +346,11 @@ function registerListCategoriesTool(server, allEndpoints) {
|
|
|
346
346
|
// Helps LLMs build correct flow_data without hitting trial-and-error on
|
|
347
347
|
// node types, action keys, source handles, etc.
|
|
348
348
|
function registerFlowsSchemaReferenceTool(server) {
|
|
349
|
-
const reference = `LIONCHAT FLOW BUILDER — SCHEMA REFERENCE (atualizado 2026-09-
|
|
349
|
+
const reference = `LIONCHAT FLOW BUILDER — SCHEMA REFERENCE (atualizado 2026-09-17)
|
|
350
350
|
|
|
351
351
|
flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
352
352
|
|
|
353
|
-
═══
|
|
353
|
+
═══ TRES TIPOS DE FLOW (e o modo do conversation) ═══
|
|
354
354
|
- conversation (default): dispara por evento de inbox. Criar via lionchat_flows_create.
|
|
355
355
|
conversation_mode: 'individual' (1-a-1, default) ou 'group' (grupo WhatsApp). IMUTAVEL apos criar.
|
|
356
356
|
O node update_group (Gestao de Grupos, 17 operacoes) roda em fluxo de QUALQUER modo/canal desde que a
|
|
@@ -363,6 +363,19 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
363
363
|
send_message, note (SEM wait, wait_response, update_group). No action de ai_tool NAO use keys da
|
|
364
364
|
aba Sistema (send_webhook/start_flow/send_conversion). Vincular ao assistente: POST /flow_tools/{id}/assistants.
|
|
365
365
|
Testar: POST /flow_tools/{id}/run.
|
|
366
|
+
- action (Fluxo de Acoes, 17/09/2026): NAO pertence a caixa nenhuma e roda em QUALQUER conversa de
|
|
367
|
+
QUALQUER caixa — inclusive grupo. So executa acoes: NAO pode ter send_message, wait_response,
|
|
368
|
+
update_group nem end (a validacao recusa o save inteiro com "contains node types not allowed in
|
|
369
|
+
action flow"). Nodes permitidos: start, action, condition, wait, randomizer, api, ai,
|
|
370
|
+
set_variable, note. Criar via lionchat_flows_create com flow_type:'action', SEM inbox_ids e SEM
|
|
371
|
+
conversation_mode (o backend fixa 'individual'). Aceita os MESMOS gatilhos do conversation e roda
|
|
372
|
+
LADO A LADO com ele (nao entra no aviso de conflito de gatilho). Use quando a regra vale pra
|
|
373
|
+
empresa toda e nao depende da caixa (ex.: etiqueta 'urgente' -> atribui equipe de suporte).
|
|
374
|
+
Se precisa FALAR com a pessoa, o tipo e conversation.
|
|
375
|
+
AINDA NAO FUNCIONA: disparar flow 'action' por webhook de integracao (gateways de pagamento,
|
|
376
|
+
Webhook Universal, Meta Lead, e-Clinica) nem por gatilho de FORMULARIO — esses caminhos criam a
|
|
377
|
+
conversa usando a CAIXA do flow, que este tipo nao tem, e ele e descartado (no_inbox_linked).
|
|
378
|
+
Nao prometa isso ao cliente.
|
|
366
379
|
Aviso de espera (10/09/2026): enquanto a ferramenta roda, o cliente recebe "So um momento, estou
|
|
367
380
|
verificando isso pra voce...". Cada ferramenta escolhe o SEU no node start: data.toolWaitMessageEnabled
|
|
368
381
|
(false desliga; AUSENTE = ligado — so um false de verdade desliga, "" ou lixo mantem ligado) e
|
|
@@ -629,6 +642,8 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
629
642
|
vazio ('') = 60 (o que a tela exibe).
|
|
630
643
|
Respostas invalidas alem de maxRetries -> handle "retries_exhausted" (distinto do timeout de silencio;
|
|
631
644
|
se nao houver edge nele, cai no "timeout"; sem nenhum dos dois, encerra). maxRetries vazio/0 = 3.
|
|
645
|
+
maxRetries = QUANTAS VEZES o invalidMessage e enviado (desde 16/09/2026): com 1, a 1a resposta errada
|
|
646
|
+
recebe a mensagem e a 2a segue "retries_exhausted"; com 3, recebe 3 vezes e a 4a esgota.
|
|
632
647
|
Handles validation='options': "option_{val}" por opcao + "timeout"
|
|
633
648
|
Handles validation='varied_options': "option_{group_id}" por grupo (optionGroups) + "timeout"
|
|
634
649
|
Handles outros: "success" + "timeout"
|
|
@@ -696,6 +711,14 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
696
711
|
IANA ex. America/Sao_Paulo; outside_business_hours HERDA days/start_hour/end_hour/timezone da
|
|
697
712
|
business_hours ANTERIOR no array — pode deixar ausentes que o backend preenche),
|
|
698
713
|
can_reply/can_reply_closed, conversation_has_agent/no_agent,
|
|
714
|
+
CAIXA DA CONVERSA [17/09/2026]: field '{{inbox.id}}' com operator equal/not_equal e values
|
|
715
|
+
[id da caixa] — a condicao "Caixa da conversa" da tela. TIPO DE CAIXA: field
|
|
716
|
+
'{{inbox.channel_type}}' com values ['Channel::Waha'|'Channel::Whatsapp'|'Channel::Api'|
|
|
717
|
+
'Channel::Telegram'|'Channel::Email'|'Channel::WebWidget'|...] (valor TECNICO; a tela mostra
|
|
718
|
+
o rotulo). As duas nasceram pro Fluxo de Acoes, que roda em todas as caixas e precisa
|
|
719
|
+
perguntar onde esta antes de agir — mas valem em qualquer tipo de flow. valueType e
|
|
720
|
+
OBRIGATORIO: 'inbox' na primeira e 'channel_type' na segunda — e ele que faz a tela abrir o
|
|
721
|
+
seletor certo; sem ele a regra roda no motor e a tela nao desenha campo nenhum pra ela.
|
|
699
722
|
conversation_no_team (NOVO 2026-08-15: conversa SEM equipe atribuida — e o preset "Sem equipe"
|
|
700
723
|
da tela; operador dedicado, sem value), conversation_has_ai_agent/conversation_no_ai_agent
|
|
701
724
|
(IA ativa/inativa na conversa; not_ai_agent = sinonimo de no_ai_agent),
|
|
@@ -797,9 +820,14 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
797
820
|
evento, sem laco). 'cancelled' cancela o AGENDAMENTO (desarma lembrete, mata o link de gerenciar).
|
|
798
821
|
Origem gravada = 'fluxo', ator = o proprio flow. Sem 'remarcado'/'adiado'/'nao confirmado': o bloco NAO
|
|
799
822
|
mexe em data.
|
|
800
|
-
Sistema (SO flow conversation): send_webhook({url,headers?,body?}), start_flow({flow_id}
|
|
823
|
+
Sistema (SO flow conversation e flow action): send_webhook({url,headers?,body?}), start_flow({flow_id}
|
|
801
824
|
— flow_id tem que ser de OUTRO flow: apontar pro proprio flow e aceito no save mas IGNORADO
|
|
802
|
-
EM SILENCIO na execucao, e o fluxo para ali [2026-08-18]
|
|
825
|
+
EM SILENCIO na execucao, e o fluxo para ali [2026-08-18].
|
|
826
|
+
CAIXA TEM QUE BATER [17/09/2026]: se o flow-alvo e do tipo conversation e NAO esta ligado a
|
|
827
|
+
caixa da conversa, a execucao e RECUSADA e o passo fica com ERRO no historico
|
|
828
|
+
(inbox_mismatch) — antes rodava no lugar errado em silencio. Flow-alvo do tipo 'action' e
|
|
829
|
+
SEMPRE aceito, de qualquer origem, porque nao pertence a caixa nenhuma.
|
|
830
|
+
Flow de IA (ai_tool) nunca pode ser alvo), deactivate_flow({}),
|
|
803
831
|
send_conversion({destinations:['meta'|'ga4'|'google_ads'], event_names:{meta?,google_ads?,ga4?},
|
|
804
832
|
messaging_event_names:{meta?}, event_name, value?}) — NOVO 01/09, evento POR DESTINO desde 02/09,
|
|
805
833
|
evento de ANUNCIO DE WHATSAPP desde 10/09: manda o evento de conversao pro
|
|
@@ -861,8 +889,9 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
861
889
|
aiModel, // opcional: modelo LLM SO deste node (ex "gpt-4.1-mini");
|
|
862
890
|
// vazio/ausente = modelo padrao da conta; vale em TODOS os
|
|
863
891
|
// modos e tambem com assistente (sobrepoe o modelo dele)
|
|
864
|
-
// gpt-5.6-luna/terra/sol aceitos desde 08/09
|
|
865
|
-
//
|
|
892
|
+
// gpt-5.6-luna/terra/sol aceitos desde 08/09 e gpt-6-luna/sol desde
|
|
893
|
+
// 23/09 (os cinco sem temperatura, pela porta /v1/responses);
|
|
894
|
+
// modelo fora da lista de 22 = 422 na hora de salvar o assistente
|
|
866
895
|
aiModelExplicit: true, // OBRIGATORIO junto do aiModel — sem esta flag o backend
|
|
867
896
|
// IGNORA o aiModel (protecao de nodes antigos)
|
|
868
897
|
aiIntents: [{name}], // se intent — ARRAY DE OBJETOS (NAO array de strings)
|
|
@@ -1005,6 +1034,8 @@ conversation.id — JA E o numero que aparece no app (o motor devolve o display_
|
|
|
1005
1034
|
conversation.display_id e so um APELIDO, aceito desde 29/07, que devolve o mesmo numero — antes
|
|
1006
1035
|
disso resolvia VAZIO, e todo link de conversa montado por flow saiu quebrado.
|
|
1007
1036
|
conversation.status, conversation.team_id, conversation.custom_attribute.X
|
|
1037
|
+
inbox.id, inbox.name, inbox.channel_type (o TIPO do canal: Channel::Waha, Channel::Whatsapp,
|
|
1038
|
+
Channel::Api...; NOVO 17/09/2026 — usado pela condicao "Tipo de caixa")
|
|
1008
1039
|
conversation.label (SINGULAR — etiquetas da conversa em texto separado por virgula).
|
|
1009
1040
|
{{conversation.labels}} NAO EXISTE: some do texto sem erro nenhum.
|
|
1010
1041
|
agent.* = o RESPONSAVEL da conversa: agent.name, agent.first_name, agent.last_name,
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|