fix: agregar isReactionMeta y usarla en response-queue

Co-authored-by: aider (openrouter/openai/gpt-5) <aider@aider.chat>
main
brobert 1 month ago
parent 1b7420e123
commit 2032712d2b

@ -44,3 +44,12 @@ export function parseQueueMetadata(raw: string | null | undefined): QueueMetadat
return null; return null;
} }
} }
export function isReactionMeta(m: QueueMetadata | null | undefined): m is ReactionMeta {
if (!m || typeof m !== 'object') return false;
const any = m as any;
return any.kind === 'reaction'
&& typeof any.chatId === 'string'
&& typeof any.messageId === 'string'
&& typeof any.emoji === 'string';
}

@ -6,7 +6,7 @@ import { Metrics } from './metrics';
import { toIsoSqlUTC } from '../utils/datetime'; import { toIsoSqlUTC } from '../utils/datetime';
import * as EvolutionClient from '../clients/evolution'; import * as EvolutionClient from '../clients/evolution';
import { runCleanupOnce as cleanupRunOnce } from './queue/cleanup'; import { runCleanupOnce as cleanupRunOnce } from './queue/cleanup';
import { parseQueueMetadata } from './queue/metadata'; import { parseQueueMetadata, isReactionMeta } from './queue/metadata';
const MAX_FALLBACK_DIGITS = (() => { const MAX_FALLBACK_DIGITS = (() => {
const raw = (process.env.ONBOARDING_FALLBACK_MAX_DIGITS || '').trim(); const raw = (process.env.ONBOARDING_FALLBACK_MAX_DIGITS || '').trim();
@ -264,7 +264,7 @@ export const ResponseQueue = {
// Detectar jobs de reacción // Detectar jobs de reacción
const meta = parseQueueMetadata(item.metadata); const meta = parseQueueMetadata(item.metadata);
if (meta && meta.kind === 'reaction') { if (isReactionMeta(meta)) {
const chatId = String(meta.chatId || ''); const chatId = String(meta.chatId || '');
const messageId = String(meta.messageId || ''); const messageId = String(meta.messageId || '');
const emoji = String(meta.emoji || ''); const emoji = String(meta.emoji || '');
@ -283,11 +283,15 @@ export const ResponseQueue = {
const errTxt = result.error || (typeof result.status === 'number' ? `HTTP ${result.status}` : 'unknown_error'); const errTxt = result.error || (typeof result.status === 'number' ? `HTTP ${result.status}` : 'unknown_error');
console.warn('Send reaction failed:', { status: result.status, body: errTxt }); console.warn('Send reaction failed:', { status: result.status, body: errTxt });
try { Metrics.inc('reactions_failed_total', 1, { emoji: emojiLabel }); } catch {} try { Metrics.inc('reactions_failed_total', 1, { emoji: emojiLabel }); } catch {}
return { ok: false, status: result.status, error: errTxt }; const out: { ok: false; error: string } & { status?: number } = { ok: false, error: errTxt };
if (typeof result.status === 'number') out.status = result.status;
return out;
} }
console.log(`✅ Sent reaction with payload: ${JSON.stringify(payload)}`); console.log(`✅ Sent reaction with payload: ${JSON.stringify(payload)}`);
try { Metrics.inc('reactions_sent_total', 1, { emoji: emojiLabel }); } catch {} try { Metrics.inc('reactions_sent_total', 1, { emoji: emojiLabel }); } catch {}
return { ok: true, status: result.status }; const okOut: { ok: true } & { status?: number } = { ok: true };
if (typeof result.status === 'number') okOut.status = result.status;
return okOut;
} }
// Endpoint típico de Evolution API para texto simple // Endpoint típico de Evolution API para texto simple
@ -363,10 +367,14 @@ export const ResponseQueue = {
if (!result.ok) { if (!result.ok) {
const errTxt = result.error || (typeof result.status === 'number' ? `HTTP ${result.status}` : 'unknown_error'); const errTxt = result.error || (typeof result.status === 'number' ? `HTTP ${result.status}` : 'unknown_error');
console.warn('Send failed:', { status: result.status, body: errTxt }); console.warn('Send failed:', { status: result.status, body: errTxt });
return { ok: false, status: result.status, error: errTxt }; const out: { ok: false; error: string } & { status?: number } = { ok: false, error: errTxt };
if (typeof result.status === 'number') out.status = result.status;
return out;
} }
console.log(`✅ Sent message with payload: ${JSON.stringify(payload)}`); console.log(`✅ Sent message with payload: ${JSON.stringify(payload)}`);
return { ok: true, status: result.status }; const okOut: { ok: true } & { status?: number } = { ok: true };
if (typeof result.status === 'number') okOut.status = result.status;
return okOut;
} }
} catch (err) { } catch (err) {
const errMsg = (err instanceof Error ? err.message : String(err)); const errMsg = (err instanceof Error ? err.message : String(err));

Loading…
Cancel
Save