'use client'; import { useEffect } from 'react'; // Провайдер и адреса задаются на этапе сборки через переменные NEXT_PUBLIC_* // (см. корневой .env и docker-compose.yml -> nextjs -> build.args). Смена // провайдера требует пересборки: docker compose up -d --build nextjs. const PROVIDER = process.env.NEXT_PUBLIC_CHAT_PROVIDER || 'none'; function loadTopTicket() { // TopTicket - собственная разработка компании. Embed-сниппет вида: // const widgetUrl = process.env.NEXT_PUBLIC_TOPTICKET_WIDGET_URL; const widgetKey = process.env.NEXT_PUBLIC_TOPTICKET_WIDGET_KEY; if (!widgetUrl || !widgetKey) return undefined; const script = document.createElement('script'); script.src = widgetUrl; script.setAttribute('data-key', widgetKey); script.async = true; document.body.appendChild(script); return () => script.remove(); } function loadChatwoot() { const baseUrl = process.env.NEXT_PUBLIC_CHATWOOT_BASE_URL; const token = process.env.NEXT_PUBLIC_CHATWOOT_WEBSITE_TOKEN; if (!baseUrl || !token) return undefined; const script = document.createElement('script'); script.src = `${baseUrl.replace(/\/$/, '')}/packs/js/sdk.js`; script.defer = true; script.async = true; script.onload = () => { if (window.chatwootSDK) { window.chatwootSDK.run({ websiteToken: token, baseUrl }); } }; document.body.appendChild(script); return () => script.remove(); } export default function SupportChat() { useEffect(() => { if (PROVIDER === 'topticket') return loadTopTicket(); if (PROVIDER === 'chatwoot') return loadChatwoot(); return undefined; }, []); return null; }