@lionchat/mcp-server 1.34.0 → 1.35.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.js +12 -0
- package/dist/client.js.map +1 -1
- package/dist/docs/instructions.md +10 -6
- package/dist/docs/resources/agenda-multiplas-unidades.md +1 -0
- package/dist/docs/resources/api-conventions.md +4 -0
- package/dist/docs/resources/assinatura-eletronica.md +4 -2
- package/dist/docs/resources/best-practices.md +69 -0
- package/dist/docs/resources/conversation-flows.md +1 -1
- package/dist/docs/resources/data-model.md +11 -6
- package/dist/docs/resources/filtros-e-relatorios.md +6 -1
- package/dist/docs/resources/flowbuilder-design-guide.md +4 -2
- package/dist/docs/resources/glossary.md +10 -3
- package/dist/docs/resources/kanban-deep-dive.md +69 -20
- package/dist/docs/resources/reports-guide.md +5 -0
- package/dist/docs/resources/troubleshooting.md +33 -2
- package/dist/sanitize.js +1 -0
- package/dist/sanitize.js.map +1 -1
- package/dist/tools.js +14 -8
- package/dist/tools.js.map +1 -1
- package/endpoints.json +187 -68
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -27,6 +27,10 @@ function getErrorMessage(status, body) {
|
|
|
27
27
|
return 'Permission denied: your role does not allow this action (an administrator may have hidden this menu ' +
|
|
28
28
|
'in the custom role). The token is valid — do not ask the user to renew it.';
|
|
29
29
|
}
|
|
30
|
+
if (isInvalidMemberIds(body)) {
|
|
31
|
+
return 'Invalid user id: at least one id in user_ids or supervisor_ids does not belong to this account, and ' +
|
|
32
|
+
'nothing was changed. The token is valid — fix the list and do not ask the user to renew it.';
|
|
33
|
+
}
|
|
30
34
|
return 'Authentication failed. Check your token at Login > Profile Settings';
|
|
31
35
|
case 403:
|
|
32
36
|
return 'Permission denied. Your token may not have access to this resource';
|
|
@@ -54,6 +58,14 @@ function isPermissionRefusal(body) {
|
|
|
54
58
|
const obj = body;
|
|
55
59
|
return obj.error === PERMISSION_REFUSAL_TEXT || obj.message === PERMISSION_REFUSAL_TEXT;
|
|
56
60
|
}
|
|
61
|
+
// AIDEV-NOTE: [protecao-contra-excesso 04/11] as 4 rotas que gravam membro de time respondem 401 com este texto quando a
|
|
62
|
+
// lista traz id de fora da conta. O token esta certo: como "token invalido", a IA pedia credencial nova sem precisar.
|
|
63
|
+
const INVALID_MEMBER_IDS_TEXT = 'IDs de usuario invalidos';
|
|
64
|
+
function isInvalidMemberIds(body) {
|
|
65
|
+
if (!body || typeof body !== 'object')
|
|
66
|
+
return false;
|
|
67
|
+
return body.error === INVALID_MEMBER_IDS_TEXT;
|
|
68
|
+
}
|
|
57
69
|
// AIDEV-NOTE: Extract validation details from 422 response body
|
|
58
70
|
function extractValidationDetails(body) {
|
|
59
71
|
if (body && typeof body === 'object') {
|
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":"AAAA,2CAA2C;AAC3C,2DAA2D;AAC3D,6EAA6E;AAyB7E,yEAAyE;AACzE,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzB,MAAM,CAAS;IACf,YAAY,CAAU;IAEtC,YAAY,OAAe,EAAE,MAAc,EAAE,YAAsB;QACjE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,wDAAwD;AACxD,SAAS,eAAe,CAAC,MAAc,EAAE,IAAa;IACpD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,+GAA+G;YAC/G,6GAA6G;YAC7G,gGAAgG;YAChG,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO,sGAAsG;oBAC3G,4EAA4E,CAAC;YACjF,CAAC;YACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,OAAO,sGAAsG;oBAC3G,6FAA6F,CAAC;YAClG,CAAC;YACD,OAAO,qEAAqE,CAAC;QAC/E,KAAK,GAAG;YACN,OAAO,oEAAoE,CAAC;QAC9E,KAAK,GAAG;YACN,OAAO,iDAAiD,CAAC;QAC3D,KAAK,GAAG,CAAC,CAAC,CAAC;YACT,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,qBAAqB,OAAO,EAAE,CAAC;QACxC,CAAC;QACD,KAAK,GAAG;YACN,OAAO,8BAA8B,CAAC;QACxC;YACE,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBAClB,OAAO,wCAAwC,CAAC;YAClD,CAAC;YACD,OAAO,cAAc,MAAM,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,kHAAkH;AAClH,oGAAoG;AACpG,MAAM,uBAAuB,GAAG,0CAA0C,CAAC;AAE3E,SAAS,mBAAmB,CAAC,IAAa;IACxC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,OAAO,GAAG,CAAC,KAAK,KAAK,uBAAuB,IAAI,GAAG,CAAC,OAAO,KAAK,uBAAuB,CAAC;AAC1F,CAAC;AAED,yHAAyH;AACzH,sHAAsH;AACtH,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAE3D,SAAS,kBAAkB,CAAC,IAAa;IACvC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACpD,OAAQ,IAAgC,CAAC,KAAK,KAAK,uBAAuB,CAAC;AAC7E,CAAC;AAED,gEAAgE;AAChE,SAAS,wBAAwB,CAAC,IAAa;IAC7C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,6CAA6C;QAC7C,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,KAAK,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,0EAA0E;AAC1E,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC1B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzB,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC5B,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YACrB,GAAG,CAAC,IAAI,KAAK,YAAY,CAC1B,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8CAA8C;AAC9C,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,sEAAsE;AACtE,4DAA4D;AAC5D,mCAAmC;AACnC,oCAAoC;AACpC,+GAA+G;AAC/G,2GAA2G;AAC3G,6GAA6G;AAC7G,kFAAkF;AAClF,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AACrH,0GAA0G;AAC1G,SAAS,gBAAgB,CAAC,IAA6B;IACrD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAa;IACtC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,IAA+B,CAAC;QAE5C,sGAAsG;QACtG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3E,MAAM,IAAI,GAAG,GAAG,CAAC,IAA+B,CAAC;YACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAA8B,CAAC;YACjE,CAAC;YACD,mFAAmF;YACnF,2FAA2F;YAC3F,wFAAwF;YACxF,oDAAoD;YACpD,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;gBAChC,CAAC,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK;oBACZ,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;wBACpC,CAAC,CAAC,IAAI,CAAC,WAAW;wBAClB,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAEhE,8FAA8F;YAC9F,8FAA8F;YAC9F,2FAA2F;YAC3F,kGAAkG;YAClG,gGAAgG;YAChG,MAAM,aAAa,GAAI,GAAG,CAAC,OAAqB,CAAC,MAAM,CAAC;YACxD,MAAM,OAAO,GACX,aAAa,GAAG,CAAC;gBACjB,CAAC,QAAQ,KAAK,CAAC,IAAI,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC,CAAC;YAC7D,MAAM,UAAU,GACd,QAAQ,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC;gBAC/B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;gBACrC,CAAC,CAAC,OAAO;oBACP,CAAC,CAAC,WAAW,GAAG,CAAC;oBACjB,CAAC,CAAC,WAAW,CAAC;YAEpB,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,OAAO;gBACjB,IAAI;gBACJ,UAAU,EAAE;oBACV,YAAY,EAAE,WAAW;oBACzB,WAAW,EAAE,UAAU;oBACvB,WAAW,EAAE,QAAQ;oBACrB,QAAQ,EAAE,OAAO;iBAClB;aAC0B,CAAC;QAChC,CAAC;QAED,wEAAwE;QACxE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxE,MAAM,IAAI,GAAG,GAAG,CAAC,IAA+B,CAAC;YACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAA8B,CAAC;YAC9D,CAAC;YACD,6FAA6F;YAC7F,0FAA0F;YAC1F,uFAAuF;YACvF,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAClC,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;oBAClC,CAAC,CAAC,IAAI,CAAC,SAAS;oBAChB,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;wBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK;wBACZ,CAAC,CAAE,GAAG,CAAC,IAAkB,CAAC,MAAM,CAAC;YACzC,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBACnC,CAAC,CAAC,IAAI,CAAC,YAAY;gBACnB,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;oBAC7B,CAAC,CAAC,IAAI,CAAC,IAAI;oBACX,CAAC,CAAC,CAAC,CAAC;YACV,6FAA6F;YAC7F,4FAA4F;YAC5F,8BAA8B;YAC9B,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,GAAG;gBACV,CAAC,CAAC,IAAI,CAAC,GAAG,CAAE,GAAG,CAAC,IAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,UAAU,GACd,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAClC,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;YAEvC,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI;gBACJ,UAAU,EAAE;oBACV,YAAY,EAAE,WAAW;oBACzB,WAAW,EAAE,UAAU;oBACvB,WAAW,EAAE,UAAU;oBACvB,QAAQ,EAAE,WAAW,GAAG,UAAU;iBACnC;aAC0B,CAAC;QAChC,CAAC;QAED,kGAAkG;QAClG,iGAAiG;QACjG,wGAAwG;QACxG,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,KAAK,GAAG,GAAG,CAAC,IAA+B,CAAC;YAClD,IACE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC5B,KAAK,CAAC,IAAI;gBACV,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;gBACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+B,CAAC;gBACnD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAA8B,CAAC;gBACnE,CAAC;gBACD,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;oBAChC,CAAC,CAAC,IAAI,CAAC,SAAS;oBAChB,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;wBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK;wBACZ,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;4BACpC,CAAC,CAAC,IAAI,CAAC,WAAW;4BAClB,CAAC,CAAC,CAAC,CAAC;gBACZ,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,aAAa,GAAI,KAAK,CAAC,OAAqB,CAAC,MAAM,CAAC;gBAC1D,MAAM,OAAO,GACX,aAAa,GAAG,CAAC;oBACjB,CAAC,QAAQ,KAAK,CAAC,IAAI,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC,CAAC;gBAC7D,MAAM,UAAU,GACd,QAAQ,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC;oBAC/B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;oBACrC,CAAC,CAAC,OAAO;wBACP,CAAC,CAAC,WAAW,GAAG,CAAC;wBACjB,CAAC,CAAC,WAAW,CAAC;gBACpB,OAAO;oBACL,IAAI,EAAE,KAAK,CAAC,OAAO;oBACnB,IAAI;oBACJ,UAAU,EAAE;wBACV,YAAY,EAAE,WAAW;wBACzB,WAAW,EAAE,UAAU;wBACvB,WAAW,EAAE,QAAQ;wBACrB,QAAQ,EAAE,OAAO;qBAClB;iBAC0B,CAAC;YAChC,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,cAAc;IACjB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAEvC,iFAAiF;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhC,6EAA6E;QAC7E,gGAAgG;QAChG,iDAAiD;QACjD,MAAM,OAAO,GAA2B;YACtC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YACtC,YAAY,EAAE,wBAAwB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;SAC5D,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1F,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC/C,CAAC;QAED,MAAM,YAAY,GAAgB;YAChC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;YAC5B,OAAO;SACR,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACZ,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,uCAAuC;QACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,+EAA+E;IACvE,QAAQ,CAAC,IAAY;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3D,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,6FAA6F;IACrF,KAAK,CAAC,gBAAgB,CAC5B,GAAW,EACX,YAAyB;QAEzB,IAAI,SAAkB,CAAC;QACvB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,8EAA8E;QAC9E,kFAAkF;QAClF,kFAAkF;QAClF,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAChE,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAE/F,kFAAkF;QAClF,2DAA2D;QAC3D,MAAM,WAAW,GAAG,CAAC,GAAG,eAAe,GAAG,eAAe,GAAG,mBAAmB,CAAC;QAEhF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,8CAA8C;gBAC9C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;gBAEnE,IAAI,QAAkB,CAAC;gBACvB,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;wBAC1B,GAAG,YAAY;wBACf,MAAM,EAAE,UAAU,CAAC,MAAM;qBAC1B,CAAC,CAAC;gBACL,CAAC;wBAAS,CAAC;oBACT,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;gBAED,8EAA8E;gBAC9E,sEAAsE;gBACtE,iFAAiF;gBACjF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;gBACrE,IAAI,WAAW,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAC/B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpD,CAAC;gBAED,mCAAmC;gBACnC,iFAAiF;gBACjF,oFAAoF;gBACpF,iFAAiF;gBACjF,8EAA8E;gBAC9E,gCAAgC;gBAChC,IAAI,YAAqB,CAAC;gBAC1B,IAAI,WAAW,EAAE,CAAC;oBAChB,YAAY,GAAG,SAAS,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC;wBACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrC,CAAC;oBAAC,MAAM,CAAC;wBACP,YAAY,GAAG,OAAO,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAED,6CAA6C;gBAC7C,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBACzC,CAAC;gBAED,wEAAwE;gBACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,UAAU,GAAG,eAAe,EAAE,CAAC;oBAC5D,UAAU,EAAE,CAAC;oBACb,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACvD,IAAI,OAAe,CAAC;oBACpB,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;wBACzC,6EAA6E;wBAC7E,kEAAkE;wBAClE,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;oBACxF,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa;oBAC7D,CAAC;oBACD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrB,SAAS;gBACX,CAAC;gBAED,8EAA8E;gBAC9E,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,YAAY,IAAI,UAAU,GAAG,eAAe,EAAE,CAAC;oBAC3E,UAAU,EAAE,CAAC;oBACb,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClB,SAAS;gBACX,CAAC;gBAED,kEAAkE;gBAClE,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAC/D,MAAM,IAAI,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,8DAA8D;gBAC9D,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;oBACpC,MAAM,GAAG,CAAC;gBACZ,CAAC;gBAED,yFAAyF;gBACzF,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,YAAY,IAAI,cAAc,GAAG,mBAAmB,EAAE,CAAC;oBAChF,cAAc,EAAE,CAAC;oBACjB,SAAS,GAAG,GAAG,CAAC;oBAChB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClB,SAAS;gBACX,CAAC;gBAED,0CAA0C;gBAC1C,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,gBAAgB,CACxB,uCAAuC,IAAI,CAAC,MAAM,CAAC,OAAO,+CAA+C,EACzG,CAAC,EACD,SAAS,CACV,CAAC;gBACJ,CAAC;gBAED,yCAAyC;gBACzC,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,yDAAyD;QACzD,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
@@ -80,7 +80,7 @@ Account (conta/empresa)
|
|
|
80
80
|
- `image` — fotos/imagens
|
|
81
81
|
- `audio` — áudios (geralmente vêm com `transcribed_text`)
|
|
82
82
|
- `video`
|
|
83
|
-
- `file` — PDF, DOCX, qualquer outro (
|
|
83
|
+
- `file` — PDF, DOCX, planilha, qualquer outro. O texto que a IA leu do documento NÃO vem na API (não existe `extracted_text` na resposta); o que ela leu aparece na pílula de atividade da conversa ("A IA leu o documento X (N de M páginas)")
|
|
84
84
|
- `location`, `contact` — tipos especiais
|
|
85
85
|
|
|
86
86
|
### KanbanItem.item_details.priority (string)
|
|
@@ -209,7 +209,7 @@ Muitos campos objeto/lista são **trocados inteiros** no update: o que não vier
|
|
|
209
209
|
| TROCA inteira (leia e reenvie tudo) | SOMA (só as chaves enviadas mudam) |
|
|
210
210
|
|---|---|
|
|
211
211
|
| `custom_attributes` da CONVERSA (`conversations_create_3` — troca os atributos DO CLIENTE; desde 06/10/2026 o dado do sistema fica FORA dessa troca: não é apagado e também não é gravado por aqui — ctwa/origin/UTM oficiais/cliques do Google/waha/captain e qualquer atributo marcado como do sistema. Atributo próprio do cliente segue normal, mesmo com nome parecido, ex.: `utm_loja_fisica`) | `custom_attributes` do CONTATO (`contacts_update`) |
|
|
212
|
-
| card: cada chave de `item_details` (a lista `custom_attributes` do card, `offers`, `notes`), `assigned_agents
|
|
212
|
+
| card: cada chave de `item_details` (a lista `custom_attributes` do card, `offers`, `notes`), `assigned_agents` | `item_details` do card no 1º nível (chave não enviada fica); `kanban_item.custom_attributes` (objeto `{nome do campo: valor}`), campo a campo: os outros ficam |
|
|
213
213
|
| `funnel.settings`, `funnel.stages` (etapa ausente = removida), `kanban_config.global_custom_attributes` | `channel.additional_attributes` da caixa WhatsApp/Instagram/Facebook/TikTok |
|
|
214
214
|
| `flow_data` do fluxo, `actions` de macro/automação, `query` de filtro salvo, `audience` de campanha | `roles_layout` do modelo de contrato |
|
|
215
215
|
| `settings` de integração (hooks), mapas de evento de gateway/Omie/Conta Azul/Meta Lead/Google Ads | |
|
|
@@ -453,10 +453,14 @@ Antes de escolher a ferramenta, cheque se a intenção bate com a coluna da dire
|
|
|
453
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 |
|
|
454
454
|
| **Importar muitas empresas** de uma vez (planilha, lista de clientes, cadastro de outro sistema) | `lionchat_companies_bulk_create` (ate 1000 por chamada; `check_only: true` CONFERE sem gravar) e depois `lionchat_companies_import_status` com o `import_id` | Mesma importacao do botao "Importar empresas" da tela. Mesma empresa = CNPJ; sem CNPJ, o site; sem os dois, o NOME — mais de uma empresa com aquele nome = a linha NAO entra (mande CNPJ ou site). Empresa existente e ATUALIZADA; campo vazio nunca apaga. Valor invalido fica em branco com aviso e o resto entra. Campos PLANOS (`address_city`, `social_instagram`), nunca objeto; `custom_attributes` so com chave que ja existe como atributo de EMPRESA. Exige modulo Empresas + administrador ou cargo "Exportar e importar contatos". So no conector remoto (Claude.ai/ChatGPT); no conector local (NPM) importe com `lionchat_companies_create` uma a uma |
|
|
455
455
|
| Organizar atributos em **categorias** (pastas que abrem e fecham: "Sobre a casa", "Financeiro") | `lionchat_custom_attribute_categories_create` (`name` + `attribute_model`) e depois `lionchat_custom_attribute_categories_assign` (`attribute_key` + `category_id`; `null` tira) | Categoria e OPCIONAL e de UMA aba so (`conversation_attribute`, `contact_attribute`, `company_attribute` ou `kanban_item_attribute` = Card). Criar categoria NAO aceita atributos junto. Card: `attribute_key` = NOME do campo exatamente como gravado. Excluir categoria nunca apaga atributo (voltam para "Sem categoria"). Ver resource data-model |
|
|
456
|
-
| Achar a conversa **de uma pessoa/empresa** (nome, telefone, e-mail, CPF/CNPJ, nº da conversa) | `lionchat_search_list` (`/search/conversations`) ou `lionchat_contacts_search` | RÁPIDO
|
|
457
|
-
|
|
|
456
|
+
| Achar a conversa **de uma pessoa/empresa** (nome, telefone, e-mail, CPF/CNPJ, nº da conversa) | `lionchat_search_list` (`/search/conversations`) ou `lionchat_contacts_search` | RÁPIDO e lê a FICHA. **`lionchat_conversations_search` não serve para isso**: apesar do nome, ele procura só no TEXTO das mensagens, nunca no nome, telefone ou CPF. O sufixo `_list` aqui é histórico — `lionchat_search_list*` **são buscas**, não listagens; a regra "não baixe tudo com `*_list`" vale para `lionchat_<recurso>_list` |
|
|
457
|
+
| **Em quais conversas** foi dito algo, e **quantas** (histórico inteiro) | `lionchat_conversations_search` (`/conversations/search`) | Refeito em 05/11/2026: antes levava 15 a 22 s e chegou a derrubar o servidor; resposta anterior sua que mandou EVITAR esta ferramenta ficou velha. Procura o TRECHO EXATO digitado (com os espaços; maiúscula não importa, acento importa) nas mensagens do cliente e da equipe, em todo o histórico; nota privada e evento do sistema ficam fora. `meta.all_count` conta CONVERSAS, não vezes, e já responde "quantas" na 1ª página: peça outras páginas só para ler mais. Cada conversa traz até 5 mensagens que casam, as mais novas, e `matched_messages_count` (quantas casam nela). `meta.truncated: true` = passou de 5.000 conversas e o número é "pelo menos". `meta.message_search_interrupted: true` = estourou o tempo: vazio NÃO quer dizer que não existe e os números vêm `null`; refine o termo. 25 conversas por página. Resposta cortada por tamanho: as conversas cortadas NÃO voltam na página seguinte; refine o termo |
|
|
458
|
+
| Mensagens **recentes** com o contexto em volta (o que veio antes e depois) | `lionchat_search_list_2` (`/search/messages`) | RÁPIDO, mas só os ÚLTIMOS 3 MESES, por palavras soltas (cada termo precisa bater) e sem agrupar por conversa: 15 mensagens por página, cada uma com a anterior e a seguinte. Teto de tempo em duas fases (2 s + 2 s desde 04/09): estourou, volta `message_search_interrupted: true` e a lista VAZIA — isso NÃO quer dizer que não existe, quer dizer que não deu tempo |
|
|
459
|
+
| Achar algo **dentro de uma conversa** que você já sabe qual é | `lionchat_conversations_messages_search` | Recorta por uma conversa só; aceita `private_only` (só notas privadas) e `file_type` |
|
|
458
460
|
| Não sei se o termo é nome de alguém ou algo dito no papo | `lionchat_search_search` (`/search`) | Cobre os dois numa chamada. Opção mais segura quando a intenção é ambígua |
|
|
459
|
-
| (qualquer busca) termo com menos de 3 caracteres | — | Volta **vazio de propósito** em todas as buscas. Vazio ≠ "não existe": quer dizer que a busca não rodou. Refaça com 3+ caracteres. Só-dígitos é isento nas rotas `/search/*`, mas **não** no `lionchat_conversations_search
|
|
461
|
+
| (qualquer busca) termo com menos de 3 caracteres | — | Volta **vazio de propósito** em todas as buscas. Vazio ≠ "não existe": quer dizer que a busca não rodou. Refaça com 3+ caracteres. Só-dígitos é isento nas rotas `/search/*`, mas **não** no `lionchat_conversations_search`, que também devolve vazio para termo sem nenhuma letra ou número |
|
|
462
|
+
| Entregar o **link** de um card ou de uma conversa ("me manda o link desse card") | Sem ferramenta: monte o endereço. Card: `<painel>/app/accounts/<conta>/kanban?funnel=<funnel_id>&card_id=<id do card>`. Conversa: `<painel>/app/accounts/<conta>/conversations/<número da conversa>`. `<painel>` e `<conta>` vêm de `lionchat_current_account` (conector remoto) ou `lionchat_ping` (conector local) | Cada instalação tem o seu endereço: nunca chute. Só abre para quem tem login e acesso naquela conta: nunca mande ao cliente final. Aba do card, conversa por cima do card e uso em fluxo: `lionchat://docs/kanban-deep-dive`, seção "Link do card" |
|
|
463
|
+
| Recebeu um **link do painel** e quer saber do que se trata | Leia o endereço: `card_id` vai em `lionchat_kanban_items_show`; `conversation_id` ou `conversations/<número>` vai em `lionchat_conversations_show` | `accounts/<conta>` pode não ser a conta ativa: confira e troque antes de concluir que não existe. `conversation_id` é o número da tela (`display_id`), não o id interno |
|
|
460
464
|
| Só a contagem / números | `lionchat_conversations_meta` / `lionchat_reports_summary` | Não liste o conteúdo completo |
|
|
461
465
|
| Criar contato | `lionchat_contacts_create` base (path `/contacts`) | NÃO use as variantes `_1` … `_9` |
|
|
462
466
|
| Pausar a IA agora (botão de pânico) | `lionchat_captain_assistants_update` (`paused: true`, top-level) | — |
|
|
@@ -518,7 +522,7 @@ Quando precisar de detalhes profundos, leia um destes documents via `resources/r
|
|
|
518
522
|
- `lionchat://docs/reports-guide` — Como interpretar cada um dos 19 endpoints de relatório
|
|
519
523
|
- `lionchat://docs/api-conventions` — Auth, paginação, filtros, errors, rate limits
|
|
520
524
|
- `lionchat://docs/conversation-flows` — Ciclo de vida de uma conversa (criação, auto-assignment, IA, resolução)
|
|
521
|
-
- `lionchat://docs/kanban-deep-dive` — Estrutura completa do Kanban (Funnel/Stage/Item/pipeline)
|
|
525
|
+
- `lionchat://docs/kanban-deep-dive` — Estrutura completa do Kanban (Funnel/Stage/Item/pipeline) e link do card, da aba e da conversa
|
|
522
526
|
- `lionchat://docs/agenda-multiplas-unidades` — **Agenda por unidade**: o que `agenda_id` nulo significa, tipos de compromisso da conta, Booking ligado a unidade, página pública (cancelar/remarcar/confirmar), Google **uma conexão por agenda** e **programa de sessões** (N sessões de um tipo; faltar consome; marcar próxima e marcar todas)
|
|
523
527
|
- `lionchat://docs/best-practices` — Como economizar tokens, evitar rate limit, ordem de operações
|
|
524
528
|
- `lionchat://docs/troubleshooting` — Códigos HTTP, erros comuns, debugging
|
|
@@ -153,6 +153,7 @@ O compromisso marcado por um tipo de evento (Booking) cai SEMPRE na agenda do pr
|
|
|
153
153
|
nele. Na criação, `assignee_ids` nunca valeu; desde 17/09 também é **ignorado na edição**
|
|
154
154
|
(`lionchat_tasks_update` / `_update_1`): a resposta é 200, o resto da edição vale e o responsável continua
|
|
155
155
|
o mesmo. Para mudar quem atende, altere o profissional do tipo de evento (`booking_event_types_update`).
|
|
156
|
+
Número de pessoa de outra conta é recusado com 422, em qualquer compromisso.
|
|
156
157
|
|
|
157
158
|
### Ver como está o dia antes de marcar
|
|
158
159
|
|
|
@@ -415,6 +415,10 @@ Quando rate-limited:
|
|
|
415
415
|
2026-05-15). Acima disso o servidor recusa com `422` + `code: "bulk_ids_limit_exceeded"` — quebre em
|
|
416
416
|
chamadas de 300.
|
|
417
417
|
|
|
418
|
+
`fields.assignee_id`, `fields.team_id` e `fields.inbox_id` têm de ser da conta. Fora disso a resposta é
|
|
419
|
+
`422` `Invalid <campo>` e nada é aplicado. Para tirar o responsável ou o time, mande `null` ou `0`. A caixa
|
|
420
|
+
não aceita vazio: sem caixa, a conversa não envia nem recebe.
|
|
421
|
+
|
|
418
422
|
**Exceção:** contato com `select_all: true` (agir sobre TODOS os contatos do filtro) **não tem teto** —
|
|
419
423
|
o servidor resolve pelo próprio filtro (`query` / `labels_filter`), em lotes no fundo, e não usa `ids`.
|
|
420
424
|
|
|
@@ -210,9 +210,11 @@ automações não respondem a ela. Não há ferramenta: é só a página da pess
|
|
|
210
210
|
última que faltava? o contrato fecha e o PDF final é gerado em seguida. Os que esperam você: `status=falta_eu`.
|
|
211
211
|
- **Envio por outros caminhos**: ação `send_signature_document` no FlowBuilder (28/10: `collection` `ready`/`form`,
|
|
212
212
|
`message` junto do link e `send_link: false` para só gerar; o contrato criado vira `{{contrato.*}}`, com
|
|
213
|
-
`{{contrato.link}}
|
|
213
|
+
`{{contrato.link}}` do titular, para os blocos seguintes), na Macro e na Automação;
|
|
214
214
|
bloco `generate_contract` no Formulário público (gera pelas respostas e manda o link). Gatilhos do Flow
|
|
215
|
-
`signature_*` (12 acontecimentos, 29/10) trazem `{{contrato.*}}` — ver `lionchat_flows_schema_reference`.
|
|
215
|
+
`signature_*` (12 acontecimentos, 29/10) trazem `{{contrato.*}}` — ver `lionchat_flows_schema_reference`. Neles,
|
|
216
|
+
`{{contrato.link}}` (03/11) é o link de quem está na conversa em que o fluxo roda: na conversa da testemunha, o dela; na do
|
|
217
|
+
contrato, o do titular. Para o de quem causou o evento, `{{contrato.assinante.link}}`.
|
|
216
218
|
|
|
217
219
|
## Onde o cliente vê
|
|
218
220
|
Menu **Assinaturas** (modelos e contratos, filtros, "Falta você assinar"), aba **Contratos** na ficha do contato,
|
|
@@ -301,6 +301,24 @@ Diagnóstico, nesta ordem, quando relatarem "a IA nunca faz o follow-up":
|
|
|
301
301
|
2. A ativação veio por **lote**? Então nunca foi armado.
|
|
302
302
|
3. Tem `follow_up_skip_conditions` batendo (etiqueta, atributo, janela de silêncio)?
|
|
303
303
|
4. A soma das etapas passa de 1380 min? Nesse caso o assistente nem salvou a cadência.
|
|
304
|
+
5. Tem pílula cinza "Follow-up não enviado: <motivo>" na conversa? Então o modelo de decisões leu a conversa e as
|
|
305
|
+
instruções daquele follow-up e decidiu não enviar (seção seguinte).
|
|
306
|
+
|
|
307
|
+
## Faz ou não faz: o sistema decide antes de cada follow-up (novo 2026-11-05)
|
|
308
|
+
|
|
309
|
+
Na hora de cada Follow-up (1, 2, 3), antes de a IA escrever, o modelo de decisões lê a conversa, as instruções da IA
|
|
310
|
+
e, acima de tudo, as instruções daquele follow-up, e escolhe: enviar agora, ou um motivo para não enviar. Se escolhe
|
|
311
|
+
enviar, a IA só escreve (não desiste mais). Se não, nada sai e fica uma pílula cinza com o motivo, só para a equipe.
|
|
312
|
+
|
|
313
|
+
- **Encerram a sequência até o cliente escrever:** "o cliente já resolveu", "o cliente pediu para não receber mais",
|
|
314
|
+
"o assunto foi encerrado". Mensagem de fluxo, automação ou campanha no meio NÃO reabre.
|
|
315
|
+
- **Seguem para o próximo follow-up no tempo dele:** "aguardando retorno combinado com o cliente" e "a instrução deste
|
|
316
|
+
follow-up não se aplica agora".
|
|
317
|
+
- As condições acima (etiqueta, atributo) valem ANTES da pergunta e, desde 2026-11-05, também passam para o próximo
|
|
318
|
+
follow-up em vez de parar a sequência.
|
|
319
|
+
- Para mudar o comportamento, mude o TEXTO das instruções de cada follow-up (`follow_up_steps[].prompt`): é o que mais
|
|
320
|
+
pesa na decisão. Não existe chave para desligar a pergunta.
|
|
321
|
+
- Sem chave principal da OpenAI na conta, ou se o modelo de decisões falhar, o follow-up segue como antes (a IA decide).
|
|
304
322
|
|
|
305
323
|
## Condições para NÃO fazer follow-up + horário de silêncio (2026-07)
|
|
306
324
|
|
|
@@ -315,6 +333,8 @@ pula o follow-up). Tipos:
|
|
|
315
333
|
] } }
|
|
316
334
|
```
|
|
317
335
|
|
|
336
|
+
- `label`, `contact_attr`, `conversation_attr`: o follow-up daquele passo não sai e o seguinte é agendado no tempo dele
|
|
337
|
+
(desde 2026-11-05; antes a sequência parava).
|
|
318
338
|
- `label`: pula se a conversa TEM (`present`) / NÃO tem (`absent`) alguma das etiquetas.
|
|
319
339
|
- `contact_attr` / `conversation_attr`: pula quando o atributo do contato/conversa bate o operador
|
|
320
340
|
(`equal`, `not_equal`, `contains`, `present`, `blank`, `gt`, `lt`) com `value`.
|
|
@@ -401,6 +421,55 @@ As instruções aceitam variáveis Liquid `{{ }}` que chegam JÁ PREENCHIDAS com
|
|
|
401
421
|
- As ferramentas "Buscar FAQ" e "Buscar Artigos" são auto-gerenciadas: ligam sozinhas conforme o conteúdo e somem da tela de ferramentas (não são desligáveis por disabled_tools). Diagnóstico "IA não usa a base": confira se há FAQ APROVADA/documento, ou artigo PUBLICADO na Central de Ajuda.
|
|
402
422
|
- A IA pode oferecer ao cliente o link do artigo (precisa de Portal com slug e domínio/FRONTEND_URL).
|
|
403
423
|
|
|
424
|
+
## Documento que o cliente manda: PDF, Word, planilha (2026-11-06)
|
|
425
|
+
|
|
426
|
+
Como a IA de atendimento lê o arquivo que o CLIENTE manda na conversa. Nada a ligar: vale para toda conta com
|
|
427
|
+
Agente de IA, sem chave liga/desliga. Até 05/11/2026 o texto era cortado em 30 mil caracteres (a IA via 4 de 13
|
|
428
|
+
páginas de um extrato) e voltava inteiro em toda resposta; resposta anterior sua com essa explicação ficou velha.
|
|
429
|
+
|
|
430
|
+
- **Leitura:** página a página, até **50 páginas** e **8 mil caracteres por página** (arquivo até 25 MB; planilha até
|
|
431
|
+
5 mil linhas por aba). O texto fica guardado no próprio anexo e NÃO vem na API.
|
|
432
|
+
- **Na resposta em que o documento chega**, a IA recebe o texto inteiro (até 40 mil caracteres somando os documentos
|
|
433
|
+
daquela vez). Documento pequeno (até 6 mil caracteres) segue inteiro no histórico.
|
|
434
|
+
- **Nas respostas seguintes**, o histórico mostra um cartão com o código do documento (`D-123`), as páginas lidas e
|
|
435
|
+
um índice. Para responder, a IA consulta a ferramenta interna `read_document` ("Ler Documento Recebido"): páginas
|
|
436
|
+
(`"5-9"`) ou palavra/número exato (`"RMC"`, `"1.234,56"`); até 12 mil caracteres por consulta e 40 mil por
|
|
437
|
+
resposta. Só documento DESTA conversa e que ainda está na memória da IA. `read_document` fica sempre ligada, não
|
|
438
|
+
aparece na tela de ferramentas e não se desliga por `disabled_tools` (como Buscar FAQ e Buscar Artigos).
|
|
439
|
+
- **PDF escaneado** (página sem texto): lido por IMAGEM por trás, até **20 páginas** por documento, com a chave OpenAI
|
|
440
|
+
da conta. Enquanto lê, a IA avisa o cliente que está lendo; quando termina, ela RESPONDE SOZINHA uma vez, se ainda
|
|
441
|
+
cuida da conversa, e essa resposta conta na cota de respostas da IA. PDF com texto e algumas páginas escaneadas:
|
|
442
|
+
responde na hora com as páginas de texto, e as escaneadas ficam disponíveis depois, sem resposta nova.
|
|
443
|
+
- **Mesmo arquivo de novo:** não lê de novo. Reenvio na mesma conversa aponta para a leitura anterior; o mesmo
|
|
444
|
+
arquivo em outra conversa da conta copia a leitura.
|
|
445
|
+
- **Teto por conversa:** 20 documentos novos por dia.
|
|
446
|
+
- **Pílulas para a equipe** (mensagem de atividade, `message_type` 2), uma por leitura:
|
|
447
|
+
- "A IA leu o documento X (N de M páginas)"
|
|
448
|
+
- "A IA leu o documento X (N de M páginas, acima do teto)" — passou de 50 páginas; o resto NÃO foi lido
|
|
449
|
+
- "A IA leu o documento X por imagem (escaneado, N de M páginas)"
|
|
450
|
+
- "A IA não conseguiu ler o documento X"
|
|
451
|
+
- "Documento X já lido antes nesta conversa"
|
|
452
|
+
- "Limite de documentos lidos nesta conversa hoje atingido"
|
|
453
|
+
- **Documento anterior ao recurso** (chegou antes de 07/11/2026 03:00 UTC): a IA ainda consulta, mas sem pílula, sem
|
|
454
|
+
texto de chegada e sem a resposta sozinha depois do escaneado.
|
|
455
|
+
|
|
456
|
+
Diagnóstico "a IA não achou o valor do documento": leia a pílula da conversa
|
|
457
|
+
(`lionchat_conversations_messages_list`). "acima do teto" = o valor pode estar depois da página 50; escaneado com
|
|
458
|
+
mais de 20 páginas idem; "não conseguiu ler" = arquivo protegido, corrompido ou sem chave OpenAI para o escaneado.
|
|
459
|
+
Para conferir o conteúdo você mesmo, baixe o arquivo pelo `data_url` do anexo: a API não traz o texto lido.
|
|
460
|
+
|
|
461
|
+
## Transcrição de áudio (2026-11-04)
|
|
462
|
+
|
|
463
|
+
- **Onde:** Configurações > Conta > "Transcrever Mensagens de Áudio". Desde 04/11/2026 aparece para TODA conta, com
|
|
464
|
+
ou sem Agente de IA (antes só com a IA). Nasce DESLIGADA e usa a chave do próprio cliente, OpenAI ou Groq,
|
|
465
|
+
cadastrada em Integrações: o custo é do cliente, não há chave da plataforma.
|
|
466
|
+
- **Pela API:** `lionchat_account_settings_update` com `audio_transcriptions: true` e
|
|
467
|
+
`audio_transcription_provider: "openai"` ou `"groq"` (administrador). Só funciona se a conta tiver a chave daquele
|
|
468
|
+
provedor; sem escolher provedor, usa a OpenAI se houver chave e depois a Groq.
|
|
469
|
+
- **Conversa com Agente de IA:** o áudio do cliente é transcrito para a IA responder mesmo com a opção desligada, desde
|
|
470
|
+
que a conta tenha a função Agente de IA.
|
|
471
|
+
- O texto sai em `transcribed_text` do anexo de áudio (`file_type: audio`).
|
|
472
|
+
|
|
404
473
|
## Anti-loop de ferramentas (custo) (2026-06)
|
|
405
474
|
|
|
406
475
|
- Ferramentas (webhooks/custom tools e flows) que falham agora param sozinhas: a IA recebe aviso escalonado (1ª falha = no máximo 1 retry; 2ª+ da mesma tool = pare e siga sem ela ou transfira). Tetos por turno: 5 chamadas por ferramenta e 25 no total; ao estourar, a IA dá halt e cria nota mencionando um humano (sem desligar a IA).
|
|
@@ -711,7 +711,7 @@ Todos os formatos abaixo foram conferidos linha a linha em `app/services/action_
|
|
|
711
711
|
| `assign_team` | `[3]`. `["nil"]` desatribui |
|
|
712
712
|
| `assign_captain_assistant` | `[17]` ou `[{"assistant_id": 17, "proactive": true}]` — `proactive` false = a IA assume mas nao fala na hora |
|
|
713
713
|
| `deactivate_captain` | `[]` — desliga o AI Agente da conversa (novo 10/09/2026; a macro também tem) |
|
|
714
|
-
| `send_email_to_team` | `[{"team_ids": [1], "message": "texto"}]` |
|
|
714
|
+
| `send_email_to_team` | `[{"team_ids": [1], "message": "texto"}]` — so times desta conta; time de outra conta na lista e ignorado |
|
|
715
715
|
| `send_webhook_event` | `["https://..."]` |
|
|
716
716
|
| `send_attachment` | `[blob_ids]` — so funciona se a regra ja tiver arquivo anexado; nao da pra montar so por API |
|
|
717
717
|
| `change_status` | `["resolved"]`, `["open"]`, `["pending"]` ou `["snoozed"]` |
|
|
@@ -115,8 +115,9 @@ Attachment
|
|
|
115
115
|
├── file_type (string ou int)
|
|
116
116
|
├── extension
|
|
117
117
|
├── file (ActiveStorage attached)
|
|
118
|
-
├── transcribed_text (string, áudio
|
|
119
|
-
├── meta (jsonb, ex: image_description)
|
|
118
|
+
├── transcribed_text (string, SÓ áudio na resposta da API)
|
|
119
|
+
├── meta (jsonb, ex: image_description; a leitura de documento (PDF, Word, planilha) mora aqui por página e NÃO
|
|
120
|
+
│ vem na API — o que a IA leu aparece na pílula de atividade da conversa)
|
|
120
121
|
├── width / height (pixels)
|
|
121
122
|
└── file_size (bytes)
|
|
122
123
|
```
|
|
@@ -330,7 +331,7 @@ KanbanItem
|
|
|
330
331
|
├── conversation_display_id (FK opcional → Conversation.display_id)
|
|
331
332
|
├── item_details (jsonb — os campos da aba Campos ficam em item_details.custom_attributes, LISTA de
|
|
332
333
|
│ {name, type, value}; nunca objeto {chave: valor})
|
|
333
|
-
├── custom_attributes (
|
|
334
|
+
├── custom_attributes (nas respostas e no webhook: {nome do campo: valor}, lido da lista acima; ao gravar, objeto {nome do campo: valor} que muda so os campos enviados)
|
|
334
335
|
├── assigned_agents (jsonb array — para gravar: lista de NUMEROS [5, 12])
|
|
335
336
|
├── linked_conversations (jsonb array de { display_id })
|
|
336
337
|
├── checklist (jsonb array de itens — NAO e tabela separada; ver abaixo)
|
|
@@ -402,8 +403,10 @@ Captain::Assistant
|
|
|
402
403
|
│ activation_label (etiqueta que ativa o agente — unica por conta),
|
|
403
404
|
│ min_response_time / max_response_time (delay humanizado, 1-60s),
|
|
404
405
|
│ disabled_tools (array de IDs de tools desativadas pro assistente),
|
|
405
|
-
│ (faq_lookup/search_articles NÃO são desligáveis — auto-gerenciadas
|
|
406
|
-
│
|
|
406
|
+
│ (faq_lookup/search_articles/read_document NÃO são desligáveis — auto-gerenciadas e escondidas do
|
|
407
|
+
│ endpoint captain_assistants_tools: faq_lookup/search_articles carregam só quando há FAQ/documento ou
|
|
408
|
+
│ artigo publicado; read_document ("Ler Documento Recebido", 06/11/2026) fica sempre ligada e lê páginas
|
|
409
|
+
│ ou busca uma palavra do documento que o cliente mandou NA conversa)
|
|
407
410
|
│ offer_ids / media_asset_ids / booking_event_type_ids (arrays de IDs vinculados),
|
|
408
411
|
│ products (array legado de produtos)
|
|
409
412
|
├── guardrails (jsonb array de strings — limites duros injetados no prompt, ex: anti-pitch)
|
|
@@ -489,6 +492,7 @@ e `send_conversion` (`[{destinations, event_names, value}]` — só administrado
|
|
|
489
492
|
`marketing_integrations_manage` consegue SALVAR a macro; executar segue livre; teto de 50 conversões por
|
|
490
493
|
execução). Atributo protegido em `update_*_attribute` é recusado na execução (só no log). Executar
|
|
491
494
|
(`lionchat_macros_execute`): até 100 conversas por chamada, a mesma conversa em 5 s é pulada em silêncio,
|
|
495
|
+
conversa que a pessoa não consegue abrir também é pulada em silêncio, com resposta 200,
|
|
492
496
|
30 execuções por minuto por usuário (429). A mensagem de `send_canned_response` sai assinada por quem executou.
|
|
493
497
|
Cada execução deixa na conversa a pílula "Macro: X executada por Fulano" (uma por conversa, 26/09) — vale
|
|
494
498
|
também pelo MCP, então quem executa aparece no histórico da conversa.
|
|
@@ -540,7 +544,8 @@ AccountTask (agenda interna)
|
|
|
540
544
|
│ que este compromisso é; índice único parcial por tratamento+número entre os NÃO cancelados (15/09)
|
|
541
545
|
└── assignees (has_many → User, via account_task_assignments). Compromisso NASCIDO DE BOOKING
|
|
542
546
|
(`booking_id` presente) tem responsável FIXO = o agente configurado no tipo de evento:
|
|
543
|
-
`assignee_ids` enviado no update é IGNORADO (200, o resto da edição vale — 17/09)
|
|
547
|
+
`assignee_ids` enviado no update é IGNORADO (200, o resto da edição vale — 17/09), exceto
|
|
548
|
+
número de pessoa de outra conta, que é recusado com 422 (04/11)
|
|
544
549
|
|
|
545
550
|
AgendaTreatment (tratamento em sessões — tools `agenda_treatments_*`; tabela agenda_treatments; 15/09)
|
|
546
551
|
├── id (PK) / account_id (FK) / contact_id (FK) / booking_event_type_id (FK, nullify)
|
|
@@ -252,11 +252,16 @@ pergunta com números diferentes, e o usuário conclui que o relatório está er
|
|
|
252
252
|
|
|
253
253
|
## 5. Busca com filtro estruturado
|
|
254
254
|
|
|
255
|
-
`search_search` (tudo), `
|
|
255
|
+
`search_search` (tudo), `contacts_search`, `kanban_items_search` aceitam
|
|
256
256
|
`conversation_filters`/`contact_filters` (JSON-string no MESMO shape do payload dos /filter, mesmo
|
|
257
257
|
motor, cap 10 condições) e `kanban_filters` (JSON-string do subset flat da seção 3). Paginação por
|
|
258
258
|
categoria: 15/página (kanban: primeiros 15, sem paginação).
|
|
259
259
|
|
|
260
|
+
`conversations_search` (busca no texto das mensagens) NÃO lê nenhum desses três filtros, e nunca leu: quem
|
|
261
|
+
mandou filtro ali recebeu a lista sem filtro achando que estava filtrada. Cada conversa da resposta já traz a
|
|
262
|
+
caixa (`inbox`) e o contato; situação, responsável e time NÃO vêm (confira com `conversations_show`). Para
|
|
263
|
+
recortar, ela aceita `inbox_id` e `team_id` (lista e números) e `assignee_type` (só a lista); a situação é ignorada.
|
|
264
|
+
|
|
260
265
|
## 6. Respostas: enxutas por padrão + paginação
|
|
261
266
|
|
|
262
267
|
- **Slim (2026-07-24, default LIGADO):** listas voltam SEM campos pesados/decorativos
|
|
@@ -81,7 +81,7 @@ Todo node tem essa estrutura base:
|
|
|
81
81
|
- **Só dispara quem CRUZA o prazo com o fluxo ligado.** Card que já passou do prazo quando o fluxo foi ligado NÃO dispara (nem depois); com prazo de 5 dias, o card que está com 4 dispara ao chegar a 5. Mudar o prazo, o funil ou a etapa do gatilho vale como gatilho NOVO: só cruzamentos depois da mudança disparam. Relógio corrido (noite e fim de semana contam); a conferência roda de 5 em 5 minutos, então o fluxo pode começar até ~5 min depois do prazo.
|
|
82
82
|
- **Onde roda:** inicia SÓ o fluxo dono do gatilho, em cada conversa do card (card sem conversa não dispara). O card que disparou é o "card do gatilho": `card_source: 'trigger'` funciona e as condições "Card na etapa" / "Card adiado" olham para ele. Variáveis `{{trigger.kanban.title}}`, `.funnel_name`, `.stage_name`, `.stage` valem como nos outros gatilhos de card; `{{trigger.type}}` = a própria chave (`card_open_in_stage` / `card_open_in_funnel`).
|
|
83
83
|
- Dois fluxos com o mesmo gatilho na mesma caixa são permitidos (não há checagem de conflito): os dois disparam.
|
|
84
|
-
- Exemplo — avisar um grupo de WhatsApp quando o lead passa mais de 1 hora na etapa do vendedor: Início `card_open_in_stage` (1 hora, funil + etapa) → (opcional) condição "Card na etapa" → bloco `update_group` com a operação de enviar mensagem ao grupo, texto usando `{{agent.name}}` e o link da conversa `https://<host>/app/accounts/<id_da_conta>/conversations/{{conversation.id}}
|
|
84
|
+
- Exemplo — avisar um grupo de WhatsApp quando o lead passa mais de 1 hora na etapa do vendedor: Início `card_open_in_stage` (1 hora, funil + etapa) → (opcional) condição "Card na etapa" → bloco `update_group` com a operação de enviar mensagem ao grupo, texto usando `{{agent.name}}` e o link da conversa `https://<host>/app/accounts/<id_da_conta>/conversations/{{conversation.id}}` ou o do card `https://<host>/app/accounts/<id_da_conta>/kanban?funnel={{trigger.funnel_id}}&card_id={{trigger.kanban_item_id}}` (como achar o `<host>`: `lionchat://docs/kanban-deep-dive`, seção "Link do card").
|
|
85
85
|
- `page_track` (LionTrack, só flow individual): `{ "track_type": "visited_page"|"event_fired", "urls": [...], "operator": "contains"|"exact"|"starts_with", "event_names": [...], "event_operator": "equals"|"contains", "cooldown_hours": 24 }` — `cooldown_hours` (padrão 24, mínimo 1) não re-dispara pro mesmo contato dentro da janela.
|
|
86
86
|
- `conversation_attribute_changed` / `card_attribute_changed` (novo 2026-07-08): disparam na VIRADA de um atributo (da CONVERSA ou do CARD do kanban) pro valor que casa — RE-ENTRAM toda vez que o atributo muda pro valor alvo. Config: `{ "logic": "and"|"or", "rules": [ { "attr_key": "...", "operator": "...", "value": "..." } ] }` (uma rule pode usar `values: [...]` no lugar de `value` pra multi-valor). O `attrSource` é IMPLÍCITO pela chave do gatilho (conversa vs card) — NÃO informe. Operadores (contexto REATIVO — desde 09/07 `is_empty`/`is_not_empty` NÃO valem aqui, pois "está vazio AGORA" dispararia a cada evento; use-os só no nó Condição): `equal`/`not_equal`/`contains`/`not_contains`/`starts_with`/`ends_with`/`greater_than`/`less_than`/`number_range`. Só `card_attribute_changed` aceita `funnel_id`/`card_source` opcionais dentro da rule (pra achar o card). Rule sem `attr_key` é ignorada.
|
|
87
87
|
- `contact_attribute_changed` (novo 2026-07-22 — "Atributo do contato muda"): dispara quando um atributo personalizado do **CONTATO** muda e a condição casa — mesmo com o contato fora de flow. Item: `{ "key": "contact_attribute_changed", "config": { "logic": "and"|"or", "rules": [ { "attrSource": "contact", "attr_key": "...", "operator": "...", "value": "..." } ] } }` (1 a 10 rules; `values: [...]` pra multi-valor). **DIFERENTE dos irmãos de 08/07: aqui o `attrSource` VAI na rule e é SEMPRE `"contact"`.** Operadores iguais aos do nó Condição. **VERSÃO SEGURA por decisão de produto:** dispara SÓ na conversa mais recente que JÁ EXISTE numa caixa do flow (reabre se resolvida); contato sem conversa NÃO dispara e NUNCA cria conversa. Dedup de 30s por contato + anti-loop por profundidade de cadeia (flow que muda atributo que dispara flow…). Só flows de conversa.
|
|
@@ -693,7 +693,9 @@ o botão "Usar variável" ao lado do campo alterna lista fixa ↔ variável.
|
|
|
693
693
|
|
|
694
694
|
**`update_attribute` — campos EXATOS:** `attr_source` (`'contact'`, `'conversation'` ou `'card'`), `attr_key` (nome do atributo), `attr_value` (valor). NÃO existem `entity`/`key`/`value` — esses são ignorados e não salvam nada.
|
|
695
695
|
|
|
696
|
-
**
|
|
696
|
+
**Conferência por TIPO (2026-11-04):** `attr_value` de atributo personalizado, em contato, conversa e card, só é gravado se servir para o tipo do campo: número, moeda e porcentagem usam ponto no milhar e vírgula no decimal ("1.234,56" → 1234.56), caixa de seleção aceita sim/não/true/false, lista não diferencia maiúscula e grava a opção cadastrada, data aceita DD/MM/AAAA ou ISO, hora aceita "14:30" ou "14h30". Valor errado NÃO grava: o campo fica como estava, o passo fica vermelho com o motivo no histórico e o fluxo segue. Variável vazia: passo âmbar, nada gravado.
|
|
697
|
+
|
|
698
|
+
**Card (2026-11-04):** `attr_source: 'card'` grava em `item_details.custom_attributes`, a lista que a seção "Atributos do Card" mostra. `attr_key` aceita o nome do campo ou o apelido (`valor_total`). Campo que não existe em `kanban_config.global_custom_attributes` é CRIADO como Texto, para a conta inteira, com nota no histórico: confira o nome antes, porque chave errada cria um campo novo. Conversa sem card: passo âmbar, nada gravado. Conta (Somar, Subtrair) não é oferecida em campo do card.
|
|
697
699
|
|
|
698
700
|
**Empresa e Cargo (2026-09-25):** `contact.company_name` e `contact.job_title` valem em CONDIÇÃO (`attr_source: 'contact'`, `attr_key` igual ao path), em filtro de regras e como variável (`{{contact.company_name}}`, `{{contact.job_title}}`). São SÓ LEITURA: a ação "Alterar atributo do contato" NÃO grava esses dois (o texto Empresa anda junto com a empresa vinculada — para ligar a empresa use `lionchat_contacts_update` com `company_id`).
|
|
699
701
|
|
|
@@ -92,7 +92,7 @@ Glossário completo de termos, status codes, enums e conceitos da plataforma. Us
|
|
|
92
92
|
| `image` | Foto / imagem (JPG, PNG, etc) |
|
|
93
93
|
| `audio` | Áudio (geralmente vem com `transcribed_text` preenchido) |
|
|
94
94
|
| `video` | Vídeo |
|
|
95
|
-
| `file` | PDF, DOCX, qualquer outro (
|
|
95
|
+
| `file` | PDF, DOCX, planilha, qualquer outro. O texto lido pela IA NÃO vem na API (não existe `extracted_text` na resposta) |
|
|
96
96
|
| `location` | Coordenadas GPS |
|
|
97
97
|
| `contact` | vCard |
|
|
98
98
|
| `share` | Link compartilhado |
|
|
@@ -101,7 +101,10 @@ Glossário completo de termos, status codes, enums e conceitos da plataforma. Us
|
|
|
101
101
|
|
|
102
102
|
### Campos importantes
|
|
103
103
|
- `data_url`: URL pra baixar o arquivo (válida por tempo limitado)
|
|
104
|
-
- `transcribed_text`: transcrição
|
|
104
|
+
- `transcribed_text`: transcrição do áudio (só `audio` traz este campo na API)
|
|
105
|
+
- Documento lido pela IA (PDF, Word, planilha, desde 06/11/2026): o texto fica guardado no próprio anexo e NÃO
|
|
106
|
+
vem na API. O que ela leu aparece na pílula de atividade da conversa (ver `lionchat://docs/best-practices`,
|
|
107
|
+
seção "Documento que o cliente manda")
|
|
105
108
|
- `meta.image_description`: descrição gerada pela IA (cache, se disponível)
|
|
106
109
|
- `file_size`: bytes
|
|
107
110
|
- `width`/`height`: pixels (imagens/vídeos)
|
|
@@ -423,7 +426,7 @@ mandar). Detalhes em `lionchat://docs/best-practices`.
|
|
|
423
426
|
|---|---|---|
|
|
424
427
|
| Motivo de Ganho/Perda do card | `kanban_config.win_reasons` / `loss_reasons` | ❌ NÃO |
|
|
425
428
|
| Atributo em TODO card | `kanban_config.global_custom_attributes` | só se não couber acima |
|
|
426
|
-
| Valor de um campo em UM card | `
|
|
429
|
+
| Valor de um campo em UM card | Grave com `kanban_item.custom_attributes` — objeto `{nome do campo: valor}`, só os campos enviados mudam; o valor vai para a lista `item_details.custom_attributes` (`[{name, type, value}]`), a que a tela Atributos do Card mostra | objeto dentro de `item_details.custom_attributes` é ignorado: não grava |
|
|
427
430
|
| CPF, RG, CNPJ, endereço, data nasc., gênero do cliente | mecanismo NATIVO cadastral: `PATCH /contacts/{id}/cadastral` (`update_cadastral`) | ❌ NÃO (tem nativo) |
|
|
428
431
|
| Tag pro contato (residencial, empresarial) | `labels` | ✅ SIM via Label |
|
|
429
432
|
| Etapa do funil | `funnel.stages` | ❌ NÃO |
|
|
@@ -672,3 +675,7 @@ Ramal sem cadastro não gera registro — se o cliente diz que "liguei e não ap
|
|
|
672
675
|
### Erros do envio (`signature_envelopes_create`): `variaveis_sem_valor` (+ `missing[]`), `escolher_caixa` (+ `inboxes[]`),
|
|
673
676
|
`entrega_falhou`, `sem_caixa_whatsapp`, `telefone_invalido`, `limite_do_mes`, `cpf_invalido`, `funcionalidade_desligada`,
|
|
674
677
|
`fila_cheia` (fila única de conversão do Word cheia — repetir em instantes), `conversor_indisponivel` (o serviço de conversão de Word não respondeu — repetir em instantes).
|
|
678
|
+
|
|
679
|
+
### Juiz do Supervisor (novo 2026-11-04)
|
|
680
|
+
|
|
681
|
+
Não tem relação com "Supervisor de caixa" nem "Supervisor de time", que são papéis de pessoa. **Supervisor de IA** é a tela que compara as IAs, e **juiz** é a análise que um administrador inicia por botão ali: outra IA lê as conversas e responde sobre cada uma (nota, disse e não fez, não soube responder, o que travou, objeções, quanto seguiu o cenário). Ele só lê e não muda a conversa. Pelo conector dá para consultar o resultado (`lionchat_captain_judge_runs_*`), mas não iniciar. Detalhes em `reports-guide`.
|
|
@@ -164,7 +164,7 @@ dos cards já marcados); lista de textos soltos, motivo sem `id`/`title` ou `id`
|
|
|
164
164
|
| Atributo que aparece em TODO card | `kanban_config.global_custom_attributes` | ❌ custom_attribute de conversation |
|
|
165
165
|
| Atributo só de um contato (CPF, endereço) | `custom_attribute_definitions` model=contact_attribute | ❌ kanban_config |
|
|
166
166
|
| Atributo só de uma conversa (motivo, tag interna) | `custom_attribute_definitions` model=conversation_attribute | ❌ kanban_config |
|
|
167
|
-
| Valor de um campo num card (aparece
|
|
167
|
+
| Valor de um campo num card (aparece em Atributos do Card) | `kanban_item.custom_attributes` — objeto `{nome do campo: valor}`, só os campos enviados mudam | ❌ objeto dentro de `item_details.custom_attributes` (é ignorado, não grava) |
|
|
168
168
|
|
|
169
169
|
### KanbanItem (Card)
|
|
170
170
|
Um card individual dentro de uma etapa.
|
|
@@ -180,7 +180,7 @@ Um card individual dentro de uma etapa.
|
|
|
180
180
|
| `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. |
|
|
181
181
|
| `linked_conversations` | jsonb array `[{display_id: 123}, {display_id: 456}]` — múltiplas conversas |
|
|
182
182
|
| `item_details` | jsonb (ver abaixo) |
|
|
183
|
-
| `custom_attributes` |
|
|
183
|
+
| `custom_attributes` | Ao LER (conversa, contato, webhook): `{nome do campo: valor}`, tirado da lista `item_details.custom_attributes`. Ao GRAVAR: objeto `{nome do campo: valor}`, só os campos enviados mudam, e campo que não existe é criado como Texto (ver abaixo). Um lugar só desde 04/11/2026: a lista, que a tela Atributos do Card mostra. |
|
|
184
184
|
| `assigned_agents` | jsonb array de agentes responsáveis |
|
|
185
185
|
| `activities` | jsonb array — log de atividades |
|
|
186
186
|
| `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 |
|
|
@@ -233,16 +233,13 @@ Um card individual dentro de uma etapa.
|
|
|
233
233
|
**`value`** é onde fica o valor monetário do negócio (usado em pipelines). Sempre NÚMERO — texto quebra a
|
|
234
234
|
soma das colunas.
|
|
235
235
|
|
|
236
|
-
|
|
237
|
-
Cada item é `{name, type, value}` e só aparece na aba Campos se `name` **e** `type` baterem exatamente com
|
|
238
|
-
um campo de `kanban_config.global_custom_attributes` (leia com `lionchat_kanban_config_list`).
|
|
236
|
+
**Os campos do card moram em UM lugar: a lista `item_details.custom_attributes`, a que a tela Atributos do Card mostra** (04/11/2026). Cada item é `{name, type, value}`.
|
|
239
237
|
|
|
240
|
-
Como gravar pelo `lionchat_kanban_items_update`
|
|
241
|
-
- O `
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
-
|
|
245
|
-
servidor só aceita itens `{name, type, value}` e o objeto vira vazio.
|
|
238
|
+
Como gravar pelo `lionchat_kanban_items_update` ou `_create`:
|
|
239
|
+
- **O jeito simples: `kanban_item.custom_attributes`, objeto `{nome do campo: valor}`.** Só os campos enviados mudam; os outros ficam. Campo que não existe é criado como Texto, para a conta inteira (confira o nome com `lionchat_kanban_config_list` antes: erro de digitação vira campo novo). `null` ou `""` apaga aquele campo.
|
|
240
|
+
- **`kanban_item.item_details.custom_attributes`, LISTA `[{name, type, value}]`, substitui a lista toda**: o `item_details` é MESCLADO só no 1º nível, e cada chave enviada troca a chave inteira no card. Leia o card antes e reenvie todos os campos. Nome novo com valor vira campo Texto. `[]` limpa a lista.
|
|
241
|
+
- **Objeto dentro de `item_details.custom_attributes` é IGNORADO:** não grava, não apaga, não cria campo, e o resto do pedido é salvo. É o que o card guarda quando nasce de "Criar card" (cópia dos dados da conversa), e devolver o card lido não pode criar campo nenhum.
|
|
242
|
+
- Texto ou lista em `kanban_item.custom_attributes` e, em `item_details.custom_attributes`, texto ou número no lugar da lista, item que não seja objeto, objeto no `value` e valor sem `name` em texto recusam o pedido inteiro com 422, e a mensagem ensina o formato.
|
|
246
243
|
- Lista fechada de chaves do `item_details` (outras são descartadas em silêncio): title, description, status,
|
|
247
244
|
reason, win_reason, loss_reason, attributed_to, co_attributed_to (13/10/2026, ver "Co-participante da venda"),
|
|
248
245
|
duplicated_from_id, priority, value, currency, custom_attributes, offers, closed_offers, closed_offer, deadline_at,
|
|
@@ -286,6 +283,58 @@ existiam).
|
|
|
286
283
|
|
|
287
284
|
**NUNCA gravar inteiros direto** — sempre objetos com `{display_id: ...}`. Inteiros diretos causam TypeError no `as_json`.
|
|
288
285
|
|
|
286
|
+
## Link do card, da aba e da conversa (03/11/2026)
|
|
287
|
+
|
|
288
|
+
Abrir um card no Kanban muda o endereço da página, e quem abre esse endereço vê a mesma coisa: o quadro daquele funil, o card aberto, a aba escolhida e, se houver, a conversa por cima. **Não existe ferramenta para isso e nem precisa: você monta o endereço com o que já tem e entrega na resposta.** Quando alguém pedir "o link desse card" ou "me manda onde eu vejo isso", é daqui que sai.
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
<painel>/app/accounts/<conta>/kanban?funnel=<funil>&card_id=<card>&tab=<aba>&conversation_id=<conversa>
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
| Parte | De onde vem | Cuidado |
|
|
295
|
+
|---|---|---|
|
|
296
|
+
| `<painel>` | Linha "Endereco do painel" de `lionchat_current_account` (conector remoto) ou de `lionchat_ping` (conector local) | Cada instalação tem o seu. **Nunca chute nem copie de um exemplo.** Se a ferramenta não informar, pergunte à pessoa |
|
|
297
|
+
| `<conta>` | A conta ativa, nas mesmas duas ferramentas | |
|
|
298
|
+
| `funnel` | `funnel_id` do card | Mande sempre: é o quadro que fica atrás do card |
|
|
299
|
+
| `card_id` | `id` do card | O nome é esse: a tela não lê `card`, `item` nem `kanban_item_id` |
|
|
300
|
+
| `tab` | Tabela abaixo | Opcional. Sem ela, abre em Notas |
|
|
301
|
+
| `conversation_id` | `conversation_display_id` do card, ou um `display_id` de `linked_conversations` | É o número que aparece na tela, nunca o id interno. Abre a conversa por cima |
|
|
302
|
+
|
|
303
|
+
Só entra a parte que interessa:
|
|
304
|
+
|
|
305
|
+
- Só o card: `<painel>/app/accounts/56/kanban?funnel=37&card_id=123`
|
|
306
|
+
- Card em uma aba: `<painel>/app/accounts/56/kanban?funnel=37&card_id=123&tab=checklist`
|
|
307
|
+
- Card com a conversa por cima: `<painel>/app/accounts/56/kanban?funnel=37&card_id=123&conversation_id=456`
|
|
308
|
+
- Só a conversa, com o quadro atrás: `<painel>/app/accounts/56/kanban?funnel=37&conversation_id=456`
|
|
309
|
+
- Conversa na tela de Conversas: `<painel>/app/accounts/56/conversations/456`
|
|
310
|
+
|
|
311
|
+
| `tab` | Aba na tela | Para ler o mesmo conteúdo |
|
|
312
|
+
|---|---|---|
|
|
313
|
+
| (sem `tab`) | Notas | `lionchat_kanban_items_kanban_notes_list` |
|
|
314
|
+
| `checklist` | Checklist | `lionchat_kanban_items_kanban_checklist_list` |
|
|
315
|
+
| `attachments` | Anexos | `lionchat_kanban_v2_list_1` |
|
|
316
|
+
| `activities` | Atividades | Campo `activities` de `lionchat_kanban_items_show` |
|
|
317
|
+
| `tasks` | Tarefas | `lionchat_kanban_items_tasks_list` |
|
|
318
|
+
| `scheduled-messages` | Mensagens agendadas | `lionchat_kanban_items_scheduled_messages_list` |
|
|
319
|
+
|
|
320
|
+
Aba desconhecida cai em Notas. `scheduled-messages` só existe em card com conversa.
|
|
321
|
+
|
|
322
|
+
**O que avisar a quem vai receber:**
|
|
323
|
+
|
|
324
|
+
- O link não dá acesso a ninguém: só abre para quem está logado naquela conta e pode ver aquele card ou conversa. **Nunca mande ao cliente final.**
|
|
325
|
+
- Sem login, a pessoa cai no login e, depois de entrar, na tela inicial, não no card. É só abrir o link de novo.
|
|
326
|
+
- Card apagado ou fora do alcance da pessoa: aviso na tela e o quadro sem o card.
|
|
327
|
+
- Conversa apagada: aviso, e nada abre. Conversa que a pessoa não pode ver: tela dizendo que ela não tem acesso.
|
|
328
|
+
|
|
329
|
+
**Recebeu um link? Leia o endereço:**
|
|
330
|
+
|
|
331
|
+
1. `accounts/<conta>`: se não for a conta ativa, troque com `lionchat_switch_account` antes de consultar. No conector local a conta é fixa: avise a pessoa.
|
|
332
|
+
2. `card_id`: `lionchat_kanban_items_show`. A `tab` diz o que ela estava olhando.
|
|
333
|
+
3. `conversation_id`, ou `conversations/<número>`: `lionchat_conversations_show`, que recebe esse mesmo número.
|
|
334
|
+
4. `funnel` sozinho: `lionchat_funnels_show`.
|
|
335
|
+
|
|
336
|
+
**Em mensagem de fluxo** (avisar um grupo, por exemplo), em fluxo iniciado por card: `<painel>/app/accounts/<conta>/kanban?funnel={{trigger.funnel_id}}&card_id={{trigger.kanban_item_id}}`. O endereço e a conta vão escritos no texto, porque não há variável para eles. Em fluxo que não nasce de um card, as duas variáveis saem vazias e o link abre só o quadro. No fluxo `{{conversation.id}}` já é o número da tela, então `&conversation_id={{conversation.id}}` funciona.
|
|
337
|
+
|
|
289
338
|
## Posição (ordering)
|
|
290
339
|
|
|
291
340
|
Cada KanbanItem tem `position` (integer). Cards ordenados ASC dentro da etapa.
|
|
@@ -691,14 +740,12 @@ Cada card pode receber atributos custom de 3 origens diferentes. **A escolha do
|
|
|
691
740
|
- É o que a aba **Campos** do card mostra e edita (e o que o filtro do quadro, a busca e o fluxo leem)
|
|
692
741
|
- LISTA de `{name, type, value}`; `name` + `type` precisam bater com um campo do item 2 abaixo, senão o
|
|
693
742
|
valor fica gravado e **não aparece**
|
|
694
|
-
- Grava via `kanban_items_update
|
|
695
|
-
**substitui a inteira
|
|
696
|
-
|
|
697
|
-
- Um campo
|
|
743
|
+
- Grava via `kanban_items_update`: `kanban_item.custom_attributes` (`{nome do campo: valor}`) muda só os campos
|
|
744
|
+
enviados; `kanban_item.item_details.custom_attributes` (lista) **substitui a inteira**. Objeto dentro de
|
|
745
|
+
`item_details.custom_attributes` é ignorado: não grava
|
|
746
|
+
- Um campo só também pela ação `update_card_attribute` da automação/macro
|
|
698
747
|
|
|
699
|
-
> **
|
|
700
|
-
> nenhuma tela a mostra — nem a aba Campos, nem o filtro, nem a busca. Só a ação "Alterar atributo do card"
|
|
701
|
-
> do FlowBuilder e a leitura do fluxo a usam. Para o cliente ver o dado, use a lista acima.
|
|
748
|
+
> **Um lugar só:** desde 04/11/2026 `kanban_item.custom_attributes` grava nessa mesma lista, campo a campo. Antes guardava numa coluna que nenhuma tela mostrava.
|
|
702
749
|
|
|
703
750
|
### 2. `kanban_config.global_custom_attributes` (atributos globais do Kanban)
|
|
704
751
|
|
|
@@ -1006,8 +1053,10 @@ para outro funil, pôr/tirar etiqueta e marcar ganho/perdido. **Nada muda sem ap
|
|
|
1006
1053
|
- **Uma análise por vez por funil** (`funnel_busy`, 409) e no máximo duas rodando por conta (`account_busy`). Criar uma
|
|
1007
1054
|
análise nova **substitui a lista anterior** do mesmo funil que tiver etapa em comum (ela vira `superseded`).
|
|
1008
1055
|
- **A lista vale 24 horas** (`expires_at`); depois vira `expired` e é preciso analisar de novo.
|
|
1009
|
-
- **O que vem marcado** (`checked: true`): sugestões de força Alta de etapa, funil e
|
|
1010
|
-
|
|
1056
|
+
- **O que vem marcado** (`checked: true`): sugestões de força Alta de etapa, funil, perdido e etiqueta (etiqueta é Alta com
|
|
1057
|
+
chance de 90% ou mais para pôr, ou de 10% ou menos para tirar). Com 90% de certeza ou mais a ação vem marcada sempre, inclusive ganho, card
|
|
1058
|
+
adiado, card sem conversa e etapa com conversão de venda; abaixo disso, ganho, Média e essas exceções vêm desmarcados, com o motivo em
|
|
1059
|
+
`unchecked_reason`. "Aplicar todas" pode, portanto, pôr e tirar etiqueta, e etiqueta dispara automação, fluxo e webhook. Na dúvida, proponha aplicar só as marcadas.
|
|
1011
1060
|
- **Linha travada** (`locked`: `client_wrote` = o cliente escreveu depois da análise; `card_changed` = o card mudou):
|
|
1012
1061
|
não aplique. Chame `reanalyze` com o `item_id` e depois `items` de novo.
|
|
1013
1062
|
- **Linha que voltou** (`return_code`): `interrupted` (sistema reiniciou), `card_busy` e `apply_failed` podem ser
|
|
@@ -1002,3 +1002,8 @@ Em `agent_report` e `calls_report`, `scope_type: 'inbox'` + `scope_id` recorta *
|
|
|
1002
1002
|
caixa: membros da caixa contando SÓ o que fizeram nela (era o defeito dos relatórios por médico
|
|
1003
1003
|
saírem iguais). `'agent'`/`'team'` seguem sendo recorte de PESSOAS (trabalho na conta inteira);
|
|
1004
1004
|
`'inbox'` + `dimension: 'team'` é recusado. E `lead_origin` passou a respeitar `time_range`.
|
|
1005
|
+
|
|
1006
|
+
## Juiz do Supervisor
|
|
1007
|
+
|
|
1008
|
+
`lionchat_captain_judge_runs_results` traz, por IA, o que o juiz respondeu nas conversas já analisadas: nota, disse e não fez, não soube responder, o que travou, objeções e a média de quanto a IA seguiu cada cenário. `lionchat_captain_judge_runs_conversations` abre as conversas por trás de um número, e `lionchat_captain_judge_runs_current` mostra o andamento. São só leitura. A análise é iniciada pelo botão do Supervisor no painel, por um administrador: não há ferramenta para iniciar. Sempre traga os avisos de `warnings`, e não trate a resposta do juiz como fato: ela é uma avaliação e pode errar.
|
|
1009
|
+
|