From 87fdacfb3dd466292c1113564bd83552ca0e4989 Mon Sep 17 00:00:00 2001 From: Marcio Bevervanso Date: Tue, 16 Jun 2026 12:19:27 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20fallback=20p/=20Facebook=20quando=20inst?= =?UTF-8?q?agram=5Factor=5Fid=20=C3=A9=20inv=C3=A1lido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O fallback que refaz o criativo só com Facebook só pegava o erro de permissão (1815199). Agora também cobre "instagram_actor_id must be a valid Instagram account id", evitando que um IG incompatível (ex: conta do fluxo de login do Instagram) bloqueie a publicação inteira. Co-Authored-By: Claude Opus 4.8 --- src/lib/mcp/tools.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/lib/mcp/tools.ts b/src/lib/mcp/tools.ts index c7b0c03..e0c6bf4 100644 --- a/src/lib/mcp/tools.ts +++ b/src/lib/mcp/tools.ts @@ -668,16 +668,24 @@ export async function addAdToAdSet(client: Client, params: AddAdToAdSetParams) { }); }; - // 1815199: "A conta de anúncios não tem acesso a esta conta do Instagram". - const isInstagramPermissionError = (err: unknown) => - err instanceof Error && /1815199/.test(err.message); + // Erros ligados ao Instagram em que vale refazer o criativo só com o Facebook + // (o anúncio ainda roda no IG pela identidade da página): + // - 1815199: a conta de anúncios não tem acesso a esta conta do Instagram. + // - "instagram_actor_id must be a valid Instagram account id": o ID vinculado + // à página não é um ator de Instagram válido para Ads (ex: conta conectada + // pelo fluxo de "login do Instagram" em vez do Business/Página). + const isInstagramError = (err: unknown) => + err instanceof Error && + (/1815199/.test(err.message) || + /instagram_actor_id/i.test(err.message) || + /valid instagram account/i.test(err.message)); let creative; let instagramDropped = false; try { creative = await buildCreative(params.instagram_actor_id); } catch (err) { - if (params.instagram_actor_id && isInstagramPermissionError(err)) { + if (params.instagram_actor_id && isInstagramError(err)) { creative = await buildCreative(undefined); instagramDropped = true; } else {