@lionchat/mcp-server 0.5.6 → 0.5.7

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.
@@ -261,6 +261,48 @@ Pra dados fixos que se repetem (slogans, endereços, horários):
261
261
 
262
262
  Nunca hard-code esses dados em respostas geradas.
263
263
 
264
+ ## Templates WhatsApp com variáveis do sistema (auto-preenchimento) (2026-06)
265
+
266
+ Ao criar/editar um template WhatsApp (`inboxes_whatsapp_templates_create` / `_create_2`), o corpo usa
267
+ variáveis posicionais `{{1}}`, `{{2}}`. Por padrão elas são **manuais** (o atendente digita o valor no
268
+ envio). Pra deixar uma variável **auto-preenchida** com um campo do contato/conversa, mande o parâmetro
269
+ opcional `variable_mapping` junto.
270
+
271
+ - Formato: objeto com chave = posição da variável (`"1"`, `"2"`...) e valor = `{ source, field, label }`.
272
+ - Só entram no mapping as que devem auto-preencher; as demais `{{N}}` continuam manuais.
273
+ - O `variable_mapping` é salvo localmente (NÃO vai pra Meta) e usado no momento do envio.
274
+
275
+ Exemplo — `{{1}}` vira o primeiro nome do contato:
276
+
277
+ ```json
278
+ {
279
+ "components": [
280
+ { "type": "BODY", "text": "Olá {{1}}! Sua oferta de {{2}} está ativa.",
281
+ "example": { "body_text": [["Maria", "20%"]] } }
282
+ ],
283
+ "variable_mapping": {
284
+ "1": { "source": "contact", "field": "name.split.first", "label": "Primeiro nome" }
285
+ }
286
+ }
287
+ ```
288
+
289
+ Fontes/campos disponíveis (`source` / `field`):
290
+
291
+ | Variável | source | field |
292
+ |---|---|---|
293
+ | Nome completo | contact | name |
294
+ | Primeiro nome | contact | name.split.first |
295
+ | Sobrenome | contact | name.split[1..] |
296
+ | Telefone | contact | phone_number |
297
+ | E-mail | contact | email |
298
+ | Atendente | conversation | assignee.name |
299
+ | Equipe | conversation | team.name |
300
+ | Nome da conta | account | name |
301
+ | Campo personalizado | contact | custom_attributes.CHAVE |
302
+
303
+ Lembrete: todo template recém-criado pelo MCP só mostra o texto na tela depois de **sincronizar**
304
+ (o MCP cria na Meta, mas o "puxar de volta" o conteúdo é o que a tela faz com o botão Sincronizar).
305
+
264
306
  ## Status codes a respeitar
265
307
 
266
308
  | Code | O que fazer |
package/endpoints.json CHANGED
@@ -14521,6 +14521,13 @@
14521
14521
  "location": "body",
14522
14522
  "required": true,
14523
14523
  "description": "Componentes do template"
14524
+ },
14525
+ {
14526
+ "name": "variable_mapping",
14527
+ "type": "object",
14528
+ "location": "body",
14529
+ "required": false,
14530
+ "description": "Opcional. Mapeia variaveis {{N}} do corpo a campos do sistema para auto-preenchimento no envio (NAO vai para a Meta, fica salvo localmente). Chave = posicao da variavel (\"1\", \"2\"...), valor = objeto {source, field, label}. Ex: {\"1\": {\"source\": \"contact\", \"field\": \"name.split.first\", \"label\": \"Primeiro nome\"}}. Variavel sem mapping continua manual (digitada no envio). Fontes/campos: contact/name (Nome completo), contact/name.split.first (Primeiro nome), contact/name.split[1..] (Sobrenome), contact/phone_number, contact/email, conversation/assignee.name (Atendente), conversation/team.name (Equipe), account/name, ou contact/custom_attributes.CHAVE para campo personalizado."
14524
14531
  }
14525
14532
  ],
14526
14533
  "returns": "template WhatsApp criado (com novo ID)",
@@ -14640,6 +14647,13 @@
14640
14647
  "location": "body",
14641
14648
  "required": false,
14642
14649
  "description": "Componentes atualizados"
14650
+ },
14651
+ {
14652
+ "name": "variable_mapping",
14653
+ "type": "object",
14654
+ "location": "body",
14655
+ "required": false,
14656
+ "description": "Opcional. Mapeia variaveis {{N}} a campos do sistema para auto-preenchimento no envio (NAO vai para a Meta). Chave = posicao da variavel (\"1\", \"2\"...), valor = objeto {source, field, label}. Ex: {\"1\": {\"source\": \"contact\", \"field\": \"name.split.first\", \"label\": \"Primeiro nome\"}}. Mesmas fontes/campos do endpoint de criacao."
14643
14657
  }
14644
14658
  ],
14645
14659
  "returns": "{ success: true }",
@@ -14654,6 +14668,33 @@
14654
14668
  "lionchat_inboxes_whatsapp_templates_destroy"
14655
14669
  ]
14656
14670
  },
14671
+ {
14672
+ "id": "lionchat_inboxes_sync_templates",
14673
+ "method": "POST",
14674
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/sync_templates",
14675
+ "title": "Sincronizar Templates WhatsApp",
14676
+ "description": "Sincroniza (puxa) os templates de WhatsApp da Meta para a caixa, atualizando nome, corpo e status no LionChat. SOMENTE Channel::Whatsapp Cloud. Use logo apos criar/editar um template via API: a criacao retorna so id/status e o conteudo so aparece na tela depois deste sync.",
14677
+ "category": "Templates WhatsApp",
14678
+ "params": [
14679
+ {
14680
+ "name": "inbox_id",
14681
+ "type": "integer",
14682
+ "location": "path",
14683
+ "required": true,
14684
+ "description": "ID da inbox"
14685
+ }
14686
+ ],
14687
+ "returns": "{ message: 'Template sync initiated successfully' } — dispara o job de sincronizacao",
14688
+ "common_use_cases": [
14689
+ "Tornar visivel um template recem-criado via API (sai do estado vazio)",
14690
+ "Atualizar status (aprovado/recusado) dos templates"
14691
+ ],
14692
+ "related_tools": [
14693
+ "lionchat_inboxes_whatsapp_templates_create",
14694
+ "lionchat_inboxes_whatsapp_templates_create_2",
14695
+ "lionchat_inboxes_whatsapp_templates_list"
14696
+ ]
14697
+ },
14657
14698
  {
14658
14699
  "id": "lionchat_inboxes_csat_template_list",
14659
14700
  "method": "GET",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionchat/mcp-server",
3
- "version": "0.5.6",
3
+ "version": "0.5.7",
4
4
  "description": "MCP server for LionChat API — 547 tools + 10 resources + 9 prompts. Audit-log aware, completion API, progress notifications.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",