n8n-nodes-underchat 0.1.12 → 0.1.13

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/README.md CHANGED
@@ -8,6 +8,7 @@ Community Node do n8n para integrar workflows à API pública da UnderChat.
8
8
  - Entrar em um atendimento aguardando com o executor selecionado
9
9
  - Buscar ID do contato pelo telefone
10
10
  - Criar contato
11
+ - Buscar/criar o contato e iniciar um atendimento em uma única operação
11
12
  - Enviar mensagem de texto por `chat_id`
12
13
  - Enviar mensagem por telefone, criando o contato quando necessário
13
14
  - Enviar template oficial em uma conversa
@@ -28,6 +29,64 @@ A operação **Enviar mensagem por telefone** executa automaticamente:
28
29
  buscar contato → criar se necessário → iniciar conversa → enviar mensagem
29
30
  ```
30
31
 
32
+ ## Buscar/criar contato e iniciar atendimento
33
+
34
+ A operação **Buscar/Criar Contato E Iniciar Atendimento** (`startChatByPhone`)
35
+ substitui a sequência manual de nodes usada para localizar ou cadastrar o contato,
36
+ obter seu ID e abrir a conversa. Ela recebe o telefone diretamente e executa:
37
+
38
+ ```text
39
+ buscar pelo telefone → criar se não existir → buscar o ID novamente
40
+ → validar canal e setor → reutilizar um chat ativo ou iniciar o atendimento
41
+ ```
42
+
43
+ Configure os seguintes campos:
44
+
45
+ - **Executor:** usuário ativo que realiza as chamadas à API.
46
+ - **DDI** e **Telefone:** usados na busca exata; informe o telefone sem o DDI.
47
+ - **Nome para novo contato:** usado somente quando o contato não existe.
48
+ - **Criar se não existir:** ativado por padrão. Quando desativado, a operação falha
49
+ sem criar dados caso o telefone não seja encontrado.
50
+ - **Canal:** obrigatório em toda nova abertura, oficial ou não.
51
+ - **Setor:** obrigatório em toda nova abertura, oficial ou não.
52
+ - **Template oficial** e **Variáveis:** usados quando as regras do canal oficial
53
+ exigirem um template aprovado.
54
+
55
+ O usuário não precisa consultar nem transportar o `contact_id`. A API de criação
56
+ de contato não devolve esse ID; por isso o node consulta novamente o telefone após
57
+ uma criação bem-sucedida e só então inicia o atendimento. Se já existir um chat
58
+ ativo no mesmo canal e setor, ele é reutilizado em vez de criar outro. Um chat no
59
+ mesmo canal, mas em outro setor, não é movido silenciosamente: use a operação de
60
+ transferência ou selecione o setor atual.
61
+
62
+ O cadastro do contato e a abertura do atendimento são chamadas separadas da API.
63
+ Se a criação funcionar e uma validação posterior ou a abertura falhar, o contato
64
+ permanece cadastrado. Uma nova execução o localizará e reutilizará, sem duplicá-lo.
65
+
66
+ ### Canal oficial e templates
67
+
68
+ Depois de resolver o contato, o node consulta o contexto oficial usando o canal e
69
+ o `contact_id`. Ele respeita a janela retornada pela UnderChat:
70
+
71
+ - texto livre só pode ser enviado quando `can_send_freeform` permitir;
72
+ - um template só pode ser usado quando estiver aprovado e disponível no contexto;
73
+ - quando `requires_template` estiver ativo, a abertura não continua sem um template
74
+ aprovado e todos os valores obrigatórios;
75
+ - `key`, componente, posição, nome do parâmetro e índice de botão vêm da API; o
76
+ usuário informa apenas os valores das variáveis, pelos campos ou em JSON;
77
+ - o template é enviado junto da abertura do chat, evitando depender de um
78
+ `chat_id` criado em um node anterior.
79
+
80
+ O campo **Template oficial** usa o seletor do n8n e também permite informar o nome
81
+ manualmente. A API pública lista os templates no contexto oficial, que exige um
82
+ `contact_id`. Quando o telefone é dinâmico ou o contato ainda não existe, o node
83
+ usa um contato já vinculado ao canal somente para carregar o catálogo no editor,
84
+ sem criar nem alterar dados. Na execução, ele consulta novamente o contexto com o
85
+ contato real e recusa qualquer template que não esteja aprovado ou cujas variáveis
86
+ não correspondam ao contrato retornado. Se o canal ainda não tiver nenhum contato,
87
+ o catálogo não poderá ser carregado antecipadamente; nesse caso ainda é possível
88
+ usar o modo manual/JSON, com a mesma validação rigorosa durante a execução.
89
+
31
90
  Na operação **Transferir para setor ou usuário**, ative **Entrar no atendimento
32
91
  antes de transferir** quando o chat ainda estiver aguardando atendimento. O node
33
92
  muda o status para `in_chat` e, após a confirmação da API, realiza a transferência.
@@ -1,6 +1,7 @@
1
1
  import type { IDataObject, IExecuteFunctions, IHttpRequestMethods, ILoadOptionsFunctions } from 'n8n-workflow';
2
2
  export declare function underChatApiRequest(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, qs?: IDataObject, executorId?: string): Promise<IDataObject>;
3
3
  export declare function responseData(response: IDataObject): unknown;
4
+ export declare function underChatApiMultipartRequest(this: IExecuteFunctions, endpoint: string, formData: IDataObject, executorId: string): Promise<IDataObject>;
4
5
  export declare function collectionRecords(value: unknown): IDataObject[];
5
6
  export declare function firstRecord(response: IDataObject): IDataObject | undefined;
6
7
  export declare function getOpaqueId(record: IDataObject | undefined, names: string[]): string | undefined;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.underChatApiRequest = underChatApiRequest;
4
4
  exports.responseData = responseData;
5
+ exports.underChatApiMultipartRequest = underChatApiMultipartRequest;
5
6
  exports.collectionRecords = collectionRecords;
6
7
  exports.firstRecord = firstRecord;
7
8
  exports.getOpaqueId = getOpaqueId;
@@ -32,6 +33,21 @@ function responseData(response) {
32
33
  var _a;
33
34
  return (_a = response.data) !== null && _a !== void 0 ? _a : response;
34
35
  }
36
+ async function underChatApiMultipartRequest(endpoint, formData, executorId) {
37
+ const credentials = await this.getCredentials('underChatApi');
38
+ const baseUrl = String(credentials.baseUrl).replace(/\/$/, '');
39
+ const options = {
40
+ method: 'POST',
41
+ url: `${baseUrl}${endpoint}`,
42
+ body: formData,
43
+ json: true,
44
+ headers: {
45
+ 'content-type': 'multipart/form-data',
46
+ 'x-underchat-user-id': executorId,
47
+ },
48
+ };
49
+ return (await this.helpers.httpRequestWithAuthentication.call(this, 'underChatApi', options));
50
+ }
35
51
  function collectionRecords(value) {
36
52
  if (Array.isArray(value)) {
37
53
  return value.filter((item) => Boolean(item) && typeof item === 'object' && !Array.isArray(item));
@@ -1 +1 @@
1
- {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/UnderChat/GenericFunctions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/UnderChat/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { IDataObject, IExecuteFunctions, ILoadOptionsFunctions, INodeListSearchResult, ResourceMapperFields } from 'n8n-workflow';
2
+ export declare function searchOfficialTemplates(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
3
+ export declare function getOfficialTemplateVariables(this: ILoadOptionsFunctions): Promise<ResourceMapperFields>;
4
+ export declare function executeStartChatByPhone(this: IExecuteFunctions, itemIndex: number, executorId: string): Promise<IDataObject>;
@@ -0,0 +1,445 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchOfficialTemplates = searchOfficialTemplates;
4
+ exports.getOfficialTemplateVariables = getOfficialTemplateVariables;
5
+ exports.executeStartChatByPhone = executeStartChatByPhone;
6
+ const n8n_workflow_1 = require("n8n-workflow");
7
+ const GenericFunctions_1 = require("./GenericFunctions");
8
+ const ACTIVE_CHAT_STATUSES = ['ura', 'queue', 'in_chat', 'ura_output', 'ura_schedule', 'ura_webhook'];
9
+ const TEMPLATE_SEPARATOR = '::';
10
+ function asRecord(value) {
11
+ return value && typeof value === 'object' && !Array.isArray(value)
12
+ ? value
13
+ : undefined;
14
+ }
15
+ function requiredString(value, label) {
16
+ if (typeof value !== 'string' || !value.trim())
17
+ throw new Error(`${label} não foi informado`);
18
+ return value.trim();
19
+ }
20
+ function optionalString(value) {
21
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
22
+ }
23
+ function resourceId(value) {
24
+ if (typeof value === 'string' || typeof value === 'number')
25
+ return String(value).trim();
26
+ if (value && typeof value === 'object' && 'value' in value) {
27
+ const selected = value.value;
28
+ if (typeof selected === 'string' || typeof selected === 'number')
29
+ return String(selected).trim();
30
+ }
31
+ return '';
32
+ }
33
+ function digits(value, label) {
34
+ const raw = requiredString(String(value !== null && value !== void 0 ? value : ''), label);
35
+ const normalized = raw.replace(/\D/g, '');
36
+ if (!normalized)
37
+ throw new Error(`${label} deve conter números`);
38
+ return normalized;
39
+ }
40
+ function recordId(record, keys) {
41
+ return (0, GenericFunctions_1.getOpaqueId)(record, keys);
42
+ }
43
+ function templateSelection(template) {
44
+ return `${template.name}${TEMPLATE_SEPARATOR}${template.language}`;
45
+ }
46
+ function parseTemplateSelection(value) {
47
+ const selected = resourceId(value);
48
+ if (!selected)
49
+ return undefined;
50
+ const separator = selected.lastIndexOf(TEMPLATE_SEPARATOR);
51
+ if (separator <= 0 || separator >= selected.length - TEMPLATE_SEPARATOR.length) {
52
+ throw new Error('Informe o template no formato nome::idioma');
53
+ }
54
+ return {
55
+ name: selected.slice(0, separator).trim(),
56
+ language: selected.slice(separator + TEMPLATE_SEPARATOR.length).trim(),
57
+ };
58
+ }
59
+ function variableFieldId(variable) {
60
+ var _a, _b;
61
+ return `variable_${encodeURIComponent(JSON.stringify([
62
+ variable.key,
63
+ variable.componentType,
64
+ variable.index,
65
+ (_a = variable.parameterName) !== null && _a !== void 0 ? _a : null,
66
+ (_b = variable.buttonIndex) !== null && _b !== void 0 ? _b : null,
67
+ ]))}`;
68
+ }
69
+ function parseVariable(value, templateLabel) {
70
+ var _a, _b;
71
+ const record = asRecord(value);
72
+ if (!record)
73
+ throw new Error(`Variável inválida no template ${templateLabel}`);
74
+ const componentType = requiredString(record.component_type, 'Tipo da variável').toUpperCase();
75
+ if (!['HEADER', 'BODY', 'FOOTER', 'BUTTON'].includes(componentType)) {
76
+ throw new Error(`Tipo de variável inválido no template ${templateLabel}`);
77
+ }
78
+ const index = Number(record.index);
79
+ if (!Number.isInteger(index) || index < 0) {
80
+ throw new Error(`Índice de variável inválido no template ${templateLabel}`);
81
+ }
82
+ const buttonIndex = record.button_index == null ? undefined : Number(record.button_index);
83
+ if (buttonIndex !== undefined && (!Number.isInteger(buttonIndex) || buttonIndex < 0)) {
84
+ throw new Error(`Índice de botão inválido no template ${templateLabel}`);
85
+ }
86
+ return {
87
+ key: requiredString(record.key, 'Chave da variável'),
88
+ componentType: componentType,
89
+ index,
90
+ parameterName: (_a = optionalString(record.parameter_name)) !== null && _a !== void 0 ? _a : null,
91
+ buttonIndex: buttonIndex !== null && buttonIndex !== void 0 ? buttonIndex : null,
92
+ sample: (_b = optionalString(record.sample)) !== null && _b !== void 0 ? _b : null,
93
+ };
94
+ }
95
+ function parseTemplate(value) {
96
+ const record = asRecord(value);
97
+ if (!record || record.status !== 'APPROVED')
98
+ return undefined;
99
+ const name = optionalString(record.name);
100
+ const language = optionalString(record.language);
101
+ if (!name || !language || !Array.isArray(record.variables))
102
+ return undefined;
103
+ const label = `${name} (${language})`;
104
+ return {
105
+ name,
106
+ language,
107
+ status: 'APPROVED',
108
+ variables: record.variables.map((variable) => parseVariable(variable, label)),
109
+ preview: asRecord(record.preview),
110
+ };
111
+ }
112
+ function parseOfficialContext(response) {
113
+ const data = asRecord((0, GenericFunctions_1.responseData)(response));
114
+ if (!data || typeof data.is_official !== 'boolean' || !Array.isArray(data.templates)) {
115
+ throw new Error('A API retornou um contexto oficial inválido');
116
+ }
117
+ const window = asRecord(data.official_window);
118
+ const canSendFreeform = (window === null || window === void 0 ? void 0 : window.can_send_freeform) === true;
119
+ const canSendTemplate = (window === null || window === void 0 ? void 0 : window.can_send_template) === true;
120
+ return {
121
+ isOfficial: data.is_official,
122
+ requiresTemplate: typeof data.requires_template === 'boolean'
123
+ ? data.requires_template
124
+ : data.is_official && !canSendFreeform,
125
+ canSendFreeform,
126
+ canSendTemplate,
127
+ templates: data.templates
128
+ .map(parseTemplate)
129
+ .filter((template) => template !== undefined),
130
+ window,
131
+ };
132
+ }
133
+ async function currentExecutor() {
134
+ const selected = this.getCurrentNodeParameter('executorId', { extractValue: true });
135
+ const id = resourceId(selected);
136
+ if (id)
137
+ return id;
138
+ const credentials = await this.getCredentials('underChatApi');
139
+ return typeof credentials.userId === 'string' ? credentials.userId : '';
140
+ }
141
+ async function findContactId(context, executorId, phoneDdi, phone) {
142
+ try {
143
+ const response = await GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/contacts/by-phone', {}, { phone_ddi: phoneDdi, phone }, executorId);
144
+ return recordId((0, GenericFunctions_1.firstRecord)(response), ['contact_id', 'id']);
145
+ }
146
+ catch (error) {
147
+ if ((0, GenericFunctions_1.isNotFoundError)(error))
148
+ return undefined;
149
+ throw new n8n_workflow_1.NodeApiError(context.getNode(), error);
150
+ }
151
+ }
152
+ function findById(response, id, keys) {
153
+ return (0, GenericFunctions_1.collectionRecords)(response).find((record) => recordId(record, keys) === id);
154
+ }
155
+ async function resolvePrerequisites(context, executorId, workerId, sectorId) {
156
+ const [workersResponse, sectorsResponse] = await Promise.all([
157
+ GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/workers', {}, {}, executorId),
158
+ GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/sectors', {}, {}, executorId),
159
+ ]);
160
+ const worker = findById(workersResponse, workerId, ['worker_id', 'id']);
161
+ if (!worker)
162
+ throw new Error('O canal selecionado não está disponível para o executor');
163
+ const sector = findById(sectorsResponse, sectorId, ['sector_id', 'id']);
164
+ if (!sector)
165
+ throw new Error('O setor selecionado não está disponível para o executor');
166
+ return { worker, sector, isOfficial: worker.is_official === true };
167
+ }
168
+ async function loadOfficialContextFromCurrent(context) {
169
+ const executorId = await currentExecutor.call(context);
170
+ const workerId = resourceId(context.getCurrentNodeParameter('workerId', { extractValue: true }));
171
+ const sectorId = resourceId(context.getCurrentNodeParameter('sectorId', { extractValue: true }));
172
+ const rawPhone = context.getCurrentNodeParameter('phone');
173
+ const rawPhoneDdi = context.getCurrentNodeParameter('phoneDdi');
174
+ if (!executorId || !workerId || !sectorId)
175
+ return undefined;
176
+ const prerequisites = await resolvePrerequisites(context, executorId, workerId, sectorId);
177
+ if (!prerequisites.isOfficial)
178
+ return undefined;
179
+ let contactId;
180
+ if (typeof rawPhone === 'string' &&
181
+ typeof rawPhoneDdi === 'string' &&
182
+ !rawPhone.includes('{{') &&
183
+ !rawPhoneDdi.includes('{{')) {
184
+ const phone = rawPhone.replace(/\D/g, '');
185
+ const phoneDdi = rawPhoneDdi.replace(/\D/g, '');
186
+ if (phone && phoneDdi)
187
+ contactId = await findContactId(context, executorId, phoneDdi, phone);
188
+ }
189
+ if (!contactId) {
190
+ const contactsResponse = await GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/contacts', {}, { current_page: 1, per_page: 1, filter_channel_id: workerId }, executorId);
191
+ contactId = recordId((0, GenericFunctions_1.collectionRecords)(contactsResponse)[0], ['contact_id', 'id']);
192
+ }
193
+ if (!contactId)
194
+ return undefined;
195
+ const response = await GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/official-opening/context', {}, { worker_id: workerId, contact_id: contactId }, executorId);
196
+ return { context: parseOfficialContext(response), contactId };
197
+ }
198
+ function templatePreview(template) {
199
+ var _a;
200
+ const body = optionalString((_a = template.preview) === null || _a === void 0 ? void 0 : _a.body);
201
+ if (!body)
202
+ return undefined;
203
+ return body.length > 70 ? `${body.slice(0, 67)}...` : body;
204
+ }
205
+ async function searchOfficialTemplates(filter) {
206
+ var _a;
207
+ const loaded = await loadOfficialContextFromCurrent(this);
208
+ if (!loaded)
209
+ return { results: [] };
210
+ const normalizedFilter = (_a = filter === null || filter === void 0 ? void 0 : filter.trim().toLocaleLowerCase('pt-BR')) !== null && _a !== void 0 ? _a : '';
211
+ const results = loaded.context.templates
212
+ .filter((template) => {
213
+ var _a;
214
+ const searchable = `${template.name} ${template.language} ${(_a = templatePreview(template)) !== null && _a !== void 0 ? _a : ''}`
215
+ .toLocaleLowerCase('pt-BR');
216
+ return !normalizedFilter || searchable.includes(normalizedFilter);
217
+ })
218
+ .map((template) => ({
219
+ name: `${template.name} · ${template.language} · ${template.variables.length} variável${template.variables.length === 1 ? '' : 'is'}`,
220
+ value: templateSelection(template),
221
+ }));
222
+ return { results };
223
+ }
224
+ async function getOfficialTemplateVariables() {
225
+ const selected = parseTemplateSelection(this.getCurrentNodeParameter('officialTemplate', { extractValue: true }));
226
+ if (!selected) {
227
+ return { fields: [], emptyFieldsNotice: 'Selecione um template oficial para carregar as variáveis.' };
228
+ }
229
+ const loaded = await loadOfficialContextFromCurrent(this);
230
+ if (!loaded) {
231
+ return {
232
+ fields: [],
233
+ emptyFieldsNotice: 'Não há um contato de referência neste canal para carregar as variáveis. Use o modo JSON avançado; a execução validará tudo com o contato real.',
234
+ };
235
+ }
236
+ const template = loaded.context.templates.find((candidate) => candidate.name === selected.name && candidate.language === selected.language);
237
+ if (!template)
238
+ return { fields: [], emptyFieldsNotice: 'O template selecionado não está aprovado para este canal.' };
239
+ return {
240
+ fields: template.variables.map((variable) => ({
241
+ id: variableFieldId(variable),
242
+ displayName: `${variable.componentType} ${variable.key}${variable.sample ? ` — exemplo: ${variable.sample}` : ''}`,
243
+ defaultMatch: false,
244
+ canBeUsedToMatch: false,
245
+ required: true,
246
+ display: true,
247
+ type: 'string',
248
+ })),
249
+ emptyFieldsNotice: 'Este template não possui variáveis.',
250
+ };
251
+ }
252
+ function selectTemplate(context, selectionValue) {
253
+ const selected = parseTemplateSelection(selectionValue);
254
+ if (!selected) {
255
+ const automatic = context.templates.filter((template) => template.variables.length === 0);
256
+ if (context.requiresTemplate && automatic.length === 1)
257
+ return automatic[0];
258
+ return undefined;
259
+ }
260
+ return context.templates.find((template) => template.name === selected.name && template.language === selected.language);
261
+ }
262
+ function variableIdentity(variable) {
263
+ var _a, _b;
264
+ return (0, GenericFunctions_1.withoutEmptyValues)({
265
+ key: variable.key,
266
+ component_type: variable.componentType,
267
+ index: variable.index,
268
+ parameter_name: (_a = variable.parameterName) !== null && _a !== void 0 ? _a : undefined,
269
+ button_index: (_b = variable.buttonIndex) !== null && _b !== void 0 ? _b : undefined,
270
+ });
271
+ }
272
+ function validateManualVariables(template, raw) {
273
+ if (raw.length !== template.variables.length) {
274
+ throw new Error(`O template ${template.name} exige ${template.variables.length} variável(is)`);
275
+ }
276
+ return template.variables.map((variable) => {
277
+ const expected = variableIdentity(variable);
278
+ const match = raw.find((candidate) => Object.entries(expected).every(([key, value]) => candidate[key] === value));
279
+ if (!match || (typeof match.value !== 'string' && typeof match.value !== 'number')) {
280
+ throw new Error(`Preencha a variável ${variable.componentType} ${variable.key}`);
281
+ }
282
+ return { ...expected, value: match.value };
283
+ });
284
+ }
285
+ function mappedVariables(template, raw) {
286
+ const mapper = asRecord(raw);
287
+ const values = asRecord(mapper === null || mapper === void 0 ? void 0 : mapper.value);
288
+ if (!values && template.variables.length > 0)
289
+ throw new Error('Preencha as variáveis do template');
290
+ return template.variables.map((variable) => {
291
+ const value = values === null || values === void 0 ? void 0 : values[variableFieldId(variable)];
292
+ if (typeof value !== 'string' && typeof value !== 'number') {
293
+ throw new Error(`Preencha a variável ${variable.componentType} ${variable.key}`);
294
+ }
295
+ if (typeof value === 'string' && !value.trim()) {
296
+ throw new Error(`Preencha a variável ${variable.componentType} ${variable.key}`);
297
+ }
298
+ return { ...variableIdentity(variable), value };
299
+ });
300
+ }
301
+ function buildOfficialTemplate(template, inputMode, rawMapper, rawJson) {
302
+ const variables = inputMode === 'json'
303
+ ? validateManualVariables(template, (0, GenericFunctions_1.parseJsonArray)(rawJson))
304
+ : mappedVariables(template, rawMapper);
305
+ return { name: template.name, language: template.language, variables };
306
+ }
307
+ async function findActiveChat(context, executorId, contactId, phone, workerId, sectorId) {
308
+ const response = await GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat', {}, {
309
+ status: ACTIVE_CHAT_STATUSES,
310
+ filter_phone: phone,
311
+ filter_worker_id: workerId,
312
+ current_page: 1,
313
+ per_page: 200,
314
+ }, executorId);
315
+ const matches = (0, GenericFunctions_1.collectionRecords)(response).filter((chat) => {
316
+ const contact = asRecord(chat.contact);
317
+ const worker = asRecord(chat.worker);
318
+ return recordId(contact, ['contact_id', 'id']) === contactId && recordId(worker, ['worker_id', 'id']) === workerId;
319
+ });
320
+ if (matches.length > 1)
321
+ throw new Error('Existe mais de um atendimento ativo para este contato e canal');
322
+ const chat = matches[0];
323
+ if (!chat)
324
+ return undefined;
325
+ const chatSectorId = recordId(asRecord(chat.sector), ['sector_id', 'id']);
326
+ if (chatSectorId !== sectorId) {
327
+ throw new Error('O contato já possui um atendimento ativo neste canal, mas em outro setor. Selecione o setor atual ou use a operação de transferência.');
328
+ }
329
+ return chat;
330
+ }
331
+ function templateChoices(context) {
332
+ return context.templates
333
+ .slice(0, 10)
334
+ .map((template) => `${template.name}::${template.language} (${template.variables.length} variável(is))`)
335
+ .join(', ');
336
+ }
337
+ async function executeStartChatByPhone(itemIndex, executorId) {
338
+ var _a, _b, _c, _d, _e;
339
+ try {
340
+ const phoneDdi = digits(this.getNodeParameter('phoneDdi', itemIndex), 'DDI');
341
+ const phone = digits(this.getNodeParameter('phone', itemIndex), 'Telefone');
342
+ const contactName = optionalString(this.getNodeParameter('contactName', itemIndex, ''));
343
+ const workerId = resourceId(this.getNodeParameter('workerId', itemIndex, ''));
344
+ const sectorId = resourceId(this.getNodeParameter('sectorId', itemIndex, ''));
345
+ const createIfMissing = this.getNodeParameter('createIfMissing', itemIndex, true);
346
+ if (!workerId)
347
+ throw new Error('Selecione o canal');
348
+ if (!sectorId)
349
+ throw new Error('Selecione o setor');
350
+ const prerequisites = await resolvePrerequisites(this, executorId, workerId, sectorId);
351
+ let contactId = await findContactId(this, executorId, phoneDdi, phone);
352
+ let contactCreated = false;
353
+ if (!contactId) {
354
+ if (!createIfMissing)
355
+ throw new Error('Contato não encontrado');
356
+ if (!contactName)
357
+ throw new Error('Informe o nome para cadastrar o novo contato');
358
+ const extra = (0, GenericFunctions_1.parseJsonObject)(this.getNodeParameter('additionalFields', itemIndex, '{}'));
359
+ await GenericFunctions_1.underChatApiMultipartRequest.call(this, '/chat/contacts', (0, GenericFunctions_1.withoutEmptyValues)({
360
+ ...extra,
361
+ name: contactName,
362
+ phone_ddi: phoneDdi,
363
+ phone,
364
+ channel_ids: [workerId],
365
+ }), executorId);
366
+ contactId = await findContactId(this, executorId, phoneDdi, phone);
367
+ contactCreated = true;
368
+ }
369
+ if (!contactId)
370
+ throw new Error('A API não retornou o ID do contato após o cadastro');
371
+ const existingChat = await findActiveChat(this, executorId, contactId, phone, workerId, sectorId);
372
+ let officialContext;
373
+ if (prerequisites.isOfficial) {
374
+ const contextResponse = await GenericFunctions_1.underChatApiRequest.call(this, 'GET', existingChat
375
+ ? `/chat/${recordId(existingChat, ['chat_id', 'id'])}/official-conversation/context`
376
+ : '/chat/official-opening/context', {}, existingChat ? {} : { worker_id: workerId, contact_id: contactId }, executorId);
377
+ officialContext = parseOfficialContext(contextResponse);
378
+ }
379
+ const selectionValue = this.getNodeParameter('officialTemplate', itemIndex, '');
380
+ if (!prerequisites.isOfficial && resourceId(selectionValue)) {
381
+ throw new Error('Template oficial não pode ser usado em um canal não oficial');
382
+ }
383
+ const selectedTemplate = officialContext
384
+ ? selectTemplate(officialContext, selectionValue)
385
+ : undefined;
386
+ if (officialContext && parseTemplateSelection(selectionValue) && !selectedTemplate) {
387
+ throw new Error('O template selecionado não está aprovado para este canal');
388
+ }
389
+ if ((officialContext === null || officialContext === void 0 ? void 0 : officialContext.requiresTemplate) && !selectedTemplate) {
390
+ throw new Error(`Este canal exige um template oficial. Selecione uma opção aprovada: ${templateChoices(officialContext) || 'nenhum template disponível'}`);
391
+ }
392
+ if (selectedTemplate && (officialContext === null || officialContext === void 0 ? void 0 : officialContext.canSendTemplate) !== true) {
393
+ throw new Error('A janela oficial não permite enviar template neste momento');
394
+ }
395
+ const inputMode = this.getNodeParameter('templateVariableInputMode', itemIndex, 'fields');
396
+ const officialTemplate = selectedTemplate
397
+ ? buildOfficialTemplate(selectedTemplate, inputMode, this.getNodeParameter('officialTemplateVariables', itemIndex, {}), this.getNodeParameter('officialTemplateVariablesJson', itemIndex, '[]'))
398
+ : undefined;
399
+ let chat;
400
+ let chatCreated = false;
401
+ let templateSent = false;
402
+ if (existingChat) {
403
+ chat = existingChat;
404
+ const chatId = requiredString(recordId(chat, ['chat_id', 'id']), 'Chat ID');
405
+ if (officialTemplate) {
406
+ const response = await GenericFunctions_1.underChatApiRequest.call(this, 'POST', `/chat/${chatId}/official-template`, officialTemplate, {}, executorId);
407
+ chat = (_a = (0, GenericFunctions_1.firstRecord)(response)) !== null && _a !== void 0 ? _a : chat;
408
+ templateSent = true;
409
+ }
410
+ }
411
+ else {
412
+ const response = await GenericFunctions_1.underChatApiRequest.call(this, 'POST', '/chat/start-with-contact', {
413
+ contact_id: contactId,
414
+ worker_id: workerId,
415
+ sector_id: sectorId,
416
+ ...(officialTemplate ? { official_template: officialTemplate } : {}),
417
+ }, {}, executorId);
418
+ chat = (_b = (0, GenericFunctions_1.firstRecord)(response)) !== null && _b !== void 0 ? _b : {};
419
+ chatCreated = true;
420
+ templateSent = Boolean(officialTemplate);
421
+ }
422
+ const chatId = recordId(chat, ['chat_id', 'id']);
423
+ if (!chatId)
424
+ throw new Error('A API não retornou o ID do atendimento');
425
+ return {
426
+ contact_id: contactId,
427
+ contact_created: contactCreated,
428
+ chat_id: chatId,
429
+ chat_created: chatCreated,
430
+ chat_reused: !chatCreated,
431
+ worker: (_c = asRecord(chat.worker)) !== null && _c !== void 0 ? _c : prerequisites.worker,
432
+ sector: (_d = asRecord(chat.sector)) !== null && _d !== void 0 ? _d : prerequisites.sector,
433
+ official: prerequisites.isOfficial,
434
+ official_window: (_e = officialContext === null || officialContext === void 0 ? void 0 : officialContext.window) !== null && _e !== void 0 ? _e : null,
435
+ template: selectedTemplate
436
+ ? { name: selectedTemplate.name, language: selectedTemplate.language, sent: templateSent }
437
+ : null,
438
+ chat,
439
+ };
440
+ }
441
+ catch (error) {
442
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex });
443
+ }
444
+ }
445
+ //# sourceMappingURL=StartChatByPhone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartChatByPhone.js","sourceRoot":"","sources":["../../../nodes/UnderChat/StartChatByPhone.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodeListSearchResult, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ import { getOfficialTemplateVariables, searchOfficialTemplates } from './StartChatByPhone';
2
3
  declare function searchExecutors(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
3
4
  declare function searchWorkers(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
4
5
  declare function searchSectors(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
@@ -8,10 +9,14 @@ export declare class UnderChat implements INodeType {
8
9
  methods: {
9
10
  listSearch: {
10
11
  searchExecutors: typeof searchExecutors;
12
+ searchOfficialTemplates: typeof searchOfficialTemplates;
11
13
  searchSectors: typeof searchSectors;
12
14
  searchUsers: typeof searchUsers;
13
15
  searchWorkers: typeof searchWorkers;
14
16
  };
17
+ resourceMapping: {
18
+ getOfficialTemplateVariables: typeof getOfficialTemplateVariables;
19
+ };
15
20
  };
16
21
  execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
17
22
  }