@rodrigobeber/patoai-dtos 4.8.6 → 4.8.8

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.
@@ -6,4 +6,6 @@ export interface CreateScheduleDto {
6
6
  eventId: string;
7
7
  stageType: StageTypeEnum | null;
8
8
  idAccount?: number | null;
9
+ location?: string | null;
10
+ host?: string | null;
9
11
  }
@@ -21,8 +21,25 @@ export declare enum ReminderModeEnum {
21
21
  * O de/para (variável do template -> token) fica em WebChatReminderDto.templateVars.
22
22
  * - nome: nome do lead
23
23
  * - data_hora: data + hora do agendamento, formatada na timezone do crew
24
+ * - link: link/local da reunião (chat.schedule.ds_location)
25
+ * - anfitriao: quem conduz a reunião (chat.schedule.ds_host)
26
+ *
27
+ * ATENÇÃO: link e anfitriao dependem do provedor de agenda (ver TOKEN_CALENDAR_SUPPORT). Token sem
28
+ * valor NÃO vira string vazia — a Meta recusa parâmetro em branco; o envio falha com motivo legível.
24
29
  */
25
30
  export declare enum ReminderTokenEnum {
26
31
  NAME = "nome",
27
- DATETIME = "data_hora"
32
+ DATETIME = "data_hora",
33
+ LINK = "link",
34
+ HOST = "anfitriao"
28
35
  }
36
+ /**
37
+ * Quais tokens cada provedor de agenda consegue preencher. Usado pela tela de Lembretes para avisar
38
+ * antes de salvar uma regra que vai falhar no envio.
39
+ * - google: link real por evento (Meet) + host da conta sorteada
40
+ * - patocal: host = profissional; "link" é só o local fixo da agenda (não há link por evento)
41
+ * - calcom: link sim, host não (o mapper não lê o organizer)
42
+ * - north: só o local fixo; sem host
43
+ * - calendly: nunca cria evento pelo tool
44
+ */
45
+ export declare const TOKEN_CALENDAR_SUPPORT: Record<string, ReminderTokenEnum[]>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReminderTokenEnum = exports.ReminderModeEnum = exports.ReminderTriggerEnum = void 0;
3
+ exports.TOKEN_CALENDAR_SUPPORT = exports.ReminderTokenEnum = exports.ReminderModeEnum = exports.ReminderTriggerEnum = void 0;
4
4
  /**
5
5
  * Tipo de disparo de um lembrete de agendamento.
6
6
  * - offset: dispara N minutos ANTES do agendamento (relativo a dt_appointment), respeitando a janela comercial.
@@ -26,9 +26,32 @@ var ReminderModeEnum;
26
26
  * O de/para (variável do template -> token) fica em WebChatReminderDto.templateVars.
27
27
  * - nome: nome do lead
28
28
  * - data_hora: data + hora do agendamento, formatada na timezone do crew
29
+ * - link: link/local da reunião (chat.schedule.ds_location)
30
+ * - anfitriao: quem conduz a reunião (chat.schedule.ds_host)
31
+ *
32
+ * ATENÇÃO: link e anfitriao dependem do provedor de agenda (ver TOKEN_CALENDAR_SUPPORT). Token sem
33
+ * valor NÃO vira string vazia — a Meta recusa parâmetro em branco; o envio falha com motivo legível.
29
34
  */
30
35
  var ReminderTokenEnum;
31
36
  (function (ReminderTokenEnum) {
32
37
  ReminderTokenEnum["NAME"] = "nome";
33
38
  ReminderTokenEnum["DATETIME"] = "data_hora";
39
+ ReminderTokenEnum["LINK"] = "link";
40
+ ReminderTokenEnum["HOST"] = "anfitriao";
34
41
  })(ReminderTokenEnum || (exports.ReminderTokenEnum = ReminderTokenEnum = {}));
42
+ /**
43
+ * Quais tokens cada provedor de agenda consegue preencher. Usado pela tela de Lembretes para avisar
44
+ * antes de salvar uma regra que vai falhar no envio.
45
+ * - google: link real por evento (Meet) + host da conta sorteada
46
+ * - patocal: host = profissional; "link" é só o local fixo da agenda (não há link por evento)
47
+ * - calcom: link sim, host não (o mapper não lê o organizer)
48
+ * - north: só o local fixo; sem host
49
+ * - calendly: nunca cria evento pelo tool
50
+ */
51
+ exports.TOKEN_CALENDAR_SUPPORT = {
52
+ google: [ReminderTokenEnum.LINK, ReminderTokenEnum.HOST],
53
+ patocal: [ReminderTokenEnum.LINK, ReminderTokenEnum.HOST],
54
+ calcom: [ReminderTokenEnum.LINK],
55
+ north: [ReminderTokenEnum.LINK],
56
+ calendly: []
57
+ };
@@ -15,3 +15,4 @@ export * from './send-text.dto';
15
15
  export * from './send-buttons.dto';
16
16
  export * from './message-status.dto';
17
17
  export * from './telegram.dto';
18
+ export * from './whatsapp-error-code.enum';
package/dist/uh/index.js CHANGED
@@ -31,3 +31,4 @@ __exportStar(require("./send-text.dto"), exports);
31
31
  __exportStar(require("./send-buttons.dto"), exports);
32
32
  __exportStar(require("./message-status.dto"), exports);
33
33
  __exportStar(require("./telegram.dto"), exports);
34
+ __exportStar(require("./whatsapp-error-code.enum"), exports);
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Códigos de erro de entrega do WhatsApp Cloud API.
3
+ * Só entram aqui os pares código↔texto CONFIRMADOS em produção (automation.broadcast_to grava o
4
+ * código junto do texto). Erros vistos apenas em history.thread, sem código associado — ex.
5
+ * "Business Account locked", "Re-engagement message" — ficam de fora de propósito: chutar o número
6
+ * classificaria mensagem errada.
7
+ */
8
+ export declare enum WhatsAppErrorCodeEnum {
9
+ /** User's number is part of an experiment */
10
+ EXPERIMENT = 130472,
11
+ /** Message undeliverable */
12
+ UNDELIVERABLE = 131026,
13
+ /** Business eligibility payment issue */
14
+ PAYMENT_ISSUE = 131042,
15
+ /** Spam Rate limit hit */
16
+ SPAM_RATE_LIMIT = 131048,
17
+ /** This message was not delivered to maintain healthy ecosystem engagement. */
18
+ HEALTHY_ECOSYSTEM = 131049,
19
+ /** Recipient opted out of marketing messages */
20
+ MARKETING_OPT_OUT = 131050
21
+ }
22
+ /**
23
+ * Rejeições em que NÃO adianta reenviar para o mesmo número.
24
+ * Fonte única dos contadores rejectedPermanent/rejectedRecoverable (crew) e do badge/filtro de
25
+ * reenvio do painel. Incluir um código aqui MUDA os contadores históricos de todos os disparos —
26
+ * é decisão de produto, não ajuste de texto.
27
+ *
28
+ * `readonly number[]` e não `readonly WhatsAppErrorCodeEnum[]`: o consumidor chama com um `number`
29
+ * vindo do banco, e o tipo enum recusaria o `includes`.
30
+ */
31
+ export declare const PERMANENT_ERROR_CODES: readonly number[];
32
+ export declare function isPermanentWhatsAppError(code?: number | null): boolean;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PERMANENT_ERROR_CODES = exports.WhatsAppErrorCodeEnum = void 0;
4
+ exports.isPermanentWhatsAppError = isPermanentWhatsAppError;
5
+ /**
6
+ * Códigos de erro de entrega do WhatsApp Cloud API.
7
+ * Só entram aqui os pares código↔texto CONFIRMADOS em produção (automation.broadcast_to grava o
8
+ * código junto do texto). Erros vistos apenas em history.thread, sem código associado — ex.
9
+ * "Business Account locked", "Re-engagement message" — ficam de fora de propósito: chutar o número
10
+ * classificaria mensagem errada.
11
+ */
12
+ var WhatsAppErrorCodeEnum;
13
+ (function (WhatsAppErrorCodeEnum) {
14
+ /** User's number is part of an experiment */
15
+ WhatsAppErrorCodeEnum[WhatsAppErrorCodeEnum["EXPERIMENT"] = 130472] = "EXPERIMENT";
16
+ /** Message undeliverable */
17
+ WhatsAppErrorCodeEnum[WhatsAppErrorCodeEnum["UNDELIVERABLE"] = 131026] = "UNDELIVERABLE";
18
+ /** Business eligibility payment issue */
19
+ WhatsAppErrorCodeEnum[WhatsAppErrorCodeEnum["PAYMENT_ISSUE"] = 131042] = "PAYMENT_ISSUE";
20
+ /** Spam Rate limit hit */
21
+ WhatsAppErrorCodeEnum[WhatsAppErrorCodeEnum["SPAM_RATE_LIMIT"] = 131048] = "SPAM_RATE_LIMIT";
22
+ /** This message was not delivered to maintain healthy ecosystem engagement. */
23
+ WhatsAppErrorCodeEnum[WhatsAppErrorCodeEnum["HEALTHY_ECOSYSTEM"] = 131049] = "HEALTHY_ECOSYSTEM";
24
+ /** Recipient opted out of marketing messages */
25
+ WhatsAppErrorCodeEnum[WhatsAppErrorCodeEnum["MARKETING_OPT_OUT"] = 131050] = "MARKETING_OPT_OUT";
26
+ })(WhatsAppErrorCodeEnum || (exports.WhatsAppErrorCodeEnum = WhatsAppErrorCodeEnum = {}));
27
+ /**
28
+ * Rejeições em que NÃO adianta reenviar para o mesmo número.
29
+ * Fonte única dos contadores rejectedPermanent/rejectedRecoverable (crew) e do badge/filtro de
30
+ * reenvio do painel. Incluir um código aqui MUDA os contadores históricos de todos os disparos —
31
+ * é decisão de produto, não ajuste de texto.
32
+ *
33
+ * `readonly number[]` e não `readonly WhatsAppErrorCodeEnum[]`: o consumidor chama com um `number`
34
+ * vindo do banco, e o tipo enum recusaria o `includes`.
35
+ */
36
+ exports.PERMANENT_ERROR_CODES = [
37
+ WhatsAppErrorCodeEnum.UNDELIVERABLE,
38
+ WhatsAppErrorCodeEnum.EXPERIMENT
39
+ ];
40
+ function isPermanentWhatsAppError(code) {
41
+ return code != null && exports.PERMANENT_ERROR_CODES.includes(code);
42
+ }
@@ -1,4 +1,4 @@
1
- export type LeadHistoryType = 'stage' | 'mode' | 'unit' | 'followup' | 'template' | 'reminder' | 'spam_block';
1
+ export type LeadHistoryType = 'stage' | 'mode' | 'unit' | 'followup' | 'template' | 'reminder' | 'spam_block' | 'schedule_cancel';
2
2
  export interface WebChatLeadHistoryDto {
3
3
  idLead: string;
4
4
  at: Date;
@@ -14,4 +14,5 @@ export interface WebChatLeadHistoryDto {
14
14
  error?: boolean;
15
15
  errorMessage?: string | null;
16
16
  templateName?: string;
17
+ errorCode?: number | null;
17
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rodrigobeber/patoai-dtos",
3
- "version": "4.8.6",
3
+ "version": "4.8.8",
4
4
  "description": "Data Transfer Objects for PatoAI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",