import axios from 'axios'; import { generateSalesCopy } from './pricing-engine'; export interface PublishToFacebookParams { productName: string; brand: string; retailPrice: number; sizes: string[]; images: string[]; cityName?: string; whatsappNumber?: string; pageId?: string; accessToken?: string; } export interface PublishResult { success: boolean; postId?: string; postUrl?: string; generatedCopy: string; error?: string; } /** * Publicador automático en Páginas de Facebook mediante Meta Graph API */ export async function publishToFacebookPage(params: PublishToFacebookParams): Promise { const { productName, brand, retailPrice, sizes, images, cityName = 'Cali', whatsappNumber = process.env.NEXT_PUBLIC_WHATSAPP_PHONE || '573134848203', pageId = process.env.FACEBOOK_PAGE_ID, accessToken = process.env.FACEBOOK_ACCESS_TOKEN, } = params; const copy = generateSalesCopy({ productName, brand, retailPrice, sizes, cityName, whatsappNumber, }); // Si no hay token de Facebook configurado, simular publicación exitosa para pruebas if (!pageId || !accessToken) { const mockPostId = `fb_${Date.now()}_${Math.floor(Math.random() * 10000)}`; return { success: true, postId: mockPostId, postUrl: `https://facebook.com/${mockPostId}`, generatedCopy: copy, }; } try { // Si tiene una imagen principal, publicamos como photo post con caption const primaryImage = images[0]; const fbEndpoint = `https://graph.facebook.com/v19.0/${pageId}/photos`; const response = await axios.post(fbEndpoint, { url: primaryImage, caption: copy, access_token: accessToken, }); return { success: true, postId: response.data.id || response.data.post_id, postUrl: `https://facebook.com/${response.data.id}`, generatedCopy: copy, }; } catch (error: any) { console.error('Error publicando en Facebook Graph API:', error?.response?.data || error?.message); return { success: false, error: error?.response?.data?.error?.message || error.message, generatedCopy: copy, }; } }