@lionchat/mcp-server 1.29.0 → 1.31.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 +13 -4
- package/dist/docs/resources/agenda-multiplas-unidades.md +44 -2
- package/dist/docs/resources/assinatura-eletronica.md +19 -2
- package/dist/docs/resources/best-practices.md +7 -1
- package/dist/docs/resources/conversation-flows.md +12 -4
- package/dist/docs/resources/data-model.md +136 -1
- package/dist/docs/resources/filtros-e-relatorios.md +39 -8
- package/dist/docs/resources/flowbuilder-design-guide.md +77 -9
- package/dist/docs/resources/flowbuilder-patterns.md +17 -0
- package/dist/docs/resources/formularios-publicos.md +139 -0
- package/dist/docs/resources/glossary.md +23 -0
- package/dist/docs/resources/kanban-deep-dive.md +87 -4
- package/dist/docs/resources/reports-guide.md +31 -6
- package/dist/docs/resources/troubleshooting.md +62 -0
- package/dist/tools.js +100 -35
- package/dist/tools.js.map +1 -1
- package/endpoints.json +1037 -129
- package/package.json +1 -1
|
@@ -40,7 +40,7 @@ Quando o usuário disser "o relatório está errado / não bate", quase sempre
|
|
|
40
40
|
Os dois cards podem divergir legitimamente em conta que reatribui.
|
|
41
41
|
5. **timezone_offset NÃO altera totais** de summary — só o agrupamento dos pontos da série temporal.
|
|
42
42
|
Diferenças de ~1% entre relatório e lista filtrada são borda de janela/fuso, não defeito.
|
|
43
|
-
6. **since/until
|
|
43
|
+
6. **since/until: prefira unix SEGUNDOS** (desde 05/10/2026 a API também aceita `aaaa-mm-dd` = dia inteiro no fuso da conta, ISO 8601 com fuso e milissegundos; formato ilegível dá 400) na família `reports_*`, no CSAT e no SLA. Data por extenso
|
|
44
44
|
(`"2026-07-01"`) é lida como epoch: o `"2026"` vira 01/01/1970 e a janela some. Na conta 19 havia
|
|
45
45
|
4.396 conversas no período e a resposta veio ZERO, com HTTP 200.
|
|
46
46
|
**Desde 29/07/2026 a maioria dos relatórios RECUSA o formato errado** com HTTP **400** e a mensagem
|
|
@@ -155,7 +155,8 @@ conversa antiga que NÃO aparece no relatório de hoje (régua antiga por criaç
|
|
|
155
155
|
| "retrospectiva do ano" | `lionchat_reports_list_15` |
|
|
156
156
|
| "satisfação", "CSAT", "nota dos clientes" | `lionchat_csat_metrics` |
|
|
157
157
|
| "SLA", "cumprimento de prazo" (se a conta tiver Enterprise) | `lionchat_sla_metrics` |
|
|
158
|
-
| "quantos agendamentos", "taxa de comparecimento", "agendamentos por tipo/atendente" | `lionchat_booking_reports` (ver "Agendamentos" no fim deste guia) |
|
|
158
|
+
| "quantos agendamentos", "taxa de comparecimento", "agendamentos por tipo/atendente" | `lionchat_booking_reports` (ver "Agendamentos" no fim deste guia). Conta sem Booking (relatório zerado, compromissos marcados à mão na Agenda): `source=agenda` |
|
|
159
|
+
| "vendas com SDR", "comissão dividida", "quanto cada SDR trouxe", "vendas sozinho x compartilhadas" | `lionchat_kanban_items_list_3` (`coParticipantRanking`; `include_shared_sales=true` para o quadro) e a lista `lionchat_kanban_items_shared_sales` — ver `lionchat://docs/filtros-e-relatorios` §4 |
|
|
159
160
|
|
|
160
161
|
---
|
|
161
162
|
|
|
@@ -280,7 +281,7 @@ Retorna SOMENTE estes dois campos (não existe taxa pronta):
|
|
|
280
281
|
### `lionchat_reports_list_13` — Conversation Traffic (tráfego)
|
|
281
282
|
**Use quando:** "horário de pico", "quando tem mais demanda"
|
|
282
283
|
|
|
283
|
-
Heatmap de volume por hora. Aceita SÓ `timezone_offset` (sem ele o pico sai em UTC). ATENÇÃO: janela FIXA a partir de hoje — NÃO aceita `since`/`until`.
|
|
284
|
+
Heatmap de volume por hora. Aceita SÓ `timezone_offset` (desde 05/10/2026, sem ele o pico sai no FUSO DA CONTA; antes saía em UTC). ATENÇÃO: janela FIXA a partir de hoje — NÃO aceita `since`/`until`.
|
|
284
285
|
|
|
285
286
|
> ⚠️ **Instalação anterior a 29/07/2026: o pico sai em UTC MESMO mandando `timezone_offset`.** O fuso
|
|
286
287
|
> era resolvido por nome (`"-3"` não é nome de zona), caía em UTC e o horário vinha **3 horas adiantado**
|
|
@@ -508,13 +509,24 @@ ONDE vieram os leads, cruzando os campos `origin_*` das conversas com os leads
|
|
|
508
509
|
viraram conversa). É um relatório de LEITURA puro — não cria nem altera nada.
|
|
509
510
|
|
|
510
511
|
**Filtros (query, todos opcionais):** `since` / `until` (ISO 8601; default = 30 dias atrás → agora),
|
|
511
|
-
`funnel_id`, `platform`, `kind`, `campaign`, `adset`, `group_by`.
|
|
512
|
+
`funnel_id`, `platform`, `kind`, `campaign`, `adset`, `inbox_id`, `assignee_id`, `group_by`.
|
|
513
|
+
`campaign`/`adset` aceitam `__none__` para filtrar so os leads SEM aquele nome (campanha/conjunto vazio).
|
|
514
|
+
|
|
515
|
+
**`inbox_id` e `assignee_id` (06/10/2026)** — recortam por caixa de entrada e por responsável da conversa.
|
|
516
|
+
**Em conta com mais de uma loja/unidade, SEM `inbox_id` o relatório soma TODAS as caixas** — foi o que fez a
|
|
517
|
+
mesma conta misturar duas lojas e não bater com o relatório da Meta. Com qualquer um dos dois ligado, os
|
|
518
|
+
**leads órfãos saem da contagem** (contato sem conversa nenhuma não pertence a caixa nem a responsável), então
|
|
519
|
+
`orphan_leads` vai a zero e `unique_leads` cai — é esperado, não é perda de dado.
|
|
512
520
|
|
|
513
521
|
**Retorno:**
|
|
514
522
|
- `period` — janela efetiva considerada.
|
|
515
523
|
- `totals` — `conversations`, `classified` (com origem identificada), `unclassified` (sem origem),
|
|
516
524
|
`orphan_leads` (leads sem conversa ainda), `unique_leads` (deduplicados por TELEFONE),
|
|
517
525
|
`won_leads` (leads em cards de estágio de Ganho) e `conversion_rate`.
|
|
526
|
+
- `unclassified` — `{conversations, won, conversion_rate}` das conversas SEM origem (entram em `totals` mas nao em `by_platform`;
|
|
527
|
+
a venda de uma conversa iniciada pela propria empresa mora aqui). Desde 16/10/2026 a conversa criada pelo nosso
|
|
528
|
+
lado (automação, fluxo, formulário) nasce com a origem que a ficha do contato já tinha; antes ela caía aqui
|
|
529
|
+
até o cliente responder. Vale só de hoje pra frente: as conversas antigas nesse caso continuam sem origem.
|
|
518
530
|
- Arrays de quebra: `by_platform`, `by_kind`, `by_campaign`, `by_adset`, `by_creative`. Cada linha
|
|
519
531
|
tem `{value, conversations, won, conversion_rate}`.
|
|
520
532
|
|
|
@@ -576,6 +588,10 @@ quebra. Aconteceu em produção com quem seguiu a versão anterior da tela.
|
|
|
576
588
|
como público de campanha (antes apareciam no painel e eram invisíveis para tudo isso): `google_keyword`
|
|
577
589
|
(Palavra-chave), `google_match_type`, `google_device`, `google_network`, `google_placement`,
|
|
578
590
|
`google_ad_position`, `google_campaign_id`, `google_adgroup_id`, `google_creative_id`.
|
|
591
|
+
Desde 06/10/2026 são 12: entraram `google_feed_item_id` (a extensão do anúncio que foi clicada),
|
|
592
|
+
`google_loc_physical` (o lugar onde a pessoa estava ao clicar) e `google_loc_interest` (o lugar que ela
|
|
593
|
+
pesquisou). **Os três são CÓDIGOS numéricos do Google, não nomes** (ex.: `1001773`) — servem para filtrar por
|
|
594
|
+
igualdade ou por "preenchido", não para ler o nome da cidade.
|
|
579
595
|
|
|
580
596
|
**A palavra-chave só existe em campanha de BUSCA.** Medido na produção em 29/09: 39% dos cliques são
|
|
581
597
|
Performance Max, onde o Google não informa palavra-chave, conjunto nem anúncio — nesses a linha vem vazia,
|
|
@@ -721,7 +737,7 @@ funil sem nome chegam indistinguíveis pra quem lê depois.
|
|
|
721
737
|
`label_count` (exige `label_id`) e `conversao` (exige `denominator` e `numerator`, que é **lista de
|
|
722
738
|
IDs de etiqueta**, nunca nome de métrica).
|
|
723
739
|
|
|
724
|
-
**
|
|
740
|
+
**Seis colunas por PESSOA (novas, 02/10 e 03/10/2026 — só com `dimension: agent`; em tabela por equipe ou
|
|
725
741
|
caixa o salvamento é RECUSADO com o motivo):**
|
|
726
742
|
|
|
727
743
|
| `metric` | O que mostra | Cuidado |
|
|
@@ -729,12 +745,15 @@ caixa o salvamento é RECUSADO com o motivo):**
|
|
|
729
745
|
| `primeira_resposta` | Tempo **médio** da 1ª resposta do atendente | Conta **só o horário comercial da conta** (o do SLA). Sem horário ligado na conta, cai no relógio corrido. O início é quando a IA passou a conversa (ou a reabertura/criação), não o instante da atribuição — pode divergir do SLA por alguns minutos. Vem em segundos; quem não respondeu nada no período vem vazio (travessão), nunca "0s" |
|
|
730
746
|
| `tempo_resposta` | Tempo médio entre respostas, depois da 1ª | Mesma regra de horário. Registro de `reply_time` |
|
|
731
747
|
| `ligacoes_feitas` | Ligações que a pessoa **fez** (`outbound`), atendidas ou não | Recebidas não entram. Acompanha o recorte por caixa; VTCall e Zenvia quase não gravam caixa |
|
|
748
|
+
| `ligacoes_recebidas` | Ligações **recebidas** ligadas à pessoa (`inbound`) | No VTCall o atendente só é gravado quando atende: na prática são as que ela **atendeu**. A que ninguém atendeu não tem dono — fica na linha "Sem responsável" do `calls_report` |
|
|
749
|
+
| `tempo_falado` | Tempo total em ligação da pessoa (feitas + recebidas), em segundos | Mesma definição do "Tempo falado" do `calls_report`. Sem ligação = 0 (a tela e o aviso mostram travessão) |
|
|
732
750
|
| `taxa_ligacao` | Ligações feitas ÷ leads, em % | `denominator` opcional: `leads` (padrão, a definição do Wesley — "100 leads, 10 ligações = 10%") ou `atendidos`; outro valor é recusado. Pessoa sem lead dá 0,0%, nunca erro |
|
|
733
751
|
|
|
734
752
|
O `as` dessas colunas é honrado (diferente das métricas núcleo). Exemplo de bloco do Instituto Homem:
|
|
735
753
|
`{"widget_type":"agent_report","chart_type":"table","dimension":"agent","scope_type":"team","scope_id":142,
|
|
736
754
|
"columns":[{"metric":"leads"},{"metric":"atendidos"},{"metric":"primeira_resposta"},
|
|
737
|
-
{"metric":"tempo_resposta"},{"metric":"ligacoes_feitas"},{"metric":"
|
|
755
|
+
{"metric":"tempo_resposta"},{"metric":"ligacoes_feitas"},{"metric":"ligacoes_recebidas"},
|
|
756
|
+
{"metric":"tempo_falado"},{"metric":"taxa_ligacao"}]}`.
|
|
738
757
|
|
|
739
758
|
### Como ler a resposta (campo `shape`)
|
|
740
759
|
|
|
@@ -852,6 +871,12 @@ Resposta: `totals` (`total`, `pending`, `completed`, `cancelled`, `snoozed`, `at
|
|
|
852
871
|
`attendance_rate`, `attendance_basis`), `timeline`, `by_event_type`, `by_agent`, `by_origin` e
|
|
853
872
|
`treatments`.
|
|
854
873
|
|
|
874
|
+
- **`source=agenda`** (14/10): troca a fonte para os compromissos marcados À MÃO na Agenda, sem
|
|
875
|
+
Booking — ligação, reunião, videochamada e tipos da conta (tarefa comum e evento do Google ficam
|
|
876
|
+
fora). Use quando a conta não usa Booking e o relatório normal vem zerado. Nessa opção o tipo vai em
|
|
877
|
+
`task_type` (não `event_type_id`; a lista vem em `appointment_types`), `by_agent` conta pelos
|
|
878
|
+
responsáveis (quem tem dois aparece nas duas linhas, os totais contam uma vez), `by_origin` vem vazio
|
|
879
|
+
e `treatments` vem nulo.
|
|
855
880
|
- **`attended` / `no_show`** (15/09) são as marcas Compareceu/Faltou do compromisso
|
|
856
881
|
(`account_tasks.attendance`), um eixo próprio: **não mudam a situação** — compromisso "faltou"
|
|
857
882
|
continua `pending` até alguém concluir ou cancelar, igual a Agenda mostra.
|
|
@@ -795,6 +795,33 @@ criptografia de grupo, aviso de protocolo, cabeçalho de álbum). Não são mens
|
|
|
795
795
|
cabeçalho de álbum some porque as fotos chegam logo em seguida como mensagens próprias — se o
|
|
796
796
|
cliente reclamar que "faltou uma mensagem antes das fotos", era isso.
|
|
797
797
|
|
|
798
|
+
## "O aniversário saiu fora do horário que eu configurei" (Gatilho de Data) — 02/10/2026
|
|
799
|
+
|
|
800
|
+
**Antes de 02/10/2026 isso era um defeito real:** o motor somava `id do contato % 180` **MINUTOS** ao
|
|
801
|
+
horário escolhido (espalhamento anti-banimento). Quem configurava 18:00 podia receber às 20:50 — caso
|
|
802
|
+
relatado: Villa Eyá, 18:00 configurado, 19:50 entregue. **Consertado.** O horário agora é respeitado.
|
|
803
|
+
|
|
804
|
+
**Depois de 02/10, se a mensagem sair depois do horário, é a FILA — e é normal.** O que espaça agora é
|
|
805
|
+
a fila por caixa, e só quando há mais de uma pessoa na mesma data:
|
|
806
|
+
|
|
807
|
+
| Caixa | Ritmo | Efeito com 50 pessoas |
|
|
808
|
+
|---|---|---|
|
|
809
|
+
| QR Code (WAHA) | 20-40 s entre cada (sorteado) | a última sai ~25 min depois |
|
|
810
|
+
| Oficial (Cloud) | 10 por segundo | a última sai ~5 s depois |
|
|
811
|
+
|
|
812
|
+
A primeira sempre sai no horário configurado. **Uma pessoa sozinha nunca atrasa.**
|
|
813
|
+
|
|
814
|
+
Ao consultar `lionchat_flows_scheduled_firings_list`:
|
|
815
|
+
- `fire_at` **diferente do horário configurado** = a fila já reservou a vaga real daquele envio.
|
|
816
|
+
É o horário em que vai sair mesmo. **Normal — não é o defeito antigo, não reporte como erro.**
|
|
817
|
+
- `skip_reason = vencida_expirada` = o aviso ficou mais de 24 h atrasado (queda do sistema) e foi
|
|
818
|
+
**descartado de propósito**, para não entregar "feliz aniversário" dias depois. O do ano seguinte
|
|
819
|
+
continua agendado. Não reprocessar.
|
|
820
|
+
|
|
821
|
+
**Quando o cliente reclamar que "está demorando" numa base grande em QR Code:** não é lentidão, é a
|
|
822
|
+
trava que impede o número de ser bloqueado — a mesma que a campanha usa. Se precisa de volume rápido,
|
|
823
|
+
o caminho é caixa oficial ou Campanha de Fluxo (que tem agendamento por dias).
|
|
824
|
+
|
|
798
825
|
## "O paciente tem duas consultas no dia e recebeu um lembrete só" (e-Clínica) — 17/09/2026
|
|
799
826
|
|
|
800
827
|
**Como é desde 17/09:** um lembrete por CONSULTA. Duas consultas no mesmo dia, ou duas pessoas no mesmo
|
|
@@ -827,6 +854,41 @@ antes de 17/09 podem não ter `{{cliente_id}}`: use a ficha só como reserva
|
|
|
827
854
|
|
|
828
855
|
---
|
|
829
856
|
|
|
857
|
+
## "A clínica trocou o celular do paciente e os dados da e-Clínica mudaram de contato" — 07/10/2026
|
|
858
|
+
|
|
859
|
+
**Não é defeito.** Quando o celular novo informado pela e-Clínica **já é de outro contato** da conta (o
|
|
860
|
+
paciente já conversava pelo número novo, por exemplo), os avisos da e-Clínica passam para o contato do
|
|
861
|
+
número novo: os atributos `eclinica_*` (mais `endereco_unidade` e `unidade_de_atendimento`) saem do
|
|
862
|
+
contato antigo e os lembretes pendentes do paciente trocam de contato. **Nenhum telefone é trocado e
|
|
863
|
+
nenhuma ficha é juntada** — juntar continua sendo decisão da equipe (`lionchat_contact_merge_preview`
|
|
864
|
+
antes de qualquer junção).
|
|
865
|
+
|
|
866
|
+
**Como reconhecer:**
|
|
867
|
+
- as duas conversas têm um aviso em cinza ("Os avisos da e-Clínica passam a sair por lá" / "Este contato
|
|
868
|
+
passou a receber os avisos da e-Clínica do paciente ...");
|
|
869
|
+
- o contato antigo tem `additional_attributes.eclinica_vinculo_cedido` — um mapa
|
|
870
|
+
`"<unidade>:<paciente>" => { para, em, prova }` dizendo para qual contato o cadastro foi;
|
|
871
|
+
- o contato novo pode ter `additional_attributes.eclinica_vinculo_recebido` (`{ de, em }`), só quando a
|
|
872
|
+
passagem foi sem prova de que é a mesma pessoa.
|
|
873
|
+
|
|
874
|
+
**Não escreva nem apague essas duas chaves** (são do sistema) e **não regrave `eclinica_cliente_id` /
|
|
875
|
+
`eclinica_unit_id` no contato antigo**: a busca do paciente prefere o contato que NÃO cedeu o cadastro, e
|
|
876
|
+
o par regravado à mão só gera confusão.
|
|
877
|
+
|
|
878
|
+
**Quando os avisos NÃO passam** (a conversa diz "Nada foi alterado. Confira o celular no cadastro da
|
|
879
|
+
clínica."): o contato dono do número novo já é de OUTRO paciente da clínica, ou os dois contatos têm CPFs
|
|
880
|
+
diferentes.
|
|
881
|
+
|
|
882
|
+
**Número digitado errado na recepção:** se o número errado for de outro contato, os avisos vão para lá
|
|
883
|
+
até a clínica corrigir; na correção eles voltam sozinhos para o contato do paciente (as duas conversas
|
|
884
|
+
ganham novo aviso). Para mover à mão é com o suporte — não existe ferramenta do MCP para isso.
|
|
885
|
+
|
|
886
|
+
**Lembrete "pendente" que aparece em nome de outro contato** em `lionchat_eclinica_reminder_history_list`:
|
|
887
|
+
é o mesmo paciente, depois da passagem. Na hora de sair, o lembrete confere de novo qual contato tem o
|
|
888
|
+
cadastro e sai por ele.
|
|
889
|
+
|
|
890
|
+
---
|
|
891
|
+
|
|
830
892
|
## "Marquei Faltou (ou Compareceu) e a tarefa continua pendente" — 17/09/2026
|
|
831
893
|
|
|
832
894
|
**Não é defeito.** Presença (`attendance`) e situação (`status`) são campos separados de propósito: marcar
|
package/dist/tools.js
CHANGED
|
@@ -188,9 +188,17 @@ function buildZodSchema(params, toolId, confirmRequired = false) {
|
|
|
188
188
|
}
|
|
189
189
|
return z.object(shape);
|
|
190
190
|
}
|
|
191
|
-
// AIDEV-NOTE: Check if endpoint
|
|
191
|
+
// AIDEV-NOTE: Check if endpoint REQUIRES a file-type param (unsupported in MCP v1).
|
|
192
|
+
// AIDEV-NOTE: [arquivo-opcional 03/10] A pergunta e "EXIGE arquivo?", nunca "tem campo de arquivo?".
|
|
193
|
+
// O executor ja acertava (so recusa quando um VALOR de arquivo e enviado); quem errava era este
|
|
194
|
+
// aviso, que e a PRIMEIRA linha que o modelo le na descricao. Com `.some(type === 'file')` quatro
|
|
195
|
+
// ferramentas que funcionam hoje se anunciavam quebradas e a IA desistia antes de tentar:
|
|
196
|
+
// contacts_update (a foto e opcional), account_update (o logotipo), upload_create (aceita
|
|
197
|
+
// external_url) e captain_documents_create (a base de conhecimento da IA, aceita external_link —
|
|
198
|
+
// e a nossa propria best-practices.md ensina a usar o link enquanto esta linha dizia que nao da).
|
|
199
|
+
// Achado nas auditorias de 03/10. NUNCA voltar a ignorar `required`.
|
|
192
200
|
function hasFileParam(params) {
|
|
193
|
-
return params.some((p) => p.type === 'file');
|
|
201
|
+
return params.some((p) => p.type === 'file' && p.required);
|
|
194
202
|
}
|
|
195
203
|
// AIDEV-NOTE: Register a single API endpoint as an MCP tool
|
|
196
204
|
function registerSingleTool(server, config, client, endpoint) {
|
|
@@ -207,22 +215,27 @@ function registerSingleTool(server, config, client, endpoint) {
|
|
|
207
215
|
server.tool(endpoint.id, description, schema.shape, annotations, async (params) => {
|
|
208
216
|
try {
|
|
209
217
|
// AIDEV-NOTE: Block execution if file param was actually provided
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
218
|
+
// AIDEV-NOTE: [arquivo-opcional 03/10] A recusa roda SEMPRE, nunca mais dentro de
|
|
219
|
+
// `if (hasFile)`. Desde que `hasFileParam` passou a exigir `required`, o antigo `if`
|
|
220
|
+
// deixava as 4 ferramentas de arquivo OPCIONAL (contacts_update, account_update,
|
|
221
|
+
// upload_create, captain_documents_create) sem defesa nenhuma — e o conector REMOTO
|
|
222
|
+
// sempre recusou incondicionalmente (`runner.ts`), entao os dois tinham passado a
|
|
223
|
+
// divergir. Hoje o param `type: file` nem entra no schema (`continue` acima), logo isto
|
|
224
|
+
// e defesa em profundidade; e e exatamente por ser defesa que nao pode depender do aviso.
|
|
225
|
+
const fileParams = endpoint.params.filter((p) => p.type === 'file');
|
|
226
|
+
for (const fp of fileParams) {
|
|
227
|
+
// AIDEV-NOTE: B10 (2026-06-02) — trata "" como "não fornecido" (igual ao remoto
|
|
228
|
+
// runner.ts), pra os dois conectores terem o mesmo guard de file vazio.
|
|
229
|
+
if (params[fp.name] !== undefined && params[fp.name] !== null && params[fp.name] !== '') {
|
|
230
|
+
return {
|
|
231
|
+
content: [
|
|
232
|
+
{
|
|
233
|
+
type: 'text',
|
|
234
|
+
text: 'File upload is not supported via MCP. Use the LionChat web interface or direct API calls.',
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
isError: true,
|
|
238
|
+
};
|
|
226
239
|
}
|
|
227
240
|
}
|
|
228
241
|
// AIDEV-NOTE: [auditoria adversus A3] trava de confirmacao, ANTES de qualquer trabalho —
|
|
@@ -346,7 +359,7 @@ function registerListCategoriesTool(server, allEndpoints) {
|
|
|
346
359
|
// Helps LLMs build correct flow_data without hitting trial-and-error on
|
|
347
360
|
// node types, action keys, source handles, etc.
|
|
348
361
|
function registerFlowsSchemaReferenceTool(server) {
|
|
349
|
-
const reference = `LIONCHAT FLOW BUILDER — SCHEMA REFERENCE (atualizado 2026-
|
|
362
|
+
const reference = `LIONCHAT FLOW BUILDER — SCHEMA REFERENCE (atualizado 2026-10-17)
|
|
350
363
|
|
|
351
364
|
flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
352
365
|
|
|
@@ -360,12 +373,12 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
360
373
|
- ai_tool: ferramenta que o AI Agente invoca. Criar via lionchat_flow_tools_create (NAO flows_create!),
|
|
361
374
|
com tool_name (snake_case, max 50) + tool_description (max 500). SEM inbox_ids. No 'end' OBRIGATORIO.
|
|
362
375
|
Nodes permitidos em ai_tool: start, end, api, condition, set_variable, ai, randomizer, action,
|
|
363
|
-
send_message, note (SEM wait, wait_response, update_group). No action de ai_tool NAO use keys da
|
|
376
|
+
send_message, note (SEM wait, wait_response, update_group, ai_call). No action de ai_tool NAO use keys da
|
|
364
377
|
aba Sistema (send_webhook/start_flow/send_conversion). Vincular ao assistente: POST /flow_tools/{id}/assistants.
|
|
365
378
|
Testar: POST /flow_tools/{id}/run.
|
|
366
379
|
- action (Fluxo de Acoes, 17/09/2026): NAO pertence a caixa nenhuma e roda em QUALQUER conversa de
|
|
367
380
|
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
|
|
381
|
+
update_group, ai_call nem end (a validacao recusa o save inteiro com "contains node types not allowed in
|
|
369
382
|
action flow"). Nodes permitidos: start, action, condition, wait, randomizer, api, ai,
|
|
370
383
|
set_variable, note. Criar via lionchat_flows_create com flow_type:'action', SEM inbox_ids e SEM
|
|
371
384
|
conversation_mode (o backend fixa 'individual'). Aceita os MESMOS gatilhos do conversation e roda
|
|
@@ -383,7 +396,7 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
383
396
|
e viaja no snapshot de versao; ferramenta que ja existe nao muda de comportamento.
|
|
384
397
|
|
|
385
398
|
═══ NODE GERAL ═══
|
|
386
|
-
{ "id": "string-unico", "type": "start|send_message|wait_response|condition|action|api|set_variable|wait|randomizer|update_group|ai|end|note", "position": {"x":0,"y":0}, "data": { ... } }
|
|
399
|
+
{ "id": "string-unico", "type": "start|send_message|wait_response|condition|action|api|set_variable|wait|randomizer|update_group|ai_call|ai|end|note", "position": {"x":0,"y":0}, "data": { ... } }
|
|
387
400
|
(activate_flow existe como node LEGADO — nao crie novos; use action start_flow)
|
|
388
401
|
|
|
389
402
|
═══ NODE TYPES + source handles ═══
|
|
@@ -542,10 +555,19 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
542
555
|
date_trigger; para disparo em lote, campaign_trigger + Campanha de Fluxo.
|
|
543
556
|
team_changed ({team_ids:[] de STRINGS, vazio = qualquer equipe}), assignee_changed ({agent_ids:[]
|
|
544
557
|
STRINGS, vazio = qualquer atendente}), card_won/card_lost ({funnel_ids:[] STRINGS} — disparam SO quando
|
|
545
|
-
o STATUS do card vira ganho/perdido, nunca por etapa com esse nome).
|
|
558
|
+
o STATUS do card vira ganho/perdido, nunca por etapa com esse nome).
|
|
559
|
+
card_opened/card_snoozed (NOVOS 11/10/2026, mesma config {funnel_ids:[] STRINGS}): card_snoozed = o card
|
|
560
|
+
foi ADIADO; card_opened = um card adiado ABRIU (pela data, por alguem ou por automacao) ou um card
|
|
561
|
+
ganho/perdido foi REABERTO — card NOVO nao dispara (isso e card_created). Pela data o fluxo sai pela fila
|
|
562
|
+
de disparos agendados (depois dos lembretes; em caixa QR Code no ritmo da caixa), uma vez por card;
|
|
563
|
+
{{trigger.kanban.previous_status}} (snoozed/won/lost) separa os casos. page_track (LionTrack, so flow
|
|
546
564
|
individual): {track_type:'visited_page'|'event_fired', urls:[...], operator:'contains'|'exact'|
|
|
547
565
|
'starts_with', event_names:[...], event_operator:'equals'|'contains', cooldown_hours (default 24,
|
|
548
566
|
minimo 1 — nao re-dispara pro mesmo contato dentro da janela)}.
|
|
567
|
+
whatsapp_form_answered (NOVO 17/10/2026): o cliente RESPONDEU um Formulario do WhatsApp (formulario nativo
|
|
568
|
+
da Meta, ferramenta whatsapp_forms_list). Config {whatsapp_form_id: '<id do NOSSO formulario, STRING>'} —
|
|
569
|
+
vazio/ausente = qualquer formulario. Dispara na conversa da resposta, DEPOIS do "Salvar em" do formulario
|
|
570
|
+
(o fluxo ja le o dado gravado); repetir o processamento nao abre o fluxo duas vezes.
|
|
549
571
|
NOVO message_sent (2026-06-11): par do message_received pra mensagens de
|
|
550
572
|
SAIDA (atendente, celular/eco, IA — nota privada NAO) com keywords+match_type; cuidado: acao
|
|
551
573
|
'desativar IA' com esse trigger sem keywords = a propria resposta da IA dispara o flow.
|
|
@@ -669,6 +691,14 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
669
691
|
salvar o flow pela tela nesse estado, a regra e PERDIDA. (Excecoes que nao usam field/valueType
|
|
670
692
|
"variable": regras por attr_key/attrSource="attr_config", business_hours, can_reply, sla_check,
|
|
671
693
|
kanban_*, conversation_has_agent/no_agent, pagetrack_*.)
|
|
694
|
+
EMPRESA DO CONTATO (NOVO 16/10 — card "Atributo da empresa", so com o modulo Empresas): regra
|
|
695
|
+
{ id, valueType:'attr_config', attrSource:'company', attr_key, operator, value:'', values:[...] }.
|
|
696
|
+
attr_key = chave do campo PERSONALIZADO da empresa OU cadastro com prefixo: company.name,
|
|
697
|
+
company.legal_name, company.cnpj (comparado so por digitos), company.phone, company.email,
|
|
698
|
+
company.address.city, company.address.state. Empresa = a do contato da conversa (no maximo UMA).
|
|
699
|
+
Contato sem empresa = valor vazio (not_equal/is_empty casam). Modulo desligado = NUNCA casa, nem a
|
|
700
|
+
negativa. attrSource fora de contact/conversation/card/company NAO casa. Variaveis da empresa em
|
|
701
|
+
mensagem: {{contact.company.name}} ... {{contact.company.custom_attribute.<chave>}}.
|
|
672
702
|
ORIGEM / CAMPANHA (NOVO 01/09 — preset "Atributo de campanha" da tela): regra de atributo da CONVERSA:
|
|
673
703
|
{ id, valueType:'attr_config', attrSource:'conversation', attrScope:'campaign', attr_key:'origin_kind',
|
|
674
704
|
operator:'equal', value:'', values:['paid_ad'] }
|
|
@@ -690,7 +720,7 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
690
720
|
Chaves de campanha: origin_kind, origin_platform, origin_first_kind/_platform, origin_last_kind/_platform,
|
|
691
721
|
ctwa_* (anuncio click-to-WhatsApp: ctwa_ad_id, ctwa_ad_title, ctwa_campaign_name, ctwa_adset_name...),
|
|
692
722
|
meta_lead_* (formulario Meta Lead Ads), lt_* (LionTrack: UTMs, pagina, dispositivo). Lista real:
|
|
693
|
-
lionchat_custom_attributes_list {attribute_model:'
|
|
723
|
+
lionchat_custom_attributes_list {attribute_model:'conversation_attribute', include_system:true} (com o sufixo: so 'conversation' devolve lista VAZIA).
|
|
694
724
|
VALORES FECHADOS de origin_kind (e first/last): paid_ad (Anuncio), lead_form (Formulario), organic
|
|
695
725
|
(Organico), direct (Direto), referral (Indicacao), manual (Origem cadastrada) — compara pelo VALOR, nunca
|
|
696
726
|
pelo rotulo ("Anuncio" nunca casa). origin_platform: facebook, instagram, google, tiktok, linkedin, youtube,
|
|
@@ -732,13 +762,14 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
732
762
|
field JUNTOS — conversa usa field '{{conversation.label}}', contato usa '{{contact.label}}';
|
|
733
763
|
a tela reabre a regra casando o par, e condicao escrita so com operator roda certa mas
|
|
734
764
|
APARECE errada pro cliente. Mesma regra vale pros pares kanban_exists/kanban_in_stage
|
|
735
|
-
(fields '_kanban_check'/'_kanban_stage'), kanban_won/kanban_lost (field '_kanban_status') e
|
|
765
|
+
(fields '_kanban_check'/'_kanban_stage'), kanban_won/kanban_lost/kanban_snoozed (field '_kanban_status') e
|
|
736
766
|
resposta do cliente/do atendente (fields '{{last_response}}'/'{{last_agent_response}}')),
|
|
737
|
-
kanban_exists/kanban_in_stage/kanban_won/kanban_lost (funnel_id e CHAVE SEPARADA da condicao,
|
|
767
|
+
kanban_exists/kanban_in_stage/kanban_won/kanban_lost/kanban_snoozed (funnel_id e CHAVE SEPARADA da condicao,
|
|
738
768
|
numero ex funnel_id:37; a etapa vai em value=slug puro ex value:"avaliacao_aceita" ou em stage,
|
|
739
769
|
NAO no formato "37:etapa"), pagetrack_visited/pagetrack_event,
|
|
740
770
|
Desde 20/08 as 4 condicoes kanban_* enxergam o card da conversa ATUAL ou o card cuja conversa de
|
|
741
771
|
ORIGEM e a atual (card religado pra conversa mais nova) — antes "nao tem card" na conversa velha.
|
|
772
|
+
kanban_snoozed (NOVO 11/10/2026) = o card esta ADIADO naquele funil; nao existe condicao "card aberto".
|
|
742
773
|
sla_check (SO value, codigo fixo: frt_breached/frt_ok/nrt_breached/nrt_ok/rt_breached/rt_ok/has_sla/no_sla;
|
|
743
774
|
frt=primeira resp, nrt=proxima, rt=resolucao; _ok exige politica de SLA aplicada),
|
|
744
775
|
signature_status (NOVO 2026-09-14 — aba "Contrato" da tela; SO value, codigo fixo:
|
|
@@ -804,7 +835,12 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
804
835
|
— funnel_id e funnel_stage OBRIGATORIOS; title/description aceitam {{ }},
|
|
805
836
|
move_kanban_stage({funnel_id,funnel_stage}), set_kanban_item_status({status:won|lost|active}),
|
|
806
837
|
set_won({}), set_lost({reason?}), add_card_note({text}),
|
|
807
|
-
set_open({}) — reabre card ganho/perdido (status open; nao mexe nos responsaveis)
|
|
838
|
+
set_open({}) — reabre card ganho/perdido (status open; nao mexe nos responsaveis); num card ADIADO
|
|
839
|
+
abre o card na hora e dispara "Card aberto" (desde 11/10/2026),
|
|
840
|
+
snooze_kanban_item({funnel_id, amount, unit:'hours'|'days', card_source?}) — NOVO 11/10/2026: ADIA o card
|
|
841
|
+
por N horas ou dias a partir da execucao (amount inteiro >= 1; minimo 1 hora); so card aberto; adiar de
|
|
842
|
+
novo troca a data. Card ganho/perdido, sem card no funil ou card_source 'trigger' em fluxo que nao veio
|
|
843
|
+
de card = ERRO visivel no passo (nunca pulado, ao contrario das irmas de card),
|
|
808
844
|
// title/description de create_kanban_item e text de add_card_note resolvem pelo resolvedor do
|
|
809
845
|
// FLUXO desde 20/08: {{conversation.id}} = numero da tela e variaveis da sessao valem ali
|
|
810
846
|
assign_agent_card({agent_id, mode?}) — RESPONSAVEL DO CARD. mode (NOVO 2026-07-28):
|
|
@@ -866,9 +902,9 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
866
902
|
[x]" / "Meta: erro (...)" — o [evento] no fim diz qual nome foi pra cada destino.
|
|
867
903
|
Falha de um destino nunca derruba o fluxo. Dry-run nao dispara.
|
|
868
904
|
card_source (acoes de card): 'funnel' (default, acha o card pelo funnel_id) | 'trigger' (usa o card
|
|
869
|
-
que DISPAROU o flow em card_created/card_moved/card_won/card_lost). Com 'trigger' o funnel_id e
|
|
905
|
+
que DISPAROU o flow em card_created/card_moved/card_won/card_lost/card_opened/card_snoozed). Com 'trigger' o funnel_id e
|
|
870
906
|
ignorado — EXCETO create_kanban_item/move_kanban_stage (funil = DESTINO). Vale pra move_kanban_stage,
|
|
871
|
-
set_won/set_lost/set_open, assign_agent_card, add_card_note, add_card_checklist, add_card_offer e
|
|
907
|
+
set_won/set_lost/set_open, snooze_kanban_item (sem card-gatilho = ERRO, nao pula), assign_agent_card, add_card_note, add_card_checklist, add_card_offer e
|
|
872
908
|
update_attribute (attr_source:'card').
|
|
873
909
|
Handles: "success" (sem handle error — falha vira warning e o flow continua).
|
|
874
910
|
|
|
@@ -954,6 +990,24 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
954
990
|
Com pesos iguais os dois dao o mesmo resultado.
|
|
955
991
|
Handles: o id de cada branch (mode branches); "success" (mode distribute_agents).
|
|
956
992
|
|
|
993
|
+
▸ ai_call ("Ligar com IA", 17/10/2026 — so em conta com ai_calling + lioncalls_calling)
|
|
994
|
+
A IA liga para o TELEFONE DO CONTATO da conversa do fluxo pela linha de ligacao do WhatsApp (LionCalls).
|
|
995
|
+
data: { aiCallAgentId: <id de lionchat_captain_call_agents_list>, aiCallInboxId: <id de meta.dial_inboxes> }
|
|
996
|
+
(aiCallAgentName/aiCallInboxName sao opcionais, so pro resumo do card). O que a IA fala, a voz e o TEMPO
|
|
997
|
+
MAXIMO da ligacao vem do agente de ligacao (max_duration_seconds, 30-600 s): no tempo o motor desliga sozinho.
|
|
998
|
+
Handles: "answered" (a pessoa atendeu), "no_answer" (nao atendeu ou recusou), "error" (nao deu pra ligar:
|
|
999
|
+
sem telefone, linha desconectada, agente apagado, linha ocupada por mais de 2 h — o motivo vai no historico).
|
|
1000
|
+
answered/no_answer SEM fio = o fluxo termina ali; error SEM fio = execucao "Falhou".
|
|
1001
|
+
Liga UMA vez (para insistir: outro ai_call depois de "no_answer", com um wait no meio). NUNCA ligue "error"
|
|
1002
|
+
direto em outro ai_call (em alguns erros nao da pra saber se a ligacao saiu). Nao confere horario: use um
|
|
1003
|
+
condition antes. A IA so liga se sobrar uma vaga na linha para uma pessoa; senao espera a vez (fila por
|
|
1004
|
+
ordem de chegada, ate 2 h). O card da ligacao vai para a conversa do lead na caixa da linha.
|
|
1005
|
+
PROIBIDO em flow 'action', em flow de GRUPO e em ai_tool (o save recusa); id de agente/caixa de OUTRA conta
|
|
1006
|
+
tambem e recusado. Agente apagado ou caixa excluida NAO travam o save — falham na execucao.
|
|
1007
|
+
Receita "a IA de atendimento pede a ligacao" (sem ferramenta nova): cenario manda por a etiqueta 'ligar';
|
|
1008
|
+
flow conversation com gatilho label_added 'ligar' -> action remove_conversation_label 'ligar' (LOGO depois
|
|
1009
|
+
do start) -> ai_call.
|
|
1010
|
+
|
|
957
1011
|
▸ update_group (Gestao de Grupos WhatsApp — UMA operacao por bloco, 18 operacoes)
|
|
958
1012
|
Roda em fluxo de QUALQUER canal desde que a conta tenha caixa WhatsApp QR Code (Channel::Waha).
|
|
959
1013
|
Em flow de GRUPO o campo de caixa e opcional (vazio = caixa da conversa); em flow NAO-grupo
|
|
@@ -978,7 +1032,8 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
978
1032
|
list_participants -> (groupTargetId) -> id,participants(ate 100; participants_truncated=true se cortou),participants_count
|
|
979
1033
|
add_participants -> groupParticipants(obrig; array de telefones/JIDs ex ['5511999999999@c.us'] ou lista por virgula; aceita {{var}}) -> id,added,not_added,added_count,not_added_count,no_whatsapp,invited,invite_status [risco de banimento]
|
|
980
1034
|
mesma correcao do 9o digito do create (21/08). added = quem esta no grupo agora (inclui quem ja estava); ninguem entrou = saida "error" (nobody_changed); parte entrou = "partial"
|
|
981
|
-
|
|
1035
|
+
DESDE 09/10/2026 reconhece quem o WhatsApp devolve SO com o codigo interno (@lid, sem telefone — o normal para quem ACABOU de ser colocado): antes acusava nobody_changed/not_added com a pessoa DENTRO do grupo (e o create dava "partial" falso). Sem resposta do motor = conta como NAO colocado
|
|
1036
|
+
remove_participants -> groupParticipants(obrig) -> id,removed,not_removed,removed_count,not_removed_count (ninguem saiu = "error"; parte = "partial"; desde 09/10/2026 tambem reconhece quem esta so com o codigo interno — antes dava SUCESSO falso)
|
|
982
1037
|
promote_admin -> groupParticipants(obrig) -> id,participants
|
|
983
1038
|
demote_admin -> groupParticipants(obrig) -> id,participants
|
|
984
1039
|
get_invite -> (groupTargetId) -> id,invite_link
|
|
@@ -1000,6 +1055,11 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
1000
1055
|
'sem_mensagem'. EFEITO COLATERAL: cada convite entregue vira contato + conversa NOVOS no painel e
|
|
1001
1056
|
dispara os ouvintes de conversation_created (automacao, outros flows, webhook do cliente, Kanban).
|
|
1002
1057
|
Toda operacao (menos send_message e send_private_message) tambem devolve {{grupo.ok}} (bool) e {{grupo.error.message}}.
|
|
1058
|
+
HISTORICO (09/10/2026): nas operacoes com groupParticipants o passo do historico (NAO a variavel {{grupo.*}})
|
|
1059
|
+
traz participant_sources: [{number, source (a LINHA do campo de onde o numero saiu), typed (true = digitado,
|
|
1060
|
+
sem variavel), informed? (o numero como foi escrito, quando o WhatsApp usa outra forma), filled_by?/filled_at?
|
|
1061
|
+
(linha que e UM atributo personalizado sozinho: quem gravou e quando)}]. So anotacao: nunca muda o pedido;
|
|
1062
|
+
origem e autor podem faltar, nunca saem errados.
|
|
1003
1063
|
Handles: "success", "error" + "partial" em create/add_participants/remove_participants (a operacao
|
|
1004
1064
|
rodou mas nem todo mundo entrou/saiu — listas not_added/not_removed dizem quem). "partial" sem fio
|
|
1005
1065
|
segue pelo fio "success" (unica saida com esse fallback no motor).
|
|
@@ -1025,6 +1085,7 @@ condicao bater, o lead sai do flow NA HORA. Cada item tem "type":
|
|
|
1025
1085
|
- Rico por atributo (novo 2026-07-08; REATIVO desde 2026-07-09):
|
|
1026
1086
|
{type:'attribute_condition', logic:'and'|'or', rules:[{attr_key, attrSource:'contact'|'conversation'
|
|
1027
1087
|
|'card', operator, value | values:[...], funnel_id?, card_source?}]}.
|
|
1088
|
+
attrSource 'company' NAO vale aqui (so no node condition): a regra de saida nao le a empresa.
|
|
1028
1089
|
AQUI o attrSource VAI na rule (ao contrario do gatilho de entrada por atributo, onde e implicito).
|
|
1029
1090
|
Operadores da condition EXCETO is_empty/is_not_empty (removidos do contexto reativo 09/07 — use so
|
|
1030
1091
|
no node condition); reativa: so reavalia quando o atributo VIGIADO muda; cada rule exige value|values;
|
|
@@ -1062,12 +1123,13 @@ trigger.* (variaveis do GATILHO que iniciou o flow — no autocomplete de TODO b
|
|
|
1062
1123
|
message_created (gatilho message_received), message_sent, conversation_created, conversation_opened
|
|
1063
1124
|
(gatilho conversation_reopened), conversation_resolved, label_added, label_removed, team_changed,
|
|
1064
1125
|
assignee_changed, sla_missed, kanban_item_created/card_created, kanban_item_stage_changed/card_moved,
|
|
1065
|
-
card_status_changed (card_won
|
|
1126
|
+
card_status_changed (card_won/card_lost/card_opened/card_snoozed — olhe trigger.kanban.status:
|
|
1127
|
+
won/lost/open/snoozed; rotulo "Situacao do card mudou" desde 11/10/2026), conversation_
|
|
1066
1128
|
attributes_changed, card_attributes_changed, contact_attribute_changed, group_participant_joined/left,
|
|
1067
1129
|
webhook_received, date_trigger, manual (sidebar), kanban_manual (botao do card), campaign (Campanha de
|
|
1068
1130
|
Fluxo), page_track, activated_by_flow (fluxo chamou fluxo), lead_form (os 3 gatilhos de formulario —
|
|
1069
1131
|
trigger.kind diz completed/milestone/abandoned), booking_created/booking_cancelled/booking_rescheduled/
|
|
1070
|
-
booking_completed. Compare SEMPRE com esses codigos numa condicao.
|
|
1132
|
+
booking_completed, whatsapp_form_answered. Compare SEMPRE com esses codigos numa condicao.
|
|
1071
1133
|
trigger.name (rotulo legivel, pra escrever pro cliente), trigger.activated_at (ISO) — desde 20/08
|
|
1072
1134
|
preenchidas em TODOS os caminhos de disparo (antes so no de evento de conversa).
|
|
1073
1135
|
trigger.data = o contexto inteiro em JSON (menos type/name/activated_at) — util em node api/ai.
|
|
@@ -1082,13 +1144,16 @@ trigger.* (variaveis do GATILHO que iniciou o flow — no autocomplete de TODO b
|
|
|
1082
1144
|
Cada uma so tem valor quando o gatilho fornece — fora disso resolve vazio.
|
|
1083
1145
|
FATOS do gatilho viraram variaveis (08/09/2026, no ar desde 10/09): {{trigger.<bloco>.<campo>}}, so
|
|
1084
1146
|
quando o Inicio tem o gatilho que os preenche — card_created/card_moved/card_won/card_lost/
|
|
1085
|
-
card_attribute_changed: trigger.kanban.title, trigger.kanban.funnel_name, trigger.kanban.stage_name,
|
|
1147
|
+
card_opened/card_snoozed/card_attribute_changed: trigger.kanban.title, trigger.kanban.funnel_name, trigger.kanban.stage_name,
|
|
1086
1148
|
trigger.kanban.stage (codigo da etapa); card_moved: trigger.kanban.previous_stage_name/previous_stage;
|
|
1087
|
-
card_won/card_lost: trigger.kanban.status (won/lost);
|
|
1149
|
+
card_won/card_lost/card_opened/card_snoozed: trigger.kanban.status (won/lost/open/snoozed);
|
|
1150
|
+
card_opened: trigger.kanban.previous_status (snoozed = voltou do adiamento; won/lost = reabriram); label_added/label_removed: trigger.label.name;
|
|
1088
1151
|
assignee_changed: trigger.assignee.name (vazio = responsavel removido); team_changed: trigger.team.name;
|
|
1089
1152
|
sla_missed: trigger.sla.policy_name/type (frt/nrt/rt); group_participant_joined/left:
|
|
1090
1153
|
trigger.group.name/id, trigger.participant.phone/name (16/09 — QUEM entrou/saiu, telefone com +;
|
|
1091
|
-
nome so se a pessoa ja e contato; evento com varias pessoas = a 1a)
|
|
1154
|
+
nome so se a pessoa ja e contato; evento com varias pessoas = a 1a); whatsapp_form_answered (17/10):
|
|
1155
|
+
trigger.form.name, trigger.form.id e trigger.form.f_<n> = a resposta de cada pergunta ja em texto (opcao pelo
|
|
1156
|
+
nome, data DD/MM/AAAA, Sim/Nao, "N arquivos: nomes"; codigos em whatsapp_forms_list com with_questions=true). Resolvem mas ficam FORA do seletor (produtor unico): trigger.attribute.name/
|
|
1092
1157
|
current_value, trigger.form.name/milestone, trigger.payment.gateway/event/product/offer/method/status/
|
|
1093
1158
|
amount, trigger.eclinica.event/unit/date/time/compromisso/idagenda, trigger.lead.form/page/ad/adset/
|
|
1094
1159
|
campaign/platform, trigger.dtmf.key/campaign, trigger.reminder.date/time/compromisso/unit/days_before.
|
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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"}
|